提交的一个job 不运行 提交的一个job 不运行

原文SUBMITTED A JOB IT IS NOT RUNNING (Doc ID 1026586.6)

问题描述:
你已经使用dbms_job.submit package 提交了一个job,但是该job没有正常运行。

解决方案描述:

当你遇到该问题时,有多种情况需要检查。下面的诊断将会帮助你定位问题。


诊断列表(diagnostic checklist)

a)  是否有snp进程在运行?
SVRMGR> connect internal
Connected.
SVRMGR> show parameter job
NAME        TYPE    VALUE
----------------------------------- ------- ------------------------------
job_queue_interval                  integer 10
job_queue_keep_connections          boolean FALSE
job_queue_processes                 integer 1
 
job_queue_processes must be >= 1

--->额外注意:此处还有job_queue_interval 这个参数以及svrmgr以及snp进程,估计是8i或者是更早版本。

b) 检查dba_jobs 并确认你的那个job在查询结果中。

SQL> select job, last_date, last_sec, next_date, next_sec, this_date, this_sec,
broken, failures, interval, what from user_jobs;

BROKEN:
  如果Y,意味着你的这个job有16次 failure,并且该job不再执行。
  并且snp.trc file应在在bdump目录下被建立。该trc文件可以看到job不执行的原因。
  一旦你解决了这个问题,unbreak 这个job:
  execute dbms_job.broken(16,false);

LAST_DATE&LAST_SEC/NEXT_DATE&NEXT_SEC:
  验证the last execution and the next execution
  以判断该job是否实际的执行过 和 该job是否被调度以准备下一次的执行。
 
如果 WHAT 列 没有你调度的那个job,原因要么是该job被remove掉了,要么是没有正确的提交(submit)

c)查询DBA_JOBS_RUNNING 视图,以确认该job是否正在运行并且还没有运行完毕。

d)验证对于 该job的user 下 有a private database link
  (LOG_USER:  USER logged in when job was submitted)
 
e)在执行 DBMS_JOB.SUBMIT的存储过程后面,加一个commit
 The COMMIT 必须声明以提交该job

f)验证你的job,当存储过程执行后,在exiting之前,会发出一个commit。
 
 
参考文档:
http://blog.csdn.net/msdnchina/article/details/37611891