Oracle Job 定时任务执行Sql

第一步: 创建一个存储过程

1:比如创建一个存储过程名:PROC_DAYCUT_CTRL_UPDATE

plSql中执行SQL命令:

SELECT * FROM dba_Jobs a WHERE a.WHAT = 'PROC_DAYCUT_CTRL_UPDATE;';

检查是否已经存在这个存储过程,如果没有存在,则可以创建这个名

create or replace procedure PROC_DAYCUT_CTRL_UPDATE as
begin
  update t_daycut_ctrl t3 set t3.prev_settle_date=TO_DATE(to_char(sysdate,'YYYY-MM-DD'),'YYYY-MM-DD');commit;
end;
/

创建名为:PROC_DAYCUT_CTRL_UPDATE 的存储过程,执行想要的Sql

补充:查询存储过程的sql

select TEXT from user_source where name='PROC_DAYCUT_CTRL_UPDATE';

第二步:创建一个Job

plSql中执行SQL命令:

declare proc_daycut_job number;
begin
  dbms_job.submit(proc_daycut_job,
  'PROC_DAYCUT_CTRL_UPDATE;',
  sysdate,'sysdate+1/1440'); 
  end;

解释:创建了一个名字为proc_daycut_job 每分钟自动执行PROC_DAYCUT_CTRL_UPDATE存储过程的Job

第三步:运行Job

 

创建好的Job默认是开启的,所以没有必要启动,实在想启动的话,先关闭,再启动

先查询Job号:

SELECT * FROM dba_Jobs a WHERE a.WHAT = 'PROC_DAYCUT_CTRL_UPDATE;';

1:停止Job

begin
  dbms_job.broken(249, true);
  commit;
end;
/
其中 249 为查询出来的Job号

2:启动Job

begin
  dbms_job.run(249);
  commit;
end;
/

如果想删除Job

begin
  dbms_job.remove(247);
  commit; 
end;
/

第四:补充知识

SELECT * FROM dba_Jobs a WHERE a.WHAT = 'PROC_DAYCUT_CTRL_UPDATE;';

查询出来字段解释:

 

dba_jobs中几个比较重要的字段

job: 指的是job的id号。比如上面的 41

failures:job执行的时候失败次数,如果超过了15次,那么broken列将被标为Y,以后就不会运行该job了

broken:默认为N,如果为Y,意味着不再执行该job!

interval:执行job的间隔时间。

what:该job的实际工作。

其中:

描述 INTERVAL参数值

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

 

后续有很多开发填坑的文章发布,如果对你有帮助,请支持和加关注一下

http://e22a.com/h.05ApkG?cv=AAKHZXVo&sm=339944

https://shop119727980.taobao.com/?spm=0.0.0.0 

 

 

 

 

转载于:https://my.oschina.net/baishi/blog/466750

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值