是不是要每个月2号执行作业一次?下面是每个月2号临晨执行作业的INTERVAL:trunc(add_months(sysdate,1),'mm')+1

解决方案 »

  1.   

    不可以,
    作业是按job_queue_interval去刷新的,默认值是60,即60妙刷新一次,
    而每次刷新时sysdate跟着变的。这样的话,你的时间间隔永远是5天前的23点钟执行
    ....
      

  2.   

    555555555555
    我的理解有问题
    我以为只要把第一次执行时间定义好,interval  既然是间隔,
    而实际上他的表达是通过一个具体的执行时间来描述的,那么这个‘间隔’无非就是这个时间与第一次执行时间的时间差,按照你的说法,
    如果你的提交方式是(sysdate,trunc(add_months(sysdate,1),'mm')+1)
    那么每次到了刷新的时候sysdate也跟着变,间隔也就乱了不是??

      

  3.   

    虽然sysdate每次刷新作业都跟着变,
    但trunc(add_months(sysdate,1),'mm')+1 运算的结果是每个月改变一次。
    所以作业就每个月执行一次。
      

  4.   

    实际上作业刷新,就是运算interval,
    当运算的结果等于sysdate时,作业就执行了。
      

  5.   

    e ,
    我看了一下数据库
    next-date= 2005-8-2 23:00:00interval确实是TO_DATE(TO_CHAR(ADD_MONTHS(SYSDATE-5,1),'YYYYMMDD')||'230000','YYYYMMDDHH24MISS')我记得提交的时候 是2005-7-7 10:16:48
    为了能在2号执行
    所以我设置
    next-date= TO_DATE(TO_CHAR(SYSDATE-5,'YYYYMMDD')||'230000','YYYYMMDDHH24MISS')按我的理解就是刚好差一个月
      

  6.   

    哈哈,
    那到2005-8-2 23:00:00时执行之后的next_date会是多少呢???如果sysdate='2005-8-2 23:00:00' 那么
    TO_DATE(TO_CHAR(SYSDATE-5,'YYYYMMDD')||'230000','YYYYMMDDHH24MISS')
    ='2005-07-28 23:00:00'那作业就再也不执行了,对不?
      

  7.   

    我上面说的
    “实际上作业刷新,就是运算interval,
    当运算的结果等于sysdate时,作业就执行了”是错误的!作业递交后,执行过程应是这样的:
    每当系统时间到next_date时执行一次,
    并且按照interval运算公式,更新next_date
    ....