oracle 在哪里编写job,Oracle作业任务job如何使用?

1566991132648190.png

oracle中的作业任务job,可以在你规定的时间里执行指定的存储过程,定时执行一个任务。

1、创建测试表

create table test1(a date);

2、创建存储过程create or replace procedure myproc as

begin

insert into test1 values(sysdate);

end;

/

3、创建jobdeclare job1 number;

begin

dbms_job.submit(job1,'MYPROC;',sysdate,'sysdate+1/1440');//每分钟执行一次

commit;

end;

或者declare

job2 number;

begin

dbms_job.submit(job => job2,

what => 'myproc;',

next_date => sysdate,

interval => 'sysdate+1/1440');

commit;

end;

4、查询jobselect 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

begin

dbms_job.run(27);

end;

6、删除jobbegin

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分钟运行一次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点运行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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值