您的位置 首页 > 娱乐休闲

关于Oracle数据库定时任务Job的至简教程

抛去理论,直奔主题,三步创建简单的Oracle定时任务:

1、新建测试表 job_test 及测试序列 seq_test

  • 测试表job_test建表语句:create table job_test(id number,createTime date);

  • 测试序列seq_test穿件语句:create sequence seq_test;

2、创建测试存储过程proc_test


create or replace procedure proc_test as

begin

insert into job_test(id,createTime) value);

commit;

end;

/

3、创建定时任务job_test

VARIABLE jobno number;

begin

DBMS_JOB.SUBMIT(:jobno,'proc_test;',SYSDATE,'SYSDATE+1/(60*24)');--每隔1分钟执行一次

commit;

end;

/

至此,简单的定时任务创建完成。自定时任务创建开始,每间隔1分钟将执行一次存储过程(即向job_test表中插入测试数据),验证如下:


延伸

  • 查看当前正在运行的定时任务:select job_id,next_date,next_sec from user_jobs;

  • 终止正在执行的定时任务: exec dbm(job_id);

  • JOB定时任务中一些常见的执行时间整理如下:

1)每分钟

TRUNC(sysdate,'mi')+1/(24*60)

2)按天定时

每天凌晨0点执行

TRUNC(sysdate+1)

每天凌晨1点执行

TRUNC(sysdate+1)+1/24

每天早上8点30分执行

TRUNC(SYSDATE+1)+(8*60+30)/(24*60)

3)按周定时

每周一的凌晨02点

TRUNC(next_day(sysdate,1))+2/24

TRUNC(next_day(sysdate,'星期一'))+2/24

每周二的中午12点

TRUNC(next_day(sysdate,2))+12/24

TRUNC(next_day(sysdate,'星期二'))+12/24

4)按月定时

每月1号凌晨0点

TRUNC(LAST_DAY(SYSDATE)+1)

每月1号凌晨01点

TRUNC(LAST_DAY(SYSDATE)+1)+1/24

5)按季度定时

每个季度第一天的0点

TRUNC(ADD_MONTHS(SYSDATE,3),'q')

每个季度第一天的02点

TRUNC(ADD_MONTHS(SYSDATE,3),'q')+2/24

每个季度最后一天晚上11点

TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),'q')-1/24

6)按半年定时

每年7月1号和1月1号凌晨01点

ADD_MONTHS(TRUNC(sysdate,'yyyy'),6)+1/24

7)按年定时

每年1月1号的02点执

ADD_MONTHS(TRUNC(sysdate,'yyyy'),12)+2/24

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“关于Oracle数据库定时任务Job的至简教程”边界阅读