ORCLE10g 数据库定时任务

如果想让oracle 数据库定时执行一个什么任务,可以用如下的方法实现:
上例子:

准备东西:

  1. create table t3(k integer primary key,  d date);   -- 例子表  
  2.   
  3. create sequence seq_test start with 1 increment by 1;   --例子序列  
  4.       
  5. create or replace procedure insert_into_t3 as  --例子过程  
  6. begin  
  7.   insert into t3 (k, d) values (seq_test.nextval, sysdate); --把t1里面的相关数据插到t2中    
  8.   commit; --插入一条记录commit一次    
  9. end;  




下面的代码,将每分钟执行一下上面的insert_into_t3过程

  1. var job number;  
  2.   
  3. begin  
  4.    dbms_job.submit(  
  5.      job => :job,  
  6.      what => 'insert_into_t3;',  
  7.      next_date => to_date('2014-06-17 12:35:00','yyyy-MM-dd hh24:mi:ss'),  
  8.      interval => 'sysdate+1/(24*60)'  
  9.   );  
  10.   commit ;  
  11. end;  



可以通过下面的语句查询一下任务列表:

  1. SELECT * from user_jobs order by next_date;  



如果想手动触发一下任务,可以用如下语句:

  1. begin    
  2.       dbms_job.run(jobNum);    
  3. end;    
  4. /    



通过下面的语句删除任务

  1. begin    
  2.       dbms_job.remove(jobNum);    
  3. end;    
  4. /    



注意:有一个系统参数需要特别注意:job_queue_processes
如果 show parameter job_queue_processes 显示其值为0,则定时任务不会执行。
需要用如下语句给它设置一个>0的值。例如:
alter system set job_queue_processes=10

猜你喜欢

转载自jieyanqulaopo.iteye.com/blog/2157859