今天新安装了一个Oracle12版本的数据库,创建新用户时报错:公共用户名或角色无效。
查了一些资料发现Oracle12版本创建用户时需要以c##开头,例如创建用户应该是这样写的:
create user c##demo identified by “demo”
Default tablespace demo
Temporary tablespace temp;
为什么会发生这种原因呢,是因为Oracle12c引入了一种CDB和PDB的新特性,在Oracle12c中引入了多租户的环境,允许一个数据库容器(CDB)承载多个可插拔的数据库(PDB)。
在Oracle12c以前,实例与数据库是一对一或多对一的关系。而进入Oracle12c后实例与数据库可以是一对多关系。
如何查看数据库是否为CDB?
Select CDB from v$database;
如果结果是YES即为CDB数据库,否则不是。
如何查看当前容器?
Show con_name;
如何查看CDB中的PDB信息?
select con_id, dbid, guid, name , open_mode from v$pdbs;
启动PDB数据库的方式
alter pluggable database PDBORCL open;
关闭PDB数据库的方式
alter pluggable database PDBORCL close;
容器间切换
alter session set container=PDBORCL;alter session set container=CDB$ROOT;
以上就是新安装Oracle12c创建新用户报错解决方案。