如题,我希望我的job,在每个小时的第29分钟或者59分钟执行,我的interval是这么写的:
创建2个job:trunc(sysdate, 'HH') + 29/1440 和 trunc(sysdate, 'HH') + 59/1440
但是执行的时候要么不执行,要么就是执行失败,请大家给我个建议!!!!!小弟在线急等!!!!!

解决方案 »

  1.   

    CASE
             WHEN to_char(SYSDATE, 'mi') > 30 THEN--59分执行则下次时间为本次小时时间+1小时,再加29分钟
              trunc(SYSDATE, 'hh24') + 1 / 24 + 29 / 24 / 60
             ELSE--29分则取本次小时时间+59分钟
              trunc(SYSDATE, 'hh24') + 59 / 24 / 60
           END
    做一个job就可以了
      

  2.   

    楼上的这位,我的意思是在每个小时的第29分钟或者59分钟执行我的job,你这么写,我看的不是很明白,希望你解释下,呵呵
      

  3.   

    因为interval是在每次job执行前进行计算,计算下次运行时间.你运行时间要么是29分要么是59分,所以只要判断当前分钟,如果分钟数大于30则本次为59分运行的,所以下次运行时间是下个小时的29分,反之本次是29分运行的,下次运行时间为本小时的59分.
    鉴于job有可能有短暂时间漂移,你也可以讲判断的分钟逻辑更改下,以便更符合要求.