现在碰到一个很奇怪的现象,
从昨天开始一个job的next date总是刚开始运行时候的那个时间,
不会自动根据设的Interval增加的。我设的Interval是sysdate + 1/480,
并且这个job所执行的函数我用test的话,顺利运行完成的。
以前都是正常的呀
哪位碰到过这种情况呀?

解决方案 »

  1.   

    确保数据库init.ora文件中有以下内容:--  job_queue_processes=10(或大于10)
    --  job_queue_interval=60 (或小于60, 仅用于Oracle 8.1.x版本)
      

  2.   

    init.ora这个文件我在oracle9i里没找到呀
      

  3.   

    在oracle10g里是有的,在9.2.0.1.0里面也没有找到呀
      

  4.   

    9的话
    C:\oracle\ora92\database
    是SPFILE ORACLE_SID.ORA
    记得重起
      

  5.   

    确保数据库init.ora文件中有以下内容:-- job_queue_processes=10(或大于10)
    -- job_queue_interval=60 (或小于60, 仅用于Oracle 8.1.x版本)
      

  6.   

    to doer_ljy(可战):
    如果时间累加溢出的话,那怎么办呢?
    只能重新建一个job了么?
      

  7.   

    手工run这个job可以吗,看看报什么错误begin
    exec dbms_job.run(num);  --num为oracle里面这个job唯一的号
    end;
    /
      

  8.   

    如果想楼上说的dbms_job.run可以执行这个job但是它不能按时启动。
    很可能是时间溢出了,删掉job定义,重建job。
    不需要删除对应的存储过程。
    当然之前你必须找出,造成时间溢出的原因。
    很可能是定义的job启动的时间间隔不对。
    dbms_job.submit的最后一个参数:'sysdate+1/1440'
    其中1/1440的含义是一天的1440分之一,也就是24*60*60/1440=一分钟,即每一分钟执行一次。
    也有可能使上几楼说的Init.ora的问题。不过在9i中默认的init.ora好像是
    init数据库名.ora,其中sid是你的数据库名。
    当然也可能有其他的原因,
    当oracle连续尝试你的job16次失败以后,会把你的Job置为broken状态。
    可以利用dbma_job.broken(jobID,false,next_date)来重新启动。
    其中jobid不用我说了吧?
    nextdate就是和'sysdate+1/1440'一样的字符串,用来定义时间间隔。