2016-04-15 95 views
1

我正在Solaris 10上运行Oracle 12c的全新安装,并且我可以使用蟾蜍连接到CDB,请告诉我如何连接到名为PDBORCL的PDB数据库作为指南中提到:https://oracle-base.com/articles/12c/multitenant-connecting-to-cdb-and-pdb-12cr1如何在Oracle 12c中连接到PDB

以下是我tnsnames.ora文件的内容:

# tnsnames.ora Network Configuration File: /bkofa/oracle/app/oracle 

/product/12.1.0/dbhome_1/network/admin/tnsnames.ora 
# Generated by Oracle configuration tools. 

ORCL12 = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = afxortsts)(PORT = 1523)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = orcl12) 
    ) 
) 
pdbORCL = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = afxortsts)(PORT = 1523)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = pdborcl) 
    ) 
) 

这里有我的listener.ora文件的内容:

# listener.ora Network Configuration File: /bkofa/oracle/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora 
# Generated by Oracle configuration tools. 

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = TCP)(HOST = afxortsts)(PORT = 1523)) 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
    ) 
) 

SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
     (GLOBAL_DBNAME = orcl12) 
     (SID_NAME = orcl12) 
    ) 
    (SID_DESC = 
     (GLOBAL_DBNAME = pdborcl)  
     (SID_NAME = pdborcl) 
    ) 
) 

这是顺便把容器:

SELECT name, pdb  
FROM v$services  
ORDER BY name;  

NAME    PDB  

SYS$BACKGROUND CDB$ROOT  
SYS$USERS   CDB$ROOT  
orcl12   CDB$ROOT  
orcl12XDB   CDB$ROOT  
pdborcl   PDBORCL  

不过,当我尝试使用命令的任意组合连接到PDB,这是我得到什么:

bash-3.2$ lsnrctl status 

LSNRCTL for Solaris: Version 12.1.0.2.0 - Production on 13-APR-2016 15:42:28 

Copyright (c) 1991, 2014, Oracle. All rights reserved. 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=afxortsts)(PORT=1523))) 
STATUS of the LISTENER 
------------------------ 
Alias      LISTENER 
Version     TNSLSNR for Solaris: Version 12.1.0.2.0 - Production 
Start Date    12-APR-2016 13:56:56 
Uptime     1 days 1 hr. 45 min. 36 sec 
Trace Level    off 
Security     ON: Local OS Authentication 
SNMP      OFF 
Listener Parameter File /bkofa/oracle/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora 
Listener Log File   /bkofa/oracle/app/oracle/diag/tnslsnr/afxortsts/listener/alert/log.xml 
Listening Endpoints Summary... 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=afxortsts)(PORT=1523))) 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) 
Services Summary... 
Service "orcl12" has 1 instance(s). 
    Instance "orcl12", status UNKNOWN, has 1 handler(s) for this service... 
Service "pdborcl" has 1 instance(s). 
    Instance "pdborcl", status UNKNOWN, has 1 handler(s) for this service... 
The command completed successfully 
bash-3.2$ sqlplus '/ as sysdba' 

SQL*Plus: Release 12.1.0.2.0 Production on Wed Apr 13 15:42:44 2016 

Copyright (c) 1982, 2014, Oracle. All rights reserved. 


Connected to: 
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options 

SQL> connect sys/[email protected]:1523/pdborcl as sysdba 
ERROR: 
ORA-01017: invalid username/password; logon denied 


Warning: You are no longer connected to ORACLE. 
SQL> connect [email protected] 
Enter password: 
ERROR: 
ORA-01034: ORACLE not available 
ORA-27101: shared memory realm does not exist 
SVR4 Error: 2: No such file or directory 
Additional information: 2581 
Additional information: -2057892281 
Process ID: 0 
Session ID: 0 Serial number: 0 


SQL> connect [email protected]:1523/pdborcl as sysdba 
ERROR: 
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA 


SQL> 

哦,我会更清楚一些,我因为在使用此端口的系统上已经运行了较早的Oracle 10g的另一个实例,所以我想避免与此冲突。

+0

我有同样的问题,你解决了吗? –

回答

0

下面我的配置,其工作原理:

的listener.ora:

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST =主机名)(PORT = 1525)) (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1525)) ) )

的tnsnames.ora:

LISTENER_CATCDB = (ADDRESS =(PROTOCOL = TCP)(HOST =主机名)(PORT = 1526))

#CDB

CATCDB = (DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST =主机名)(PORT = 1526)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = catcdb) ) )

#PDB

CATDB = (DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST =主机名)(PORT = 1526)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = catdb) ) )

+0

不适合我。相信你已经动态地将SID添加到侦听器。 –

+0

是的。我的oracle参数local_listener = LISTENER_CATCDB – Vince

0

您不应该在SID_LIST_LISTENER中声明服务。尤其是在实例中不是实例而是服务的pdborcl。所以删除这部分:

(SID_DESC = 
    (GLOBAL_DBNAME = pdborcl)  
    (SID_NAME = pdborcl) 
) 

该实例应注册自己的侦听器。如果不这样做,你应该在连接到CDB时:

alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=afxortsts)(PORT=1523))) '; 
alter system register;