Oracle 18c 数据库,在tnsnames.ora 中添加PDB的信息后,连接报错:
[dave@www.cndba.cnadmin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/18.3.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
dave =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.168)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dave)
)
)
[dave@www.cndba.cntrace]$ sqlplus zhixin/zhixin@dave
SQL*Plus: Release 18.0.0.0.0 - Production on Mon Aug 27 18:37:22 2018
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Enter user-name: ^C
SQL> select name,pdb from v$services order by 1;
NAME PDB
--------------- --------------------
SYS$BACKGROUND CDB$ROOT
SYS$USERS CDB$ROOT
cndba CDB$ROOT
cndbaXDB CDB$ROOT
cndba_p CDB$ROOT
dave DAVE
CDB$ROOT
7 rows selected.
解决方法就是修改监听的配置文件,添加PDB的静态注册,注意里面的参数配置:
[dave@www.cndba.cnadmin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/18.3.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = cndba)
(ORACLE_HOME = /u01/app/oracle/product/18.3.0/db_1)
(SID_NAME = cndba)
)
(SID_DESC =
(GLOBAL_DBNAME = dave) #PDB名称
(ORACLE_HOME = /u01/app/oracle/product/18.3.0/db_1)
(SID_NAME = cndba) #CDB名称
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 18cDG1)(PORT = 1522))
)
)
[dave@www.cndba.cnadmin]$ lsnrctl reload
LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 27-AUG-2018 19:33:48
Copyright (c) 1991, 2018, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=18cDG1)(PORT=1522)))
The command completed successfully
[dave@www.cndba.cnadmin]$ lsnrctl status
LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 27-AUG-2018 19:33:50
Copyright (c) 1991, 2018, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=18cDG1)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 18.0.0.0.0 - Production
Start Date 27-AUG-2018 18:19:21
Uptime 0 days 1 hr. 14 min. 29 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/18.3.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/18cDG1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=18cDG1)(PORT=1522)))
Services Summary...
Service "cndba" has 1 instance(s).
Instance "cndba", status UNKNOWN, has 1 handler(s) for this service...
Service "dave" has 1 instance(s).
Instance "cndba", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[dave@www.cndba.cnadmin]$
再测试,顺利连接:
[dave@www.cndba.cntrace]$ sqlplus zhixin/zhixin@dave
SQL*Plus: Release 18.0.0.0.0 - Production on Mon Aug 27 18:42:54 2018
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
SQL>
版权声明:本文为博主原创文章,未经博主允许不得转载。



