一、创建用户时出现ora-65096
(一)使用cmd命令提示符窗口,输入:sqlplus / as sysdba,进入到sys用户下
(二)创建用户:create user username identified by password;
这时提示:ORA-65096:公用用户名或角色无效。
这是因为当前是在数据库容器CDB下建,而正常创建用户是在PDB下创建。
当然,也可以在CDB下创建,在名称前面加上 C## 就可以了,即:create user C##username identified by password;但是这样创建的用户名称就是‘C##username’,不方便使用。
因此需要切换到PDB下创建用户:
①查看当前环境:select sys_context(‘USERENV’,‘CON_NAME’) from dual(或者:show con_name);
②查看所以容器:select con_id,dbid,name,open_mode from v$pdbs;
③切换容器:alter pluggable database PDBORCL open;
④修改当前会话的容器:alter session set container=PDBORCL;
⑤再次查看当前容器:
⑥创建用户:create user username identified by password;就可以了。
⑦赋予权限:grant connect,resource to username;(这个视情况赋予)
二、刚刚创建的用户在使用命令提示窗口和PLSQL软件登录的时候都报了ora-01017错误。
(一)命令提示窗口:在使用普通用户登录时在后尾加上as sysdba,即 sqlplus username/password as sysdba;
(二)使用plsql软件登录:分别使用normal和sysdba尝试登录是否成功。
如果sysdba可以登录,但是normal报ora-01017错,则可能是以下原因:
①用户名/口令无效从而登录被拒绝,这时需要修改密码:alter user username identified by password;
②用户被锁,解锁:alter user username account unlock;
③以上操作都进行后,还是无法使用plsql登录的话,那么就需要检查tnsnames.ora中的SERVICE_NAME是不是自己当前的会话容器。
将这里修改成自己容器的名字,再次登录就可以了。
最后:关于ora-01017还有一些疑问,就是普通用户在命令提示窗口的时候不加上as sysdba为什么无法登录,但是使用plsql却是可以登录的?
关于plsql使用sysdba可以登录,使用normal不能登录的一些检查方法:就是普通用户使用sysdba登录之后,使用sql语句查看用户的数量(select username from dba_user;),之后使用sys用户登录也查看用户数量,这时可以看出两边数量对不上,也就是两边使用的容器不一样,因此就需要去排查配置了。