begin
  sys.dbms_job.submit(job => :job,
                      what => 'INSERTDAILY;',
                      next_date => to_date('26-08-2011', 'dd-mm-yyyy'),
                      interval => 'TRUNC(SYSDATE + 1)');
  commit;
end;
/
我设置的是每天晚上 00:00:00 执行,为什么它不执行呢?

解决方案 »

  1.   

    改成00:00:01吧,整点运行有时候,oracle算时间的时候会出现纰漏。
      

  2.   

    查看初始化参数job_queue_processes
    是否被设置
      

  3.   

    看看下面你赋权之类的有没有做:
    1、确保Oracle已配置任务队列管理器的启动参数 
       initSID.ora中: 
         job_queue_process=n(0);(0-36)个进程 
         job_queue_interval=N(60);(1-3600)秒唤醒 
      
    2、将任务加入数据库的任务队列中 
       DBMS_JOB.Submit ( 
               job        out binary_integer,  (任务号) 
               what       in  varchar2,        (执行任务的名称及入参) 
               next_date  in  date,            (任务执行的时间) 
               interval   in  varchar2,        (任务执行的间隔。null:执行一次;sysdate+m:周期性,每隔m天执行) 
               no_parse   in  boolean 
                       ) 
       同时 
       grant execute on dbms_job to ...; 
      
    3、将要执行的任务,为存储过程等PL/SQL程序段 
       SQL> variable n number; 
       SQL> begin 
          2   dbms_job.submit(n, 'my_job', sysdate, 'sysdate + 1/360'); 
          3   commit; 
          4 end 
          5 / 
       SQL> print :n; 
      
    4、查看Job 
       Table :user_jobs、dba_jobs 
       Column:job       (任务号) 
               next_date (下次执行日期) 
               next_sec  (下次执行时间) 
               failures  (失败次数,失败16次则自动终止) 
               broken    (终止标志,Y/N)