让Broken的JOB跑起来

客户库某个job由于NLS设置问题broken掉,下一次执行是在4000年……

查看dba_jobs表结构

SQL> desc dba_jobs
 Name          Null?    Type
 ------------- -------- ----------------
 JOB           NOT NULL NUMBER
 LOG_USER      NOT NULL VARCHAR2(30)
 PRIV_USER     NOT NULL VARCHAR2(30)
 SCHEMA_USER   NOT NULL VARCHAR2(30)
 LAST_DATE              DATE
 LAST_SEC               VARCHAR2(32)
 THIS_DATE              DATE
 THIS_SEC               VARCHAR2(32)
 NEXT_DATE     NOT NULL DATE
 NEXT_SEC               VARCHAR2(32)
 TOTAL_TIME             NUMBER
 BROKEN                 VARCHAR2(1)
 INTERVAL      NOT NULL VARCHAR2(200)
 FAILURES               NUMBER
 WHAT                   VARCHAR2(4000)
 NLS_ENV                VARCHAR2(4000)
 MISC_ENV               RAW(32)
 INSTANCE               NUMBER


可使用如下语句使停掉的job跑起来

exec dbms_ijob.broken(1,false);   //1是指job号,可查询job列得出

为什么使用dbms_ijob.broken而不是 dbms_job.broken呢?

因为,这个job不属于sys,如果属于sys,可以直接使用dbms_job.broken。

具体原因详见老杨一篇博文:http://yangtingkun.itpub.net/post/468/24348

普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress