君阁-笔记
1、建立存储过程,形如:
create or replace procedure deleteTableProcedures is
begin
delete POST_DAY;
delete POST_FOUL_REALTIME;
commit;
end deleteTableProcedures;
2、建立定时作业,形如:
declare
jobno number;
begin
DBMS_JOB.SUBMIT(jobno,
'DELETETABLEPROCEDURES;',
SYSDATE,'sysdate+1/24/60/30');
commit;
end;
3、执行即可
附注:
1:每分钟执行
Interval => TRUNC(sysdate,'mi') + 1/ (24*60)
或
Interval => sysdate+1/1440
2:每天定时执行
例如:每天的凌晨1点执行
Interval => TRUNC(sysdate) + 1 +1/ (24)
3:每周定时执行
例如:每周一凌晨1点执行
Interval => TRUNC(next_day(sysdate,'星期一'))+1/24
4:每月定时执行
例如:每月1日凌晨1点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24
5:每季度定时执行
例如每季度的第一天凌晨1点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24
6:每半年定时执行
例如:每年7月1日和1月1日凌晨1点
Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24
7:每年定时执行
例如:每年1月1日凌晨1点执行
Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24
以plsql为例教程如下:
最近需要写一个oracle的定时任务,以前没弄过,记录一下,我这是用PLSQL创建的
首先建一个测试表,create table t_test(time date)
写一个执行任务的存储过程
create or replace procedure proc_test as
begin
insert into t_test(time) values(sysdate);
end proc_test;
在plsql中找到DBMS_Jobs
新建一个Job
What 值里填写的存储过程名必须以;号结尾
时间间隔我这是10分钟执行一次,下一个日期可以不填
sysdate+1/(24*60*60) –1秒执行一次
TRUNC(sysdate+1) –每天凌晨0点执行
TRUNC(sysdate+1) + 2/24 –每天凌晨2点执行
翻译后的SQL:
begin
sys.dbms_job.submit(job => :job,
what => ‘proc_test’,
interval => ‘sysdate + 10/(24*60)’);
commit;
end;