oracle任务job
1)创建测试表
|
1
|
create table test1(a date); |
2)创建存储过程
|
1
2
3
4
5
|
create or replace procedure myproc asbegin insert into test1 values(sysdate);end;/ |
3)创建job
|
1
2
3
4
5
|
declare job1 number;begin dbms_job.submit(job1,'MYPROC;',sysdate,'sysdate+1/1440');//每分钟执行一次 commit;end; |
---------------------------或者-------------------------------
|
1
2
3
4
5
6
7
8
9
|
declare job2 number;begin dbms_job.submit(job => job2, what => 'myproc;', next_date => sysdate, interval => 'sysdate+1/1440'); commit;end; |
4)查询job
|
1
|
select job, broken, what, interval from user_jobs t; |
JOB BROKEN WHAT INTERVAL
1 27 N MYPROC; sysdate+1/1440
2 25 N p_auto_del_mobile_gxxj; sysdate+1
3 26 N p_auto_del_mobile_gxxj; sysdate+1
5)运行job
|
1
2
3
|
begin dbms_job.run(27);end; |
6)删除job
|
1
2
3
|
begin dbms_job.remove(25); end; |
job: 指的是job的id号。比如下面的 23
failures:job执行的时候失败次数,如果超过了15次,那么broken列将被标为Y,以后就不会运行该job了
broken:默认为N,如果为Y,意味着不再执行该job!
interval:执行job的间隔时间。
what:该job的实际工作
sysdate+1/2 每隔12小时执行一次
sysdate+3/1440 每隔 3 分钟执行一次
trunc(sysdate+1) 每天凌晨
trunc(sysdate+7) 每七天凌晨
trunc(sysdate+30) 每30天凌晨
next_day(trunc(sysdate), ''sunday'') 每周日凌晨
trunc(sysdate+1)+6/24 每天6点
trunc(sysdate+1)+1/3 每天的8点运行
sysdate+30/1440 每30分钟
trunc(last_day(sysdate)) + 1 每月第一天凌晨
trunc(last_day(sysdate)) + 1 + 8/24 + 30/1440 每月第一天8点半
每天的8点到20点之点,每隔15分钟运行一次
|
1
2
3
4
5
6
7
|
case when to_number(to_char(sysdate, 'hh24')) >= 8 and to_number(to_char(sysdate, 'hh24')) <= 20 then sysdate + 15 / 1440 else trunc(sysdate + 1) + 1 / 3 end |
6-10月份,每隔30天的凌晨开始运行,其余月份每隔一天早上4点运行
|
1
2
3
4
5
6
7
|
case when to_number(to_char(sysdate, 'mm')) >= 6 and to_number(to_char(sysdate, 'mm')) <= 10 then trunc(sysdate + 30) else trunc(sysdate + 1) + 1 / 6 end |
作者:架构师小跟班
开发者导航: http://www.codernav.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出,以免更多的人被误导。

浙公网安备 33010602011771号