oracle的定时器

时间:2024-10-17 07:55:14

、把init.ora中如下两个参数打开
JOB_QUEUE_INTERVAL=60
JOB_QUEUE_PROCESSES=4
job_queue_keep_connections=true
//位置位于:D:/oracle/admin/alpha/pfile下的init.ora文件内
2、定义job
 variable job number;
 begin
   sys.dbms_job.submit(job => :job,  --job编号,唯一标识
                       what => 'begin  --job内容,调用存储过程,以begin和end开头
         insert_t2;
         end;',
         --本次执行完后,下一次执行job时间
                       next_date => to_date('05-01-2005 10:22:05', 'dd-mm-yyyy hh24:mi:ss'),
                       --执行条件
                       interval => 'sysdate+1');
   commit;
 end;
 /
删除job:dbms_job.remove(jobno);
修改job:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改间隔时间:dbms_job.interval(job,interval);

3、常见的时间函数

30分钟:(sysdate+1)/48
1个小时:(sysdate+1)/24
一天:sysdate+1
一个星期: sysdate+7
每个星期五中午:
NEXT_DAY(TRUNC(SYSDATE),'星期五') + 12/24
一个月:add_months(sysdate,1) --可以为正负数
一年:add_months(sysdate,12)
月份加减:select to_char(add_months(sysdate,-1),'yyyymm') from dual;
日期加减:select to_char(sysdate-1,'yyyymmdd') from dual;