我这边数据库里面有一个JOB,时间间隔为5秒,过程执行完大概要十几秒,运行一天后,NEXT DATE 始终停在一起时间点上.是什么原因了,急求!

解决方案 »

  1.   

    1、检查你的Job运行有没有问题
       用dbms_job.run运行测试一下job是否能正确运行。
    2、检查参数设置是否有问题
       c:\sqlplus /nolog
       SQL> conn sys@myoracle as sysdba
       SQL> show parameters jobNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    job_queue_processes                  integer     10
    该参数必须有值
      

  2.   

    这些参数都是正确的,才开始JOB还有运行的,只是运行一段时间后,时间就定在那里.
      

  3.   

    先用dbms_job.run测试一下看看JOB是否还能正常运行。
    也有可能就像楼上的楼上所说的,在JOB程序里,存在对同一资源进行更新操作时造成的循环死锁,仔细检查一下程序看看是不是有逻辑上的问题。
      

  4.   

    时间间隔为5秒,过程执行完大概要十几秒第一次没执行完,下一次又来!如果当中存在数据一致性问题就肯定会出问题的。
    看看job的逻辑,可以的话时间不要小于job运行时间。
      

  5.   

    程序里面是有对同一个进行更新操作,我在网上看到的,是一个JOB执行完了,才开始计算下一个时间点的啊.
      

  6.   

    应该是job执行时间过短的原因吧时间间隔为5秒,过程执行完大概要十几秒第一次没执行完,下一次又来!如果当中存在数据一致性问题就肯定会出问题的。
    看看job的逻辑,可以的话时间不要小于job运行时间。
      

  7.   

    userzhang(北风) ( ) 信誉:100    Blog  2007-03-27 11:08:14  得分: 0  
     
     
       TO:世幻飞扬:处理时间大于间隔时间,我通常先修改标志,再进行处理。能否说的详细一点.-------------------------------------------------------------------------
    比如:现在通过一个JOB处理接口业务单,在这个业务单主表中,我通常设计一个flag字段,当程序去处理的时候,将它流程化。程序(JOB)处理这些单子之前,flag为0,程序开始处理时,先Update这个flag为1表示程序正在处理,处理完后,update这个flag为2表示处理完成。这样,当JOB下次轮回时,不会重复处理这些业务单,也不会造成循环锁了。
     
      

  8.   

    一个最简单的地方,是不是failure到16了……