欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle JOB 的探讨

程序员文章站 2022-05-10 15:30:54
...

当你 执行 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也没有立刻的执行,不知道这是为什么!