sqlplus rick/ @rac1:1521/pdb1
sqlplus rick/ @rac2:1521/pdb1
[c:\~]$ sqlplus system/[email protected]:1521/cdb
SQL> exit
[c:\~]$ sqlplus system/[email protected]:1521/cdb1 只能用服务名 sid不行
请输入用户名:
ERROR:
ORA-12560: TNS: 协议适配器错误
[c:\~]$ sqlplus system/[email protected]:1521/pdb1
SQL>
[oracle@rac1 ~]$ export ORACLE_PDB_SID=pdb1
看起来还是用CDB进去做了个切换,所以PDB的用户登录不了
[oracle@rac1 ~]$ sqlplus system/oracle
SQL> select *from rick.pdb1tab;
no rows selected
SQL> show pdbs;
SP2-0382: The SHOW PDBS command is not available
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.16.0.0.0
[oracle@rac1 ~]$ sqlplus rick/ 所以PDB中的用户登录不了
ORA-01017: invalid username/password; logon denied
CDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.88)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cdb)
)
)
CDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cdb)
)
)
CDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cdb)
)
CDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = cdb1)
)
)
CDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = cdb2)
)
)
PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.88)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1)
)
)
PDB11 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1)
)
)
------SID pdb11不行,不存在
PDB12 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1)
)
)
1. 通过alter session set container切换到PDB
登录到CDB,通过alter session set container切换当前的容器为PDB,
2. 通过ORACLE_PDB_SID
如果是18c、19c以上,可以设置ORACLE_PDB_SID环境变量的值,然后再登录,就是这个PDB,
3. 通过设置tnsnames.ora
配置一下tnsnames.ora,其中的service_name设置成PDB的名称,
再通过tns,登录到数据库,就是当前PDB的环境中,
4. 通过EASY CONNECT
通过EASY CONNECT,指定"/"跟着PDB名称,就可登录PDB,
如果是PLSQL Developer,Database中输入EASY CONNECT的"@"跟着的字符串,就可以登陆了,
如果是SQL Developer,“服务名”填写PDB名称,就可以登陆了,
5. 通过JDBC程序的连接
如果是连接PDB,用"/"跟着PDB名称,
jdbc:oracle:thin:@ip:port/pdb_name
如果连接CDB、12c以下的,不用"/",用":",
jdbc:oracle:thin:@ip:port:SID(/SERVICE_NAME)