ORA-65096: 公用用户名或角色名无效

报错:【ORA-65096: 公用用户名或角色名无效】

查询数据库版本

SELECT * FROM v$version ;
BANNER	CON_ID
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production	0
PL/SQL Release 12.2.0.1.0 - Production	0
CORE	12.2.0.1.0	Production	0
TNS for 64-bit Windows: Version 12.2.0.1.0 - Production	0
NLSRTL Version 12.2.0.1.0 - Production	0

创建用户失败

create user lingd identified by 123456;  // ORA-65096: 公用用户名或角色名无效

查询官方文档得知,这是oracle_12版本的特性,有兴趣的朋友可以查阅下 官方文档

在CDB容器中用户名必须加c##前缀才能创建成功:

create user c##lingd identifed by 123456;
grant connect, resource to c##lingd; // 用户授权

查看用户

select username, user_id, account_status from dba_users where username like '%LINGD%';

如果这样能解决你的问题那么到此处就可以结束了 (●’◡’●)




但是楼主的问题还没得到解决 ( ╯□╰ )

由于我在使用Go语言开发项目时,连接C##开头的用户总是无法连接成功,但是用Java项目连接C##的用户就没问题。
由于时间紧急,Go连接C##开头的用户失败的问题暂时搁置…
所以迫使我必须创建不带C##的用户,于是就有了下面的操作

查看当前容器

select sys_context('USERENV','CON_NAME') from dual; // CDB$ROOT

查看所有容器

select con_id, dbid, name, open_mode from v$pdbs;

查询结果

 CON_ID       DBID		NAME	 OPEN_MODE
---------- ---------- ---------- ----------
   2 2159055928	PDB$SEED	READ ONLY

   3 3019652274	ORACLEDB	MOUNTED

切换容器

alter pluggable database ORACLEDB open;

再次查看容器状态

select con_id, dbid, name, open_mode from v$pdbs;

查询结果:ORACLEDB 变成了 READ WRITE

 CON_ID       DBID		NAME	 OPEN_MODE
---------- ---------- ---------- ----------
   2 2159055928	PDB$SEED	READ ONLY

   3 3019652274	ORACLEDB	READ WRITE

修改会话的容器

alter session set container=ORACLEDB; // 一定要先执行上面的“切换容器”SQL语句

再次创建用户

create user lingd identified by 123456;
grant connect, resource to lingd;

注意:在使用新用户lingd登录时,服务名或SID需调整为你的容器名ORACLEDB,否则会提示用户不存在

再次查看用户

select username, user_id, account_status from dba_users where username like '%LINGD%';

如何默认启动PDB?

使用SYS用户创建如下触发器即可:

sqlplus / as sysdba
CREATE TRIGGER open_all_pdbs
   AFTER STARTUP
   ON DATABASE
BEGIN
   EXECUTE IMMEDIATE 'alter pluggable database all open';
END open_all_pdbs;
/



如果文章对你有帮助,记得点个赞哦!(●’◡’●)

  • 39
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值