题记:今天在监控系统上收到一套数据库的JOB异常报警,这里记录一下解决过程,分享出来!
alert日志:
Tue Dec 13 04:00:03 2011
Errors in file /opt/Oracle/diag/rdbms/ndmcdb/NDMCDB/trace/NDMCDB_j000_11169.trc:
ORA-12012: error on auto execute of job 30
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 41
ORA-06512: at "SYS.UTL_FILE", line 512
ORA-29283: invalid file operation
ORA-06512: at line 1
于是到数据库中查询:
Job Schema User Last Date Next Date Total Time B Interval Failures What
---------- ----------------- -------------------- -------------------- ---------- - ------------------------------ ---------- -------------------------
30 NDMC TRUNC(sysdate + 1) + 4/24 16 PROC_TODO_TASK;
现在这个Job已经不可用了。
根据日志中的提示,用PL/SQL Developer找到该存储过程:
定位到74行:
这里是要打开一个目录,那么这个PATH是在哪里定义的呢?
于是查看数据库:
SQL> col DIRECTORY_PATH for a50
SQL> col OWNER for a20
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME DIRECTORY_PATH
-------------------- ------------------------------ --------------------------------------------------
SYS NDMIGEXPDIR2 /home/oracle/ndmig_expdpdata
SYS NDMIGEXPDIR /home/oracle/archive/ndmig/expdpdata
SYS BACK_MSG_LOGS_PATH /home/oracle/msgBackup/work
SYS UNSUB_DATA_PATH /home/oracle/backup/unsub_data
SYS SHARELOG /home/oracle/share/
SYS DISKPKGFILECATALOG /home/oracle/backup/pkg_incon_data/diskpkgfile
SYS LOGCATALOG /home/oracle/backup/pkg_incon_data
SYS DATA_PUMP_DIR /opt/oracle/product/11g/db/rdbms/log/
SYS ORACLE_OCM_CONFIG_DIR /opt/oracle/product/11g/db/ccr/state
那么确认系统中是否存在这个目录或是这个目录权限是否正确:
oracle@NDMCDB05:~> cd /home/oracle/backup/unsub_data
-bash: cd: /home/oracle/backup/unsub_data: No such file or directory
发现这个目录不存在,于是手工创建:
oracle@NDMCDB05:~> mkdir -p /home/oracle/backup/unsub_data
接着需要将job的属性修改正确:
问题解决!