请问我ORACLE中的JOB为什么不自动执行呢?通过RUN()函数可以手动执行一次,这是什么原因呢?

解决方案 »

  1.   

    使用Submit()过程。
    这个过程有五个参数:job、what、next_date、interval与no_parse。PROCEDURE Submit ( job       OUT binary_ineger,
                       What      IN  varchar2,
                       next_date IN  date,
                       interval  IN  varchar2,
                       no_parse  IN  booean:=FALSE)job参数是由Submit()过程返回的binary_ineger。这个值用来唯一标识一个工作。
    what参数是将被执行的PL/SQL代码块。
    next_date参数指识何时将运行这个工作。
    interval参数何时这个工作将被重执行。
    no_parse参数指示此工作在提交时或执行时是否应进行语法分析——TRUE
    指示此PL/SQL代码在它第一次执行时应进行语法分析,
    而FALSE指示本PL/SQL代码应立即进行语法分析。举例:
    SQL> variable job1 number;
    SQL> 
    SQL> begin
      2  dbms_job.submit(:job1,'PROC;',to_date('2008-8-8 00:00:00','yyyy-mm-dd hh24:mi:ss'),'sysdate+1/1440');  --2008/8/8 0点开始运行,每天1440分钟,一分钟运行PROC一次
      3  end;
      4  /
      

  2.   

    alter system set job_queue_processes =10;
      

  3.   

    commad 下面 execute dbms_job.broken(job的id,false);
    这样就可以了。你看job可以看到broken的勾已经没有了。
      

  4.   

    用PL/SQL联接数据库,左边找到JOB,点右键编辑,可以设置立即运行,还可以修改别的参数。
      

  5.   

    没有commitSQL> variable job1 number;
    SQL> 
    SQL> begin
      2  dbms_job.submit(:job1,'PROC;',to_date('2008-8-8 00:00:00','yyyy-mm-dd hh24:mi:ss'),'sysdate+1/1440');  --2008/8/8 0点开始运行,每天1440分钟,一分钟运行PROC一次
        commit;
      3  end;
      4  /