Oracle PDB下本地用戶無法使用本地連接的問題
創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設、網(wǎng)絡營銷策劃、微信小程序定制開發(fā)、電子商務建設、網(wǎng)絡推廣、移動互聯(lián)開發(fā)、研究、服務為一體的技術型公司。公司成立十余年以來,已經(jīng)為千余家成都人造霧各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務?,F(xiàn)在,服務的千余家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。
模擬:
1.本地用戶本地連接:
SQL> show con_name;
CON_NAME
CDB$ROOT
SQL> alter session set container=pdb1;
Session altered.
SQL> create user test identified by test;
User created.
SQL> grant connect,resource to test;
Grant succeeded.
使用test用戶連接:
SQL> conn test/test
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
解決辦法:
給該PDB配置tnsname:
查出該PDB的service_name
select name,network_name,pdb from v$services where pdb=’PDB1’;
NAME NETWORK_NAME PDB
pdb1 pdb1 PDB1
tnsname.ora:
pdb1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.238.14)(PORT = 1529))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb1)
)
)
嘗試連接:
SQL> alter session set container=pdb1;
SQL> conn test/test
@pdb1;
Connected.
問題解決。
2.公有用戶本地連接:
SQL> show con_name
CON_NAME
CDB$ROOT
SQL> create user c##abc identified by c##abc;
SQL> grant connect,resource to c##abc;
進入PDB進行查看該公有用戶:
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
2 PDB$SEED READ ONLY NO
3 ABC READ WRITE NO
5 SALESPDB MOUNTED
SQL> alter session set container=abc;
Session altered.
SQL> select username from dba_users where username=’C##ABC’;
USERNAME
C##ABC
SQL> conn c##abc/c##abc
Connected.
可以連接~
結(jié)論:
在PDB中創(chuàng)建的本地用戶,無法使用本地連接該用戶conn name/password
需要使用網(wǎng)絡連接該用戶conn name/password@tnsname
在CDB中創(chuàng)建的公有用戶,會在PDB下自動創(chuàng)建,在PDB中可以使用本地連接該公有用戶。