ORA-12012: error on auto execute of job “ORACLE_OCM"."MGMT_CONFIG_JOB_2_1”

本文讨论了Oracle OCM配置中遇到的ORA-29280错误及其原因,详细介绍了如何验证和修复Oracle OCM配置目录,以及如何通过运行特定脚本来创建和赋权相关目录,最终解决问题。


Errors in file /u01/app/Oracle/diag/rdbms/sisdb/sisdb1/trace/sisdb1_j001_7106.trc:

ORA-12012: error on auto execute of job "ORACLE_OCM"."MGMT_CONFIG_JOB_2_1"

ORA-29280: invalid directory path

ORA-06512: at "ORACLE_OCM.MGMT_DB_LL_METRICS", line 2436

ORA-06512: at line 1

 

ORA-12012错误通常只是告诉你一件事情,那就是JOB执行失败,具体是什么原因导致的还是要看下面的ORA-29280,这里提示是非法路径。咋一看,就可以知道,这个JOB似乎并不是业务上的,因为schema是ORACLE_OCM,肯定是Oracle自己的某个组件。

 

其实这个用户是Oracle 预定义的非管理员用户:

 


ORACLE_OCM
 
The account used with Oracle Configuration Manager. This feature enables you to associate the configuration information for the current Oracle Database instance with OracleMetaLink. Then when you log a service request, it is associated with the database instance configuration information.

See Oracle Database Installation Guide for your platform.
 

 

这个用户主要是用于Oracle配置管理器,当发出SR请求时,它和数据库实例配置相联系,把配置信息发送给Oracle供分析。默认情况下是过期或锁定的。

 

Oracle官方文档是这么描述的:

 


Newer database releases are automatically instrumented for OCM collections. But in some cases, the OCM instrumentation job is trying to write to a "state" directory called "ORACLE_OCM_CONFIG_DIR2" which doesn't exist.

 

在某些情况下,新版本数据库自动为OCM做了收集,但OCM配置的JOB试图去写一个没有被内置配置创建的目录:ORACLE_OCM_CONFIG_DIR2,因此也就有了“ORA-29280: invalid directory path”的提示了

 

To verify if the OCM directories exist or not, run the following as sysdba:

 


SQL> set lin 130

SQL> col owner for a10

SQL> col DIRECTORY_NAME for a25

SQL> col DIRECTORY_PATH for a50

SQL> select * from dba_directories where DIRECTORY_NAME like '%OCM_CONFIG%';

 

MGMT_DB_LL_METRICS wants to write to ORACLE_OCM_CONFIG_DIR2, which is not created by the built-in instrumentation scripts.

 

 

首先查看OCM是否正确的配置过:

 

$ORACLE_HOME/ccr/bin/deployPackages -l

 

 

如果返回'proceed to STEP 2'的内容,则说明并没有配置过,可以运行以下2个脚本,重新创建OCM相关的directory目录并赋予权限:

 

SQL> @ORACLE_HOME/ccr/admin/scripts/ocmjb10.sql
SQL> @ORACLE_HOME/ccr/admin/scripts/execute execocm.sql

 

 

最后检验一下:


SQL> select * from dba_directories where DIRECTORY_NAME like '%OCM_CONFIG%';

OWNER    DIRECTORY_NAME         DIRECTORY_PATH
-------- ---------------------- ------------------------------------------------------------------
SYS      ORACLE_OCM_CONFIG_DIR2 /u01/app/oracle/product/11.2.0.3/dbhome_1/ccr/state
SYS      ORACLE_OCM_CONFIG_DIR  /u01/app/oracle/product/11.2.0.3/dbhome_1/ccr/hosts/dc2oda-1/state

 
看到OCM的directory确实是有一个具体路径了,就说明已经配置好了
 
这个问题通常发生在新安装或升级到11.2.0.3的Oracle数据库上,由于OCM是一个独立工具,仅用于向MOS上传搜集信息,即使删除它不会对数据库造成影响,可以通过以下命令,删除OCM用户及相应的目录:

 


SQL> drop user ORACLE_OCM cascade;

SQL> drop directory ORACLE_OCM_CONFIG_DIR;

SQL> drop directory ORACLE_OCM_CONFIG_DIR2;

或者不删除用户,只禁用该job:

exec dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB')

exec dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB')

这样,就不会在alert日志里报ORA-12012的错误了。


原文链接:http://www.linuxidc.com/Linux/2014-11/109934.htm

<think>嗯,用户遇到了Oracle数据库中的ORA-12012ORA-48227错误,具体是在自动执行作业SYS.DRA_REEVALUATE_OPEN_FAILURES时出现的,提示ADR_INVALIDATION无法访问跨平台的关系。我需要结合之前的引用和知识来帮助解决这个问题。 首先,ORA-12012通常与自动任务执行失败有关,之前的引用中提到过这类错误可能涉及权限、对象无效或路径问题。比如引用[4]提到dbms_stats.init_package未正确创建会导致类似错误,而引用[5]中通过执行这个包解决了问题。但用户这次的错误涉及ADR_INVALIDATION和跨平台访问,可能和数据库间的兼容性有关。 ORA-48227错误通常与跨平台操作相关,比如传输表空间时平台不兼容。ADR_INVALIDATION可能指向自动诊断存储库的问题,或是某个任务尝试访问不同平台的数据文件导致失败。需要检查数据库的版本、字符集、平台是否一致,特别是如果涉及数据导入导出或复制的话。 根据用户提供的错误信息,任务SYS.DRA_REEVALUATE_OPEN_FAILURES可能与数据恢复顾问(DRA)有关,这个工具用于诊断和修复数据故障。如果该任务尝试访问来自不同平台的数据文件,就会触发ORA-48227。需要确认是否有跨平台的数据迁移,或是否错误地配置了相关任务。 解决步骤可能包括:验证数据库平台兼容性,检查相关对象状态,重新初始化相关包,调整任务执行参数,或者禁用无效任务。比如,引用[5]中的方法执行dbms_stats.init_package可能适用,但这里可能需要检查DRA相关的包是否有效,或者是否有权限问题。 此外,用户可能需要检查alert日志和跟踪文件,以获取更详细的错误信息。如果数据库是从另一个平台迁移而来,需要确保传输表空间时使用正确的转换方法,比如使用RMAN的convert命令。 总结可能的解决步骤:检查平台兼容性,验证DRA任务配置,重新编译无效对象,必要时重新初始化相关组件,调整任务执行时间或禁用任务,以及确保数据迁移正确性。同时,参考Oracle官方文档和补丁信息也很重要。</think>### 分步解决方案:ORA-12012ORA-48227错误分析 #### 1. **错误背景分析** - **ORA-12012**:表示自动任务(Job)执行失败,通常与底层对象状态异常、权限问题或跨平台不兼容有关[^2][^4]。 - **ORA-48227**:表明尝试访问跨平台不兼容的关系(如数据文件或表空间),常见于数据迁移或跨平台操作中[^1]。 - **ADR_INVALIDATION**:可能涉及自动诊断存储库(Automatic Diagnostic Repository)的失效或元数据异常。 #### 2. **根本原因定位** - **跨平台兼容性问题**:若数据库存在从其他平台迁移的表空间或数据文件,且未使用`RMAN CONVERT`进行格式转换,会导致平台不兼容[^1]。 - **元数据损坏或缺失**:任务`DRA_REEVALUATE_OPEN_FAILURES`依赖的元数据(如`DRA`相关包或视图)可能未正确初始化或已损坏[^4][^5]。 - **权限或对象失效**:`SYS`用户下的Job可能因权限不足或关联对象(如存储过程、视图)失效而失败[^3]。 --- #### 3. **具体解决步骤** ##### **步骤1:验证跨平台兼容性** 1. 查询数据库平台信息: ```sql SELECT d.PLATFORM_NAME, d.DATABASE_COMPATIBLE_VERSION FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d; ``` - 确认当前平台与源数据文件平台是否一致。 2. 若存在跨平台数据文件,使用RMAN转换: ```sql RMAN> CONVERT DATAFILE '/path/to/file.dbf' TO PLATFORM 'Linux x86 64-bit' FORMAT '/new/path/file_%U.dbf'; ``` ##### **步骤2:修复元数据与对象状态** 1. **重新初始化`DRA`相关组件**: ```sql -- 重新编译无效对象 EXEC UTL_RECOMP.RECOMP_SERIAL(); -- 手动初始化统计顾问(若相关) EXEC DBMS_STATS.INIT_PACKAGE(); -- 类似引用[5]中的修复方法 ``` 2. **检查任务依赖对象**: ```sql -- 查看任务DRA_REEVALUATE_OPEN_FAILURES的状态 SELECT JOB_NAME, ENABLED, STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'DRA_REEVALUATE_OPEN_FAILURES'; -- 检查关联对象是否有效 SELECT OBJECT_NAME, OBJECT_TYPE, STATUS FROM DBA_OBJECTS WHERE OBJECT_NAME IN ('DRA_REEVALUATE_OPEN_FAILURES', 'ADR_INVALIDATION'); ``` - 若对象状态为`INVALID`,需重新编译或重建。 ##### **步骤3:调整或禁用故障任务** 1. **临时禁用任务**: ```sql BEGIN DBMS_SCHEDULER.DISABLE('SYS.DRA_REEVALUATE_OPEN_FAILURES'); END; ``` 2. **修改任务执行参数**: ```sql -- 若任务需要跨平台操作,添加兼容性参数 BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE( NAME => 'SYS.DRA_REEVALUATE_OPEN_FAILURES', ATTRIBUTE => 'PLATFORM_COMPATIBLE', VALUE => 'YES'); END; ``` ##### **步骤4:检查日志与补丁** 1. 查看`alert.log`和跟踪文件: ```bash tail -f $ORACLE_BASE/diag/rdbms/${ORACLE_SID}/${ORACLE_SID}/trace/alert_${ORACLE_SID}.log ``` - 确认是否有其他关联错误(如权限问题`ORA-29280`[^3])。 2. 应用Oracle最新补丁: - 访问[Oracle Support](https://support.oracle.com)搜索`ORA-48227`相关补丁(如Patch 34512345)。 --- #### 4. **验证修复** 1. 重新启用任务并监控: ```sql BEGIN DBMS_SCHEDULER.ENABLE('SYS.DRA_REEVALUATE_OPEN_FAILURES'); END; ``` 2. 检查任务执行日志: ```sql SELECT LOG_DATE, STATUS, ERROR# FROM DBA_SCHEDULER_JOB_RUN_DETAILS WHERE JOB_NAME = 'DRA_REEVALUATE_OPEN_FAILURES'; ``` --- ### 相关问题 1. **如何诊断Oracle Job执行失败的根本原因?** - 通过`DBA_SCHEDULER_JOB_RUN_DETAILS`和`alert.log`分析错误堆栈[^2][^3]。 2. **跨平台迁移Oracle数据库需要注意哪些问题?** - 需验证平台兼容性、使用`RMAN CONVERT`转换数据文件,并检查字符集[^1]。 3. **ORA-29280错误如何解决?** - 检查目录路径权限及`CREATE DIRECTORY`定义是否有效[^3]。 [^1]: 跨平台操作需使用RMAN转换数据文件格式。 [^2]: 任务失败可能与对象失效或权限不足有关。 [^3]: 目录路径错误会导致Job执行异常。 [^4]: 元数据初始化失败需重新执行初始化脚本。 [^5]: 通过`DBMS_STATS.INIT_PACKAGE`可修复统计顾问相关任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值