You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Oracle 23ai用户C##TEST连接DBeaver/SQL Developer遇ORA-01045错误

解决Oracle 23ai中C##TEST用户第三方工具连接报ORA-01045的问题

问题场景

以SYSTEM用户登录SQL Plus完成以下操作:

  • 创建用户C##TEST
  • 授予CONNECTRESOURCECREATE SESSION权限
  • 执行d:\project\schema.sql脚本

但出现连接差异:

  • SQL Plus执行conn C##TEST/password可正常登录
  • DBeaver或SQL Developer连接时,触发ORA-01045错误:登录被拒绝,用户C##TEST无CREATE SESSION权限

可能原因及解决方案

1. 公共用户权限未覆盖目标容器

C##前缀的用户是Oracle CDB(容器数据库)中的公共用户,权限默认仅在当前授予的容器生效。若第三方工具连接的是PDB(可插拔数据库),而权限仅在CDB$ROOT中授予,就会出现权限缺失。

验证权限范围

执行以下SQL查看权限的容器覆盖情况:

SELECT grantee, privilege, common 
FROM dba_sys_privs 
WHERE grantee='C##TEST' AND privilege='CREATE SESSION';

common列值为NO,说明权限仅在单个容器生效。

修复操作

  • 授予全局生效的权限(覆盖所有容器):
GRANT CREATE SESSION TO C##TEST CONTAINER=ALL;
GRANT CONNECT, RESOURCE TO C##TEST CONTAINER=ALL;
  • 若仅需在特定PDB中使用,切换到目标PDB后单独授予:
ALTER SESSION SET CONTAINER=你的PDB名称;
GRANT CREATE SESSION, CONNECT, RESOURCE TO C##TEST;

2. 第三方工具连接配置错误

检查工具的连接参数:

  • 确认服务名配置正确:若要连接CDB,使用CDB的服务名;若连接PDB,使用对应PDB的服务名。
  • 核对连接类型:部分工具默认优先连接PDB,需手动指定目标容器。

3. 排除其他登录限制

  • 检查用户状态,确保未被锁定:
SELECT username, account_status FROM dba_users WHERE username='C##TEST';
  • 检查用户关联的PROFILE是否有登录限制:
SELECT profile, limit 
FROM dba_profiles 
WHERE profile=(SELECT profile FROM dba_users WHERE username='C##TEST') 
AND resource_name='FAILED_LOGIN_ATTEMPTS';

limit0,需调整PROFILE规则或更换默认PROFILE。

内容的提问来源于stack exchange,提问作者user2312787

火山引擎 最新活动