检查日志发现出现下述错误:
一个临时的解决方案是禁用这个job。
ORA-12012: error on auto execute of job "SYS"."BSLN_MAINTAIN_STATS_JOB"
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "DBSNMP.BSLN_INTERNAL", line 2073
ORA-06512: at line 1
一个临时的解决方案是禁用这个job。
BEGIN
sys.dbms_scheduler.disable( '"SYS"."BSLN_MAINTAIN_STATS_JOB"' );
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> select * from dba_tab_privs where table_name = 'DBMS_JOB';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
--------------- -------- ------------- --------- ------------- --------- ---------
SYSMAN SYS DBMS_JOB SYS EXECUTE NO NO
OWBSYS SYS DBMS_JOB SYS EXECUTE NO NO
APEX_030200 SYS DBMS_JOB SYS EXECUTE NO NO
EXFSYS SYS DBMS_JOB SYS EXECUTE NO NO
PUBLIC SYS DBMS_JOB SYS EXECUTE NO NO
SQL> grant EXECUTE on SYS.DBMS_JOB to DBSNMP;
Grant succeeded
SQL> select * from dba_tab_privs where table_name = 'DBMS_JOB';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
--------------- -------- ------------- --------- ------------- --------- ---------
SYSMAN SYS DBMS_JOB SYS EXECUTE NO NO
OWBSYS SYS DBMS_JOB SYS EXECUTE NO NO
APEX_030200 SYS DBMS_JOB SYS EXECUTE NO NO
EXFSYS SYS DBMS_JOB SYS EXECUTE NO NO
DBSNMP SYS DBMS_JOB SYS EXECUTE NO NO
PUBLIC SYS DBMS_JOB SYS EXECUTE NO NO