Oracle創建定時任務,下面以創建一個每天凌晨3點鍾執行的定時任務為實例。
1、創建定時任務
DECLARE
JOB_ID PLS_INTEGER;
BEGIN
SYS.DBMS_JOB.SUBMIT(JOB => JOB_ID,
WHAT => 'PRO_JOB;',
INTERVAL => 'TRUNC(SYSDATE) + 1 + 3 / (24)');
COMMIT;
END;
PRO_JOB是你要執行的存儲過程名稱,多個存儲過程已分號分割,注意最后面也有一個分號。
2、查詢定時任務
SELECT * FROM DBA_JOBS;
SELECT * FROM USER_JOBS;
3、手動執行定時任務
BEGIN
DBMS_JOB.RUN(643); --643為任務的ID
END;
4、任務重復運行間隔設計
4.1 在特定時間間隔后,重復運行該任務
SYSDATE+n’,n泛指一個以天為單位的時間間隔.eg:
描述 Interval參數值
每天運行一次 ‘SYSDATE+1′
每小時運行一次 ‘SYSDATE+1/24′
10分鍾運行一次 ‘SYSDATE+10/(60*24)’
每30秒運行一次 ‘SYSDATE+30/(60*24*60)’
每星期運行一次 ‘SYSDATE+7′
注:此任務表達式不能保證任務的下一次運行時間在特定的日期或者時間,只能夠指定一個任務兩次運行之間的時間間隔。
4.2 在特定的日期和時間運行任務
定時到特定日期或時間的任務,eg:
描述 Lnterval參數值
每天午夜12點 ‘TRUNC(SYSDATE+1)’
每天早上8點30分 ‘TRUNC(SYSDATE+1)+(8*60+30)/(24*60)’
每星期二中午12點 ‘NEXT_DAY(TRUNC(SYSDATE),”TUESDAY”)+12/24′
每個月第一天的午夜12點 ‘TRUNC(LAST_DAY(SYSDATE)+1)’
每個季度最后一天的晚上11點 ‘TRUNC(ADD_MONTHS(SYSDATE+2/24,3),’Q')-1/24′
每星期六,日早上6點10分 ‘TRUNC(LEAST(NEXT_DAY(SYSDATE,”SATURDAY”),
NEXT_DAY(SYSDATE,”SUNDAY”)))+(6*60+10)/(24*60)’