Oracle 12c中新建pdb用户登录问题分析

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,登录成功。