问题说明
Oracle12c 以上多了一个cdb的概念具体是什么可插拔数据库详细的我没看,想创建用户必须加C##
开头否则就报ORA-65096: invalid common user or role name
错误,CDB是无法删除的,PDB可以有很多
在 Oracle 数据库中,如果在一个 PDB(Pluggable Database)中创建了用户,那么该用户只能在连接到该 PDB 时可见。如果连接到 CDB(Container Database)或其他 PDB,是无法看到这个用户的。这是因为用户是 PDB 级别的,而不是 CDB 级别的。
使用服务名称、SID连接的就是CDB,使用PDB连接的是PDB,查询当前是CDB还是PDB
select sys_context ('USERENV', 'CON_NAME') from dual;
查询可切换的PDB,选择READ WRITE的
select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
解决方案
连接到 CDB 的根容器,使用system账号
sqlplus / as sysdba
检查当前容器,应输出 CDB$ROOT
SHOW CON_NAME;
更改 COMMON_USER_PREFIX 参数
ALTER SYSTEM SET COMMON_USER_PREFIX='' SCOPE=SPFILE;
重启数据库