IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    DBMS_SESSION.set_context提示ORA-01031问题解决

    惜分飞发表于 2024-08-24 12:53:05
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:DBMS_SESSION.set_context提示ORA-01031问题解决

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    最近给客户把oracle数据库从11.2.0.3 aix平台迁移到19.23 linux平台,使用impdp+network_link 按照用户的方式处理,结果发现有一个程序运行异常
    ORA-01031


    ORA-01031: insufficient privileges通过程序跟踪确认是在调用以下部分异常

     DBMS_SESSION.set_context (
             'back_exec',
             'back_exec_log_no',
             v_back_exec_log_no
    ……
    

    通过跟踪执行用户权限,确认EXECUTE ON SYS.DBMS_SESSION已经授权.做一个简单测试重现给问题:

    SQL> show user;
    USER 为 "SYS"
    
    SQL> exec DBMS_SESSION.SET_CONTEXT('test_ctx', 'a', '1');
    BEGIN DBMS_SESSION.SET_CONTEXT('test_ctx', 'a', '1'); END;
    
    *
    第 1 行出现错误:
    ORA-01031: 权限不足
    ORA-06512: 在 "SYS.DBMS_SESSION", line 114
    ORA-06512: 在 line 1
    
    SQL> GRANT EXECUTE ON SYS.DBMS_SESSION TO sys;
    
    授权成功。
    
    SQL> exec DBMS_SESSION.SET_CONTEXT('test_ctx', 'a', '1');
    BEGIN DBMS_SESSION.SET_CONTEXT('test_ctx', 'a', '1'); END;
    
    *
    第 1 行出现错误:
    ORA-01031: 权限不足
    ORA-06512: 在 "SYS.DBMS_SESSION", line 114
    ORA-06512: 在 line 1
    

    基于这种情况,肯定不是权限问题,查询官方DBMS_SESSION.set_context部分描述
    dbms_session.set_context


    确认namespace:The namespace of the application context to be set, limited to 128 bytes. Exceeding the maximum permissible length will result in an error during the execution of the procedure.

    SQL> create context test_ctx using sys.DBMS_SESSION;
    
    上下文已创建。
    
    SQL> exec DBMS_SESSION.SET_CONTEXT('test_ctx', 'a', '1');
    
    PL/SQL 过程已成功完成。
    
    

    官方有相关的执行例子:Example: Creating a Global Application Context that Uses a Client Session ID

    • pl/sql的定义者与调用者
    • update user$报ORA-01031错误
    • 分布式存储故障导致数据库无法启动故障处理
    • Oracle23ai新特性—sqlplus errordetails功能
    • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复
    • mysql数据库被黑恢复—应用层面delete删除
    • 收集统计信息报ORA-00600 16515问题解决
    • ORA-01031: insufficient privileges
    • ora-600 kccpb_sanity_check_2故障处理
    • ORA-600 16703故障,客户找人恢复数据库,数据库被进一步恶意破坏—ORA-00704 ORA-00922
    • oracle之数据库全球化(编码)
    • ORA-600 2662快速恢复之Patch scn工具


沪ICP备19023445号-2号
友情链接