我的过程名是 dellog
请问每5分钟运行一次,该如何写。
再问下
variable v_jobnum;
execute dbms_job.submit(:v_jobnum,'dellog;',next_date,interval);
commit;
其中next_date,interval是什么意思。
next_date是不是第一次要执行的时间,interval是不是下次要执行的时间,还是只是时间间隔,如果是时间间隔,为什么给interval赋值 sysdate+1,是指每天运行一次。如果是时间间隔,那应该赋值为 1 啊 。究竟是什么意思?

解决方案 »

  1.   

    JOB实际上的工作原理是到下一个指定的具体时间执行任务
    所以next_date就是就是具体的时间,在执行的同时,要生成下一次的执行时间,就会根据interval里来生成
    我想生成的原理相当于select sysdate+1 from dual
    所以如果你的interval写1 的话
    select 1 from dual 是取不出时间
      

  2.   

    自己琢磨了一下,next_date指的是第一次执行的时间,interval并不是时间间隔,而是指下次要执行的时间.
      

  3.   

    我写的五分钟运行一次的代码如下:
    variable v_jobnum number;
    exec dbms_job.submit(:v_jobnum,'dellog;',sysdate,'sysdate+5/1440');
    commit;我的存储过程dellog 直接调用是可以执行的.
    但是oracle并没有自动执行这个过程啊,这是什么原因/
      

  4.   

    variable v_jobnum number; 
    exec dbms_job.submit(:v_jobnum,'dellog;',sysdate,'sysdate+5/1440'); 
    commit; 
    你改成这样
    variable v_jobnum number; 
    exec dbms_job.submit(:v_jobnum,'dellog;',to_date('20080425100000','yyyymmddhh24miss'),'sysdate+5/1440'); 
    commit; 
    然后再去试试
      

  5.   

    多谢楼上的大哥两次相救,这个问题我也不知道是什么原因,不过在使用了下面的处理方法后就没问题了.呵呵
    http://www.blogjava.net/pojo/archive/2007/01/03/91491.html
    CJQ0进程失效,首先设置JOB_QUEUE_PROCESSES为0,Oracle会杀掉CJQ0及相应job进程
    SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0; 等2~3分钟,重新设置SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 5; 此时PMON会重起CJQ0进程
    -----------------------------------
    若为Oracle 9.2.0.3可能有Bug ,升到9.2.0.4,9.2.0.6就OK了。