程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 【Oracle】SCHEDULER使用詳解

【Oracle】SCHEDULER使用詳解

編輯:Oracle教程

SCHEDULER使用詳解:

創建SCHEDULER:

BEGIN

sys.dbms_scheduler.create_schedule(

repeat_interval => 'FREQ=DAILY;BYHOUR=15;BYMINUTE=0;BYSECOND=0',

start_date => systimestamp at time zone '+8:00',

end_date => to_timestamp_tz('2014-03-15 +8:00', 'YYYY-MM-DD TZH:TZM'),

comments => 'REBUILD INDEX',

schedule_name => '"SYS"."IDX_REBUILD"');

END;

參數解釋:

repeat_interval設置重復頻率

FREQ(指定重復頻率):

YEARLY:以年為單位,可以設置每年的哪天執行。INTERVAL重復次數。BYYEARDAY可以指定具體的日子。用1-365來表示每天,但到了閏年就是1-366。由於有二月這個不確定性的存在(例如如果設置69,則在平年指的是三月十號,閏年則會是三月九號),所以我們可以使用1-59來表示1月到2月28,-307至-1來表示2月29到12月31。之後BYHOUR,BYMINUTE,BYSECOND可以用來指定運行的具體時刻。

其他的還有MONTHLY、WEEKLY、DAILY、HOURLY、MINUTELY、SECONDLY

舉例說明:

每年的1月14和3月10日的下午3點10分5秒執行,執行三年:

repeat_interval => 'FREQ=YEARLY;INTERVAL=3;BYYEARDAY=14,-297;BYHOUR=15;BYMINUTE=10;BYSECOND=5',

MONTHLY:以月為單位,設置每個月的哪天執行:

每個月的1日、3日下午3點10分5秒執行,執行三個月:

repeat_interval => 'FREQ=MONTHLY;INTERVAL=3;BYMONTHDAY=1,3;BYHOUR=15;BYMINUTE=10;BYSECOND=5',

每周二周三下午3點10分5秒執行,執行三周:

repeat_interval => 'FREQ=WEEKLY;INTERVAL=3;BYDAY=TUE,WED;BYHOUR=15;BYMINUTE=10;BYSECOND=5',

每天下午3點10分5秒執行,執行三天

repeat_interval => 'FREQ=DAILY;INTERVAL=3;BYHOUR=15;BYMINUTE=10;BYSECOND=5',

從第一次執行的時候開始每小時執行一次,執行三次:(MINUTELY、SECONDLY和此類似,就不寫了)

repeat_interval => 'FREQ=HOURLY;INTERVAL=3',

調用當時執行一次,不重復執行:

repeat_interval => null,

start_date設置生效時間:

立即生效

start_date => systimestamp at time zone '+8:00',

2014-03-15 下午五點生效:

start_date => to_timestamp_tz('2014-03-15 17:00:00 +8:00', 'YYYY-MM-DD HH24:MI:SS TZH:TZM'),

end_date設置schedule失效時間:

如果沒有失效時間則不用設置此行。

2014-03-15下午九點結束:

end_date => to_timestamp_tz('2014-03-15 21:10:00 +8:00', 'YYYY-MM-DD HH24:MI:SS TZH:TZM'),

comments 對於scheduler的一些描述,沒有可以不寫。

schedule_name:schedule的所屬用戶和名字

sys用戶的,名字為IDX_REBUILD

schedule_name => '"SYS"."IDX_REBUILD"');

修改SCHEDULER:

BEGIN

sys.dbms_scheduler.set_attribute( name => '"SYS"."DAILYREBUILD"', attribute => 'repeat_interval', value => 'FREQ=WEEKLY;BYHOUR=14;BYMINUTE=0;BYSECOND=0');

sys.dbms_scheduler.set_attribute( name => '"SYS"."DAILYREBUILD"', attribute => 'start_date', value => systimestamp at time zone '+8:00');

sys.dbms_scheduler.set_attribute( name => '"SYS"."DAILYREBUILD"', attribute => 'end_date', value => to_timestamp_tz('2014-03-15 +8:00', 'YYYY-MM-DD TZH:TZM'));

END;

name :修改的scheduler的所屬用戶以及名字

attribute:修改的參數名

value:修改後的參數值

刪除SCHEDULER:

BEGIN

dbms_scheduler.drop_schedule( schedule_name => ’DAILYREBUILD’, force => FALSE);

END;

只有兩個參數

schedule_name:schedule的名字

force:如果是FALSE則如果有其他的job在使用這個schedule就不會刪除這個schedule,如果是TRUE則不管有沒有其他job使用這個schedule都會將這個schedule刪除。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved