告警日志中出现错误
Sun Jul 28 00:00:00 2013
Errors in file /oracle/app/db/diag/rdbms/mis/MIS1/trace/MIS1_j001_30212440.trc:
ORA-12012: error on auto execute of job 12696
ORA-04063: package body “DBSNMP.BSLN_INTERNAL” has errors
ORA-06508: PL/SQL: could not find program unit being called: “DBSNMP.BSLN_INTERNAL”
ORA-06512: at line 1 MOS中的解释为,为了安全起见,之前授权给public的execute on dbms_job权限被收回,导致dbsnmp执行dbms_job权限不够报错。解决措施 grant execute on sys.dbms_job to dbsnmp; 注: 此job为每周日执行。 Ora-06508: Pl/Sql: Could Not Find Program Unit Being Called: “DBSNMP.BSLN_INTERNAL” (Doc ID 1323597.1) Symptoms
Following errors are found in database alert.log
ORA-12012: error on auto execute of job 41042
ORA-04063: package body “DBSNMP.BSLN_INTERNAL” has errors
ORA-06508: PL/SQL: could not find program unit being called:
“DBSNMP.BSLN_INTERNAL”
ORA-06512: at line 1 or:
Errors in file .trc:
ORA-12012: error on auto execute of job 11689
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at “DBSNMP.BSLN_INTERNAL”, line 2073
ORA-06512: at line 1 Trying to compile DBSNMP.BSLN_INTERNAL package, it fails. Cause
For security reasons, the privileges on DBMS_JOB package to public has been removed. Verification can be done with:
select * from dba_tab_privs where table_name=’DBMS_JOB’; GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
———— ———— ———— ———— ———— — —
OWBSYS SYS DBMS_JOB SYS EXECUTE NO NO
SYSMAN SYS DBMS_JOB SYS EXECUTE NO NO
EXFSYS SYS DBMS_JOB SYS EXECUTE NO NO
PUBLIC SYS DBMS_JOB SYS EXECUTE YES NO Solution
Explicit permissions on DBMS_JOB must be granted to DBSNMP user.
In case the execute privilege has been removed from PUBLIC check the following note for more details:
Note 247093.1 Be Cautious When Revoking Privileges Granted to PUBLIC
GRANT EXECUTE ON sys.dbms_job to DBSNMP; 附: 还有一个报错信息很像的, 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 MOS中解释的原因不同,如果你的数据库是通过模板创建或者使用克隆,表DBSNMP.BSLN_BASELINES中的已存在数据会与新插入的数据冲突。可以通过重新创建DBSNMP这个用户。 ORA-12012: error on auto execute of job “SYS”.”BSLN_MAINTAIN_STATS_JOB” (Doc ID 1413756.1) Symptoms
BSLN_MAINTAIN_STATS_JOB fails with the following error: 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 1Cause
The same is addressed in
Bug 13637859 – “BSLN_MAINTAIN_STATS_JOB FAILS WITH ORA-06502
which is marked as a duplicate of
Bug 10110625 – DBSNMP.BSLN_INTERNAL RECEIVES ORA-06502
As in a specific customer’s situation, the issue can occur when a Database is created with a template from the old database or created as a clone from another database. The existing records in table “DBSNMP.BSLN_BASELINES” conflict with new baseline information inserted in the cloned database, thereby containing inconsistent information. Solution
For 11.2.0.2, please apply generic Patch 10110625.
As a workaround, the DBSNMP user can be dropped and re-created using the standard scripts.
Ensure you have Backed up your database. — Login as sys user. SQL> sqlplus / as sysdba — From the sqlplus execute the following: — Drop the DBSNMP user by executing catnsnmp.sql script. SQL> @$ORACLE_HOME/rdbms/admin/catnsnmp.sql — Create the DBSNMP user by executing catsnmp.sql SQL> @$ORACLE_HOME/rdbms/admin/catsnmp.sql