报错:ORA-65096: invalid common user or role name(公用用户名或角色名无效)。
原因:可能是创建角色的容器为cdb导致,当然如果你想继续执行,可以在角色名前加C##或者c##,但是这样会导致用户名多了c##,有时候我们不希望用这种格式创建命名。
解决一:把容器改成pdb。
注:这种方式不能正常导入数据库文件。
1、用sysdba 登录,否则权限不够
sqlplus / as sysdba
2、查询容器是否CDB
select name,cdb,open_mode,con_id from v$database;
3、查看当前容器
show con_name;
4、查看已经创建的pdb容器
show pdbs;
这个是创建数据库时创建的可插入数据库名
5、打开上述相应的容器
alter pluggable database orcl_in open;
6、 将当前容器切换到指定的PDB容器中,可插拔数据库(PDB)
alter session set container = ORCL_IN;
7、之后就可以正常创建用户了,不过该用户不在cdb容器,而是在pdb
注意:重新登录超级管理员 sysdba 之后,当前容器会变回默认的pdb。
8、在cmd登录新创建的用户
sqlplus 用户名/密码@数据库 as sysdba =========> eg: sqlplus cwcs/ntidba@orcl as sysdba
或者
1、sqlplus 2、用户名 as sysdba 3、最后输入密码 如下图所示
**注:**以普通用户登录不了,也有可能是我的原因。
9、在pl/sql工具登录
解决二:这种可以正常导入数据库文件到指定的用户数据库
oracle 创建用户如何不用加C##
alter session set "_ORACLE_SCRIPT"=true;
附加内容:
1、创建表空间
CREATE TABLESPACE WCS_DATA LOGGING DATAFILE ‘D:\app\hp\oradata\ORCL\WCS_DATA.DBF' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 20480M EXTENT MANAGEMENT LOCAL;
2、创建用户并绑定表空间
CREATE USER jbfl IDENTIFIED BY VALUES ‘ntidba' DEFAULT TABLESPACE WCS_DATA PROFILE DEFAULT ACCOUNT UNLOCK;
3、授权
grant create session to jbfl;----授权 GRANT DBA TO jbfl;----授权 GRANT CONNECT TO jbfl; GRANT RESOURCE TO jbfl; GRANT DBA TO jbfl;