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

ORA-01031:跨Schema存储过程执行权限差异问题排查

问题排查思路

针对你遇到的DATA Schema可正常执行META.TEST1、但Custom Schema报权限不足的问题,结合定义者权限(Definer's Rights)和EXECUTE ANY PROCEDURE权限的特性,可从以下几个方向排查:

  • 角色权限激活状态差异
    尽管你提到二者角色权限配置一致,但需确认Custom Schema的会话中,授予EXECUTE ANY PROCEDURE权限的角色是否处于激活状态。分别在DATA和Custom会话中执行以下查询,对比返回结果:

    SELECT ROLE FROM SESSION_ROLES;
    

    若Custom会话中缺少对应角色,说明该角色被禁用,需执行SET ROLE <角色名>;激活,或检查角色的默认激活设置。

  • 会话权限实际生效差异
    直接查询两个Schema会话的生效权限,确认EXECUTE ANY PROCEDURE是否存在:

    SELECT PRIVILEGE FROM SESSION_PRIVS WHERE PRIVILEGE = 'EXECUTE ANY PROCEDURE';
    

    若Custom会话中无此权限,说明EXECUTE ANY PROCEDURE是通过未激活的角色授予的,需调整角色激活状态,或直接将权限授予Custom用户(而非通过角色)。

  • 同名对象/同义词冲突
    检查Custom Schema下是否存在与TEST1同名的对象或错误指向的同义词:

    -- 检查是否有同名对象
    SELECT OBJECT_NAME, OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_NAME = 'TEST1';
    -- 检查同义词指向
    SELECT TABLE_OWNER, TABLE_NAME FROM ALL_SYNONYMS WHERE OWNER = 'CUSTOM' AND SYNONYM_NAME = 'TEST1';
    

    若存在同名对象,执行META.TEST1时可能被优先解析为Custom自身的对象;若同义词未指向META.TEST1,会导致权限校验失败。

  • DENY权限限制(Oracle 12c+)
    检查Custom Schema是否被授予了针对EXECUTE ANY PROCEDURE或META.TEST1的DENY权限(DENY会覆盖GRANT):

    SELECT * FROM DBA_DENY_PRIVS WHERE GRANTEE = 'CUSTOM';
    

    若存在相关DENY记录,需撤销该限制。

  • Profile或会话资源限制
    检查DATA和Custom的Profile配置,确认Custom是否存在特殊的资源或权限限制:

    SELECT PROFILE FROM DBA_USERS WHERE USERNAME IN ('DATA', 'CUSTOM');
    SELECT * FROM DBA_PROFILES WHERE PROFILE = '<Custom的Profile名>';
    

    部分Profile可能包含限制权限使用的配置,导致EXECUTE ANY PROCEDURE无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:25:00