DBSNMP用户的BSLN_INTERNAL出现ORA-12012和ORA-6502错误的解决方法

来源:互联网 发布:淘宝卖情趣用品要求 编辑:程序博客网 时间:2024/06/07 13:12
检查日志发现出现下述错误: 
[sql] view plaincopy
  1. ORA-12012: error on auto execute of job "SYS"."BSLN_MAINTAIN_STATS_JOB"  
  2. ORA-06502: PL/SQL: numeric or value error  
  3. ORA-06512: at "DBSNMP.BSLN_INTERNAL", line 2073  
  4. ORA-06512: at line 1  

一个临时的解决方案是禁用这个job。
[sql] view plaincopy
  1. BEGIN  
  2. sys.dbms_scheduler.disable( '"SYS"."BSLN_MAINTAIN_STATS_JOB"' );   
  3. END;  


查询MOS后发现原来是权限的问题:

【参考文档】AlertLog Errors: ORA-12012: Error On Auto Execute Of Job, ORA-06512: at "DBSNMP.BSLN_INTERNAL" [ID 1329618.1]

需要授予DBSNMP用户对SYS.DBMS_JOB 有EXECUTE的权限。

 

[sql] view plaincopy
  1. SQL> select * from dba_tab_privs where table_name = 'DBMS_JOB';  
  2.    
  3. GRANTEE         OWNER    TABLE_NAME    GRANTOR   PRIVILEGE     GRANTABLE HIERARCHY  
  4. --------------- -------- ------------- --------- ------------- --------- ---------  
  5. SYSMAN          SYS      DBMS_JOB      SYS       EXECUTE       NO        NO  
  6. OWBSYS          SYS      DBMS_JOB      SYS       EXECUTE       NO        NO  
  7. APEX_030200     SYS      DBMS_JOB      SYS       EXECUTE       NO        NO  
  8. EXFSYS          SYS      DBMS_JOB      SYS       EXECUTE       NO        NO       
  9. PUBLIC          SYS      DBMS_JOB      SYS       EXECUTE       NO        NO  


 

[sql] view plaincopy
  1. SQL> grant EXECUTE on SYS.DBMS_JOB to DBSNMP;  
  2.    
  3. Grant succeeded  


 

[sql] view plaincopy
  1. SQL> select * from dba_tab_privs where table_name = 'DBMS_JOB';  
  2. GRANTEE         OWNER    TABLE_NAME    GRANTOR   PRIVILEGE     GRANTABLE HIERARCHY  
  3. --------------- -------- ------------- --------- ------------- --------- ---------  
  4. SYSMAN          SYS      DBMS_JOB      SYS       EXECUTE       NO        NO  
  5. OWBSYS          SYS      DBMS_JOB      SYS       EXECUTE       NO        NO  
  6. APEX_030200     SYS      DBMS_JOB      SYS       EXECUTE       NO        NO  
  7. EXFSYS          SYS      DBMS_JOB      SYS       EXECUTE       NO        NO  
  8. DBSNMP          SYS      DBMS_JOB      SYS       EXECUTE       NO        NO       
  9. PUBLIC          SYS      DBMS_JOB      SYS       EXECUTE       NO        NO