最近编写job的时候发现一个问题
job的执行时间如果超过了设定的时间间隔(interval),那么下一次执行的时间应该从job执行完开始
但是我在做的工程中发现我设定的interval是两分钟。在job中我用一个cursor查询到一张表A的所有数据并用loop对每一条数据进行处理,并将处理的结果写到表B,B中有一个字段cdate。
当A表的数据都被处理完以后我查询B表,发现cdate有多个值但是都是相差两分钟,这样是不是说job的执行是以设置的interval为准呢?我觉得这个很奇怪,不应该是这样的啊
不知道我哪里想的不对,还请大家指点job执行间隔oracle数据cursor

解决方案 »

  1.   

    job的时间间隔是不会变的,每两分钟都会执行一次,不会去看job里面的内容有没有执行完的
      

  2.   

    严格地讲,interval是指上一次执行结束到下一次开始执行的时间间隔(所以不管你的过程是否大于2分钟),当interval设置为null时,该job执行结束后,就被从队列中删除。假如 我们需要该job周期性地执行,则要用‘sysdate+m’表示。
      

  3.   

    job本次运行时就计算了下次运行时间.如果本次运行时间较短,执行完毕时未到下次执行时间,则等待至下次执行时间执行.如果本次执行时间较长,执行完毕时已经过了下次执行时间.则job立刻执行,执行前计算下下次执行时间.
      

  4.   

    如果本次执行时间较长,执行完毕时已经过了下次执行时间.则job立刻执行,执行前计算下下次执行时间. 这句话的意思是:
    如果本次的执行时间很长,那么如果到了下次执行的时间,本次的执行还没完成,会立刻终止本次执行,开始下一次的执行?还是下一次的执行不开始一直等本次的执行结束?