资源描述:
《ORACLE数据库DBMS_JOB的创建与使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、目录[-]·创建DBMS_JOB·查看所有的JOB·停止JOB·启动JOB·删除JOB·修改JOB·关于interval的一些设置技巧创建DBMS_JOB 使用以下语句:?12345678910VARIABLE jobno number;begin DBMS_JOB.SUBMIT( :jobno, --job号,ORACLE自动分配 'your_procedure;', --执行的存储过程或SQL语句,';'不能省略 next_date, --下次执行时间 'interval' --每次间隔时间,以天为单位 );
2、 commit;end;例子:作为示范,先创建一张简单的表:?12CREATE TABLE T_TIME( JOB_TIME DATE not null3);每分种为T_TIME表插入一条数据:?12345678910VARIABLE jobno number;begin DBMS_JOB.SUBMIT( :jobno, 'insert into T_TIME values (sysdate);', Sysdate, 'sysdate+1/24/60' ); commit;end;每天删除前一天的数据
3、:?12345678910VARIABLE jobno number;begin DBMS_JOB.SUBMIT( :jobno, 'delete T_TIME where JOB_TIME < sysdate-1;', Sysdate, 'sysdate+1/24' ); commit;end;查看所有的JOB?1select * from user_jobs;job:jobwhat:执行的存储过程或SQL语句failures:失败次数broken:状态停止JOB?1BEGIN DBMS_JOB.BROKE
4、N(jobno, TRUE); END;参数jobno为对应的JOB号,如BEGINDBMS_JOB.BROKEN(2,TRUE);END;启动JOB?1BEGIN DBMS_JOB.run(jobno); END;参数jobno为对应的JOB号删除JOB?1BEGIN DBMS_JOB.remove(jobno); END;参数jobno为对应的JOB号修改JOB修改运行的内容?12345BEGIN DBMS_JOB.what( jobno, --对应的job号 'your_procedure;' --执行的存储过程或SQ
5、L语句,';'不能省略); END;修改时间间隔?123BEGIN DBMS_JOB.interval( jobno, --对应的job号 'interval' --每次间隔时间,以天为单位4); END;修改下一次执行时间?1234BEGIN DBMS_JOB.next_date( jobno, --对应的job号 next_date, --下次执行时间); END;关于interval的一些设置技巧关于job运行时间1:每分钟执行Interval=>TRUNC(sysdate,'mi')+1/(24*60)
6、2:每天定时执行例如:每天的凌晨1点执行Interval=>TRUNC(sysdate)+1+1/(24)3:每周定时执行例如:每周一凌晨1点执行Interval=>TRUNC(next_day(sysdate,'星期一'))+1/244:每月定时执行例如:每月1日凌晨1点执行Interval=>TRUNC(LAST_DAY(SYSDATE))+1+1/245:每季度定时执行例如每季度的第一天凌晨1点执行Interval=>TRUNC(ADD_MONTHS(SYSDATE,3),'Q')+1/246:每半年定时执行例如:每年7月1日和1月1日
7、凌晨1点Interval=>ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/247:每年定时执行例如:每年1月1日凌晨1点执行Interval=>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24job的运行频率设置1.每天固定时间运行,比如早上8:10分钟:Trunc(Sysdate+1)+(8*60+10)/24*602.Toad中提供的:每天:trunc(sysdate+1)每周:trunc(sysdate+7)每月:trunc(sysdate+30)每个星期日:next_da
8、y(trunc(sysdate),'星期日')每天6点:trunc(sysdate+1)+6/24半个小时:sysdate+30/(24*60)3.每个小时的第15