转: ORA-06508 could not find program unit being called: "DBSNMP.BSLN_INTERNAL

     告警日志中出现错误

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  

    原文作者:feiyun8616
    原文地址: https://www.cnblogs.com/feiyun8616/p/6541489.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞