我的job 建了几天后就不运行了,手工运行可以,但数据库不会自动运行,请问这个该如何查起?
  job的内容就一个过程,几秒钟就运行完了,job间隔设置15分钟。

解决方案 »

  1.   

    select job, last_date, next_date, broken, interval, failures
    from user_jobs;看看结果是什么?注意,如果failures中job的失败次数,如果超过15次job就停止了.
    broken显示Y,则job不可用了
      

  2.   

    是运行了几天才不运行。
    select job, last_date, next_date, broken, interval, failures 
    from user_jobs; 
    job failures  为'0',broken 为'N'。next_date却已经是过去的一个时间了。
      

  3.   

    运行   alter   system   set   job_queue_processes=10   scope=spfile; 
      

  4.   

    既然job failures  为'0',broken 为'N'。next_date却已经是过去的一个时间了,那么你的数据库肯定中间关闭过,你觉得呢
      

  5.   

    当一个job运行时返回一个error是,oracle会再次设法执行它,第一次尝试是在一分钟后,第二次是在2分钟后,第三次是4分钟后,以此类推。每次尝试的周期加倍,直到下一次的运行时刻来到,又再次尝试,当尝试执行失败16次时,oracle自动标示此job为broken,不再执行此任务。
        注意:当一个job的执行周期是3分钟执行一次,而你设参数job_queue_interval=600(10分钟),而你只有一个SNP进程的话,你的这个JOB将10分钟执行一次,失败16次后将标示为broken。因为你的job的执行周期被SNP进程的唤醒周期限制。那么每次尝试的时间间隔成倍的情况不会出现。