oracle起定时任务

1.创建表a(用于定时任务存储数据)

create table a(a date);

2.编写一个执行函数test(用于定时任务定时调用)

create or replace procedure test as  --(函数名称,可带参数)

begin

 insert into a values(sysdate); --(这里可以写复杂sql)

end;

3.创建一个定时任务模板(现在就可以定时执行插入数据的定时任务了)

declare
job1 number;
begin
dbms_job.submit(job1,
what => 'test;',--(执行函数名称)
next_date => sysdate,
interval => 'sysdate+1/(24*60*60)'); -- (每隔1s处理一次用户表)
commit;
end;

注:Interval => TRUNC(sysdate+1)  --每天凌晨0点执行  

  Interval => TRUNC(sysdate+1)+1/24  --每天凌晨1点执行

  Interval => TRUNC(next_day(sysdate,'星期一'))+1/24 --每月1日凌晨1点执行

  Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24--每季度的第一天凌晨1点执行

  Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24--每年7月1日和1月1日凌晨1点

4.查询定时任务详情

select job,broken,what,interval,t.* from user_jobs t;

select job, next_date, next_sec, failures, broken from user_jobs;--下次执行时间

5.启用定时任务

begin
dbms_job.run(25); --(job的id)
commit;
end;

5.删除定时任务

begin

dbms_job.remove('24');

commit;

end;

原文地址:https://www.cnblogs.com/e-x-c-e-ption/p/14576280.html