问题描述
oracle 12C 创建数据库时报错:
ORA-65096: invalid common user or role name
例如:
SQL> create user rui identified by oracle;create user rui identified by oracle*
ERROR at line 1:
ORA-65096: invalid common user or role name
原因
想在PDBORCL中创建新用户,但没有设置会话container到PDB。
解决方法
创建用户的时候用户名以c##或者C##开头。
如下:
SQL> create user c##rui identified by oracle;User created.
相应的,对用户名进行其它操作,也需要在用户名前加c##或者C##
例如:
SQL> grant dba to c##rui;Grant succeeded.
拓展知识
CDB环境中的用户
CDB环境中包含两类用户,公用用户和本地用户。
-
公用用户
?公用用户是在 root 数据库中和所有的 PDB 数据库中都存在的用户,公用用户必须在根容器中创建,然后此用户会在所有的现存 PDB 中自动创建,公用用户标识必须以 c## 或者 C## 开头,sys 和 system 用户是 Oracle 在 CDB 环境中自动创建的公用用户。
?创建完成公用用户,需要为公用用户赋予所有可插拔数据库的权限,公用用户才可以访问其他PDB,如果在连接根容器时仅仅为公用用户赋予了相关权限,那么该权限不会被传递到所有的可插拔数据库中,必须为公用用户赋予能够传递到PDB中的权限,可以创建公用角色然后赋予公用用户,或者在为公共用户付权时指定子句 container=ALL; -
本地用户
?本地用户指的是在 PDB 中创建的普通用户,只有在创建它的 PDB 中才会存在该用户,并且 PDB 中只能创建本地用户。