共計(jì) 4511 個(gè)字符,預(yù)計(jì)需要花費(fèi) 12 分鐘才能閱讀完成。
如何設(shè)置 Repeat Interval 參數(shù),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面丸趣 TV 小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
設(shè)置 Repeat Interval
Job 和 Schedule 中 REPEAT_INTERVAL 參數(shù)都是用來控制執(zhí)行的頻率或周期,雖然說周期是一個(gè)時(shí)間性概念,不過 REPEAT_INTERVAL 指定的時(shí)候并不是一個(gè)時(shí)間值,而是由一組關(guān)鍵字描述的時(shí)間。
除了前面介紹 Job 和 Schedule 的 REPEAT_INTERVAL 參數(shù)時(shí),提到該參數(shù)擁有 FREQ 以及 INTERVAL 兩個(gè)關(guān)鍵字,其實(shí)除此之外,還有如 BYMONTH、BYWEEKNO、BYYEARDAY、BYDATE 等等參數(shù),可以用來進(jìn)行更精確的定義,比如通過 BYMONTH 關(guān)鍵字指定調(diào)度運(yùn)行的月份,BYDAY 指定調(diào)度在哪天運(yùn)行等等。
REPEAT_INTERVAL 參數(shù)的詳細(xì)語法如下:
repeat_interval = regular_schedule | combined_schedule
==============================
regular_schedule = frequency_clause
[ interval_clause] [ bymonth_clause] [ byweekno_clause]
[ byyearday_clause] [ bydate_clause] [ bymonthday_clause]
[ byday_clause] [ byhour_clause] [ byminute_clause]
[ bysecond_clause] [ bysetpos_clause] [ include_clause]
[ exclude_clause] [ intersect_clause][ periods_clause]
[ byperiod_clause]
==============================
combined_schedule = schedule_list [ include_clause]
[ exclude_clause] [ intersect_clause]
frequency_clause = FREQ = ( predefined_frequency | user_defined_frequency )
predefined_frequency = YEARLY | MONTHLY | WEEKLY | DAILY |
HOURLY | MINUTELY | SECONDLY
user_defined_frequency = named_schedule
==============================
interval_clause = INTERVAL = intervalnum
intervalnum = 1 through 99
bymonth_clause = BYMONTH = monthlist
monthlist = monthday ( , monthday)*
month = numeric_month | char_month
numeric_month = 1 | 2 | 3 … 12
char_month = JAN | FEB | MAR | APR | MAY | JUN |
JUL | AUG | SEP | OCT | NOV | DEC
byweekno_clause = BYWEEKNO = weeknumber_list
weeknumber_list = weeknumber ( , weeknumber)*
weeknumber = [minus] weekno
weekno = 1 through 53
byyearday_clause = BYYEARDAY = yearday_list
yearday_list = yearday ( , yearday)*
yearday = [minus] yeardaynum
yeardaynum = 1 through 366
bydate_clause = BYDATE = date_list
date_list = date ( , date)*
date = [YYYY]MMDD [ offset | span ]
bymonthday_clause = BYMONTHDAY = monthday_list
monthday_list = monthday ( , monthday)*
monthday = [minus] monthdaynum
monthdaynum = 1 through 31
byday_clause = BYDAY = byday_list
byday_list = byday ( , byday)*
byday = [weekdaynum] day
weekdaynum = [minus] daynum
daynum = 1 through 53 /* if frequency is yearly */
daynum = 1 through 5 /* if frequency is monthly */
day = MON | TUE | WED | THU | FRI | SAT | SUN
byhour_clause = BYHOUR = hour_list
hour_list = hour ( , hour)*
hour = 0 through 23
byminute_clause = BYMINUTE = minute_list
minute_list = minute ( , minute)*
minute = 0 through 59
bysecond_clause = BYSECOND = second_list
second_list = second ( , second)*
second = 0 through 59
bysetpos_clause = BYSETPOS = setpos_list
setpos_list = setpos (, setpos)*
setpos = [minus] setpos_num
setpos_num = 1 through 9999
==============================
include_clause = INCLUDE = schedule_list
exclude_clause = EXCLUDE = schedule_list
intersect_clause = INTERSECT = schedule_list
schedule_list = schedule_clause (, schedule_clause)*
schedule_clause = named_schedule [ offset ]
named_schedule = [schema .] schedule
periods_clause = PERIODS = periodnum
byperiod_clause = BYPERIOD = period_list
period_list = periodnum (, periodnum)*
periodnum = 1 through 100
==============================
offset = (+ | –) [OFFSET:] duration_val
span = (+ | – | ^) SPAN: duration_val
duration_val = dur-weeks | dur_days
dur_weeks = numofweeks W
dur_days = numofdays D
numofweeks = 1 through 53
numofdays = 1 through 376
minus = –
這個(gè)語法形式看起來復(fù)雜無比,其實(shí)實(shí)用起來很簡(jiǎn)單,之所以看起來復(fù)雜,是因?yàn)槠涔δ芴^靈活 (之前的三思系列筆記中,已經(jīng)闡述過靈活與復(fù)雜的關(guān)系),這里不準(zhǔn)備逐條解釋每一個(gè)語法細(xì)節(jié),下面將著重通過一些常用設(shè)置,希望能夠更有助于廣大同仁的理解。
例如:設(shè)置任務(wù)僅在周 5 的時(shí)候運(yùn)行:
REPEAT_INTERVAL = FREQ=DAILY; BYDAY=FRI
REPEAT_INTERVAL = FREQ=WEEKLY; BYDAY=FRI
REPEAT_INTERVAL = FREQ=YEARLY; BYDAY=FRI
上述三條語句雖然指定的關(guān)鍵字小有差異,不過功能相同。
設(shè)置任務(wù)隔一周運(yùn)行一次,并且僅在周 5 運(yùn)行:
REPEAT_INTERVAL = FREQ=WEEKLY; INTERVAL=2; BYDAY=FRI
設(shè)置任務(wù)在當(dāng)月最后一天運(yùn)行:
REPEAT_INTERVAL = FREQ=MONTHLY; BYMONTHDAY=-1
設(shè)置任務(wù)在 3 月 10 日運(yùn)行:
REPEAT_INTERVAL = FREQ=YEARLY; BYMONTH=MAR; BYMONTHDAY=10
REPEAT_INTERVAL = FREQ=YEARLY; BYDATE=0310
上述兩條語句功能相同。
設(shè)置任務(wù)每 10 隔天運(yùn)行:
REPEAT_INTERVAL = FREQ=DAILY; INTERVAL=10
設(shè)置任務(wù)在每天的下午 4、5、6 點(diǎn)時(shí)運(yùn)行:
REPEAT_INTERVAL = FREQ=DAILY; BYHOUR=16,17,18
設(shè)置任務(wù)在每月 29 日運(yùn)行:
REPEAT_INTERVAL = FREQ=MONTHLY; BYMONTHDAY=29
設(shè)置任務(wù)在每年的最后一個(gè)周 5 運(yùn)行:
REPEAT_INTERVAL = FREQ=YEARLY; BYDAY=-1FRI
設(shè)置任務(wù)每隔 50 個(gè)小時(shí)運(yùn)行:
REPEAT_INTERVAL = FREQ=HOURLY; INTERVAL=50
另外,你是否在懷念常規(guī) job 中設(shè)置 interval 的簡(jiǎn)便,雖然功能較弱,但是設(shè)置操作非常簡(jiǎn)單,無須懊惱,其實(shí) SCHEDULER 中的 REPEAT_INTERVAL 也完全可以按照那種方式設(shè)置,前面都說了,REPEAT_INTERVAL 實(shí)際上是指定周期,直接指定一個(gè)時(shí)間值,當(dāng)然也是周期嘍。
比如說,設(shè)置任務(wù)每天執(zhí)行一次,也可以設(shè)置 REPEAT_INTERVAL 參數(shù)值如下:
REPEAT_INTERVAL = trunc(sysdate)+1
又比如設(shè)置任務(wù)每周執(zhí)行一次:
REPEAT_INTERVAL = trunc(sysdate)+7
不過需要注意,這種方式僅用于創(chuàng)建 SCHEDULER 中 jobs 時(shí)使用,不能用于 schedule。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝您對(duì)丸趣 TV 的支持。