Oracle 12c新建用戶登錄問題分析
1 用sys用戶新建用戶,提示公用用戶名或角色名無效。
原因:Oracle 12c中,在容器中建用戶(或者應該稱為使用者),須在用戶名前加c##。默認登錄連接的就是CDB。
查看當前是否處於容器CDB的方法:通過命令 show con_name; 如果結果為CDB&ROOT,則為容器狀態。
想直接新建不帶“c##”開頭的用戶的解決方法:切換pdb
具體先通過命令show pdbs;查看容器中數據庫名稱,選擇需要連接的數據庫(pdb),通過命令alter session set container=ORCLPDB(這個pdb名字根據自己實際情況而定);切換到需要連接的pdb。此時,新建用戶即可成功,且用戶名不需要以c##開頭。
2 用sys登錄SQLplus新建用戶后,用新建的用戶登錄plsql程序,提示“ora-01017:用戶名/口令無效;登錄被拒絕。”
原因:數據庫鏈接符不對
解決方法:在tnsnames.ora文件中新加一個連接符
原來的為
orcl=
(
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=WIN-KD3MFTQMKPV)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=ORCL))
)
在下面添加如下內容
orcl2=
(
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=WIN-KD3MFTQMKPV)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=ORCLPDB))
)
)
其中,HOST=WIN-KD3MFTQMKPV根據自己實際主機情況填寫。
分析原因:因為12c是容器數據庫結構,原來的ORCL服務連接符是針對CDB來的,切換到具體pdb之后,就需要新建一個服務連接符來對接。
驗證;再次用新建的有權限的用戶登錄plsql程序,數據庫選擇orcl2,登錄成功。