You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle PDB用户登录异常:普通权限连接失败,授予SYSDBA后可正常连接

问题分析与解决

可能的原因

  • 服务映射错误:使用的srvpdb1服务未正确关联到PDBDB1容器,导致普通连接请求被路由到其他容器(如CDB$ROOT),而TEST用户仅存在于PDBDB1中,因此触发登录失败。
  • 权限/角色生效异常:虽然授予了CONNECT和RESOURCE角色,但容器级配置可能导致CREATE SESSION权限未实际生效;或默认角色设置未正确应用。
  • 密码大小写敏感性:若数据库参数SEC_CASE_SENSITIVE_LOGON设为TRUE,连接时密码需与创建时大小写完全一致(创建时用大写TEST,连接时也需输入大写)。

解决步骤

1. 验证服务与容器的映射关系

切换到CDB根容器,执行以下SQL确认srvpdb1服务对应目标PDB:

ALTER SESSION SET CONTAINER=CDB$ROOT;
SELECT name, pdb FROM v$services WHERE name='SRVPDB1';

若查询结果中pdb字段不是PDBDB1,需重新配置服务将其关联到目标容器。

2. 检查用户状态与权限

切换到PDBDB1容器,确认用户状态正常且拥有登录权限:

ALTER SESSION SET CONTAINER=PDBDB1;
-- 检查用户账户状态
SELECT username, account_status FROM dba_users WHERE username='TEST';
-- 检查是否拥有CREATE SESSION权限
SELECT privilege FROM dba_sys_privs 
WHERE grantee='TEST' OR grantee IN (SELECT granted_role FROM dba_role_privs WHERE grantee='TEST');

若未找到CREATE SESSION权限,直接授予该权限:

GRANT CREATE SESSION TO TEST;

3. 确认密码大小写设置

检查PDB中的密码大小写敏感性参数:

ALTER SESSION SET CONTAINER=PDBDB1;
SHOW PARAMETER SEC_CASE_SENSITIVE_LOGON;

如果参数值为TRUE,连接SQL Developer时需严格输入大写TEST作为密码;若需关闭大小写敏感性,可执行:

ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON=FALSE SCOPE=SPFILE;
-- 重启数据库使配置生效

4. 重新测试普通连接

完成上述操作后,在SQL Developer中选择默认角色(不勾选SYSDBA),使用srvpdb1服务、用户名TEST、对应大小写的密码尝试连接,即可正常登录PDBDB1容器。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:03:20