oracle创建用户时报公用用户名或角色名无效

报错: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;

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值