我在Oracle 10g中定义了一个JOB,其中间隔为5秒 即 sysdate + (5/(24*60*60)) ,可是观察发现作业不是5秒一次,而是10秒执行一次,请问这是怎么回事,如果这里没有问题,是初始化文件的问题,我该如何找到初始化文件进行如何设定,我该如何设定每隔5秒执行1次的作业。谢谢各位指教!

解决方案 »

  1.   

    9i之前有个job_queue_interval 参数可以修改job刷新频率。到9i这个参数已经废弃了,不清楚alter system set job_queue_processes=5 scope=spfile;重启数据库会不会起作用,楼主试试。
      

  2.   

    job是在执行完成之后才计算next_time的
    你的job执行时间是多少?
      

  3.   

    job是在执行完成之后才计算next_time的
    你的job执行时间是多少?
      

  4.   

    我的job执行时间为0.017秒,也不会要等到10秒以后在执行下一次吧?
      

  5.   

    你是怎么观察是10秒出发一次。看一下select * from dba_jobs  具体多长时间执行一下。
      

  6.   

    我在JOB有个向一个表中插入记录,其中设有插入时间。我看到插入时间间隔是10秒,但我运行select * from dba_jobs ,发现Last_Date 与Next_date 差额确实是5秒,this_date 是空。但在下一次Select时,发现Last_Date与上一次Last_date 差额确实10秒。这个是怎么回事?
      

  7.   

    查找了一天的资料,终于找到解答的方法了,散分给楼上的各位朋友,感谢各位的捧场,也将解决的方法写在上面,给后面的人一盏明灯吧。
    9i以后的版本都取消了job_queue_interval,而其默认的是10秒,所以只要你设置小于10秒中的间隔,都会按10秒进行JOB。所以设置alter system set job_queue_interval=1 scope=spfile; 然后重启数据库即可。