您的位置:首页 > 数据库 > Oracle

Oracle Job 定时任务执行Sql

2015-06-15 00:00 681 查看
摘要: 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息