Oracle JOB 的探讨

阅读更多

当你 执行 DMBS_JOB.RUN(:JOB_ID) ;则此条job的记录,将在 user_jobs  存在一条记录,但是DBA_JOBS_RUNNING 中并没有此条对应的记录。

 

1、Broken()过程更新一个已提交的工作的状态,典型地是用来把一个已破工作标记为未破工作。
   这个过程有三个参数:job 、broken与next_date。 
   PROCEDURE Broken (job    IN binary_integer, 
            Broken  IN boolean, 
            next_date IN date :=SYSDATE) 
   job参数是工作号,它在问题中唯一标识工作。 
   broken参数指示此工作是否将标记为破——TRUE说明此工作将标记为破,而FLASE说明此工作将标记为未破。 
   next_date参数指示在什么时候此工作将再次运行。此参数缺省值为当前日期和时间。 
   job如果由于某种原因未能成功之行,oracle将重试16次后,还未能成功执行,将被标记为broken 

 

当你执行了 DBMS_JOB.BROKEN(:JOB_ID,true) 后,在 DBA_JOBS_RUNNING  表中即可存在了一条与之对应的记录。网上的文档一般认为 DBA_JOBS_RUNNING   表存放的是正在运行的job,但是我觉得这里存放的已破了的job记录。

我有以下几个疑问:

 DBMS_JOB.BROKEN(:JOB_ID,false) 后,job并没有立刻重新执行,我等待了很长的时间后,观察也没有执行,不知道是为什么!后来我有用了   DBMS_JOB.RUN(:JOB_ID) 后,发现job也没有立刻的执行,不知道这是为什么!

你可能感兴趣的:(Oracle JOB 的探讨)