一个job的下一次执行时间 为2005-01-01 09:00:00,在数据库重新启动前,由于服务器时间还不到 下一次执行时间,而当数据库重新启动后,却又超过了job的下一个执行时间,所以job就不在执行,如何在这种情况下,让job在数据库重新启动时,能够重新执行?

解决方案 »

  1.   

    查询系统表:user_jobs、dba_jobs job       (任务号)   
    next_date (下次执行日期)   
    next_sec  (下次执行时间) 
    failures  (失败次数,失败16次则自动终止) 
    broken    (终止标志,Y/N)一旦next_date与next_sec组合小于系统时间,则更改该JOB的执行时间。
      

  2.   

    新建一个作业来监视这个作业,如果重启后的时间超过了本应执行的时间,则更改作业的next_date,执行完后再改回来
      

  3.   

    刚刚测试发现,如果人为的把oracle服务器时间 改变 的比下次执行时间 大,job同样可以执行.好象job不执行不是由于 服务器时间引起的.那是什么原因呢.为什么在服务器重新启动后就不在执行了
      

  4.   

    all_jobs,user_jobs、dba_jobs 表中的 failure(失败次数)是什么意思,
    是仅仅代表失败的次数,还是如果这个次数达到一定的值,job就会停止执行