如果把初始化参数J O B _ Q U E U E _ P R O C E S S E S设置为本0,我们仍然可以发布S U B M I T命令
而不会出错。但在这种情况下,作业无法运行。这样一来,为了观察过程Te m p I n s e r t对表
t e m p _ t a b l e的插入操作,我们至少要把J O B _ Q U E U E _ P R O C E S S E S的值设置为1。如果
J O B _ Q U E U E _ I N T E RVA L是其默认值( 6 0 s),则作业可能不会在9 0 s后开始运行。在运行该作业
所需时间之后的9 0 s内,该作业将被标记为就绪运行状态。然而,该作业的真正运行时间是在
S N P进程唤醒后才可能开始,(唤醒S N P需要6 0 s时间)。因此,在该作业再次运行前,有可能要
等待长达1 5 0 s。例如,下面是作业运行三次后表Te m p _ t b a l e的输出样本:
SQL> SELECT * FROM temp_table;
NUM_COL CHAR_COL
--------- -------------------------
1 25-APR-1999 18:18:59
2 25-APR-1999 18:21:02
3 25-APR-1999 18:23:05
在上例中,在作业第一次和第二次运行期间,以及第二次和第三次运行之间的间隔都是
1 2 3 s,而不是90s

解决方案 »

  1.   

    先谢谢w_tsinghua()朋友
    不过没看懂什么意思?
      

  2.   

    declare
    n number;
    begin
    dbms_job.submit(n,'show;',sysdate,'trunc(sysdate)+46/24)');
    commit;
    end;
    /
      

  3.   

    我说意思的是job的启动时间可能是变化的(变化的范围根据你的设置而定),job的下一次启动时间应该是上一次启动时间+interval,但是真正启动时间是在S N P进程唤醒后才可能开始的.
      

  4.   

    VARIABLE jobno number;
    begin
          DBMS_JOB.SUBMIT(:jobno, 
                  'show;', 
                   SYSDATE, 'trunc(sysdate,'D')+46/24');
             commit;
    end;