数据库版本:11.2.0.3.0
操作系统:AIX 7.1 Oracle Linux 6
报错信息:
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
TRACE 日志:
*** 2018-02-26 22:00:05.708
*** SESSION ID:(1688.36241) 2018-02-26 22:00:05.708
*** CLIENT ID:() 2018-02-26 22:00:05.708
*** SERVICE NAME:(SYS$USERS) 2018-02-26 22:00:05.708
*** MODULE NAME:(DBMS_SCHEDULER) 2018-02-26 22:00:05.708
*** ACTION NAME:(MGMT_CONFIG_JOB_2_1) 2018-02-26 22:00:05.708
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
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%';
OWNER DIRECTORY_NAME DIRECTORY_PATH
---------- ------------------------------ ------------------------------------------------------------
SYS ORACLE_OCM_CONFIG_DIR /u01/app/oracle/product/11.2.0/ccr/state
SQL> select job_name,job_type,job_action,enabled,state from dba_scheduler_jobs where owner='ORACLE_OCM';
JOB_NAME JOB_TYPE JOB_ACTION ENABL STATE
------------------------------ ---------------- ------------------------------------------------------------ ----- ---------------
MGMT_CONFIG_JOB STORED_PROCEDURE ORACLE_OCM.MGMT_CONFIG.collect_config
TRUE SCHEDULED
MGMT_STATS_CONFIG_JOB STORED_PROCEDURE ORACLE_OCM.MGMT_CONFIG.collect_stats TRUE SCHEDULED
首先查看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
这个问题通常发生在新安装或升级到11.2.0.3的Oracle数据库上,由于OCM是一个独立工具,仅用于向MOS上传搜集信息,即使删除它不会对数据库造成影响,可以通过以下命令,删除OCM用户及相应的目录:
方法一:删除用户及目录
SQL> drop user ORACLE_OCM cascade;
SQL> drop directory ORACLE_OCM_CONFIG_DIR;
方法二:或者不删除用户,只禁用该job:
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB')
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB')