[20211202]FREQ=WEEKLY FREQ=DAILY是等價的.txt

lfree發表於2021-12-02

[20211202]FREQ=WEEKLY FREQ=DAILY是等價的.txt

--//今天維護,我發現SCHEDULER_WINDOWS的window_name屬性被人改動了。

--//生產環境:
> select * from DBA_SCHEDULER_WINDOWS where window_name in ('SATURDAY_WINDOW')
  2  @ pr
==============================
WINDOW_NAME                   : SATURDAY_WINDOW
RESOURCE_PLAN                 : DEFAULT_MAINTENANCE_PLAN
SCHEDULE_OWNER                :
SCHEDULE_NAME                 :
SCHEDULE_TYPE                 : CALENDAR
START_DATE                    :
REPEAT_INTERVAL               : FREQ=WEEKLY;BYDAY=SAT;BYHOUR=0;BYMINUTE=0;BYSECOND=0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
END_DATE                      :
DURATION                      : +000 05:00:00
~~~~~~~~~~~~~~~~~~~~~~
WINDOW_PRIORITY               : LOW
NEXT_START_DATE               : 2021-12-04 00:00:00.000000 +08:00
LAST_START_DATE               : 2021-11-27 00:00:00.009913 +08:00
ENABLED                       : TRUE
ACTIVE                        : FALSE
MANUAL_OPEN_TIME              :
MANUAL_DURATION               :
COMMENTS                      : Saturday window for maintenance tasks
PL/SQL procedure successfully completed.

--//測試環境:
SYS@book> select * from DBA_SCHEDULER_WINDOWS where window_name in ('SATURDAY_WINDOW')
  2  @ pr
==============================
WINDOW_NAME                   : SATURDAY_WINDOW
RESOURCE_PLAN                 : DEFAULT_MAINTENANCE_PLAN
SCHEDULE_OWNER                :
SCHEDULE_NAME                 :
SCHEDULE_TYPE                 : CALENDAR
START_DATE                    :
REPEAT_INTERVAL               : freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
END_DATE                      :
DURATION                      : +000 20:00:00
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WINDOW_PRIORITY               : LOW
NEXT_START_DATE               : 2021-12-04 06:00:00.000000 +08:00
LAST_START_DATE               : 2021-11-06 06:00:00.010170 +08:00
ENABLED                       : TRUE
ACTIVE                        : FALSE
MANUAL_OPEN_TIME              :
MANUAL_DURATION               :
COMMENTS                      : Saturday window for maintenance tasks
PL/SQL procedure successfully completed.

--//可以發現對方修改2個屬性FREQ=WEEKLY,並且0點開始執行,持續時間5個小時。
--//我自己從來也沒有注意FREQ=WEEKLY 與 FREQ=daily有什麼區別,看了半天也沒有什麼發現區別在那裡。
--//查詢發現如下連結blog.csdn.net/haogexiaole/article/details/80835868

REPEAT_INTERVAL結構為:REPEAT_INTERVAL => 'Freq=Minutely;Interval=5'

FREQ 關鍵字用來指定間隔的時間週期,可選引數有:YEARLY(年), MONTHLY(月), WEEKLY(周), DAILY(日), HOURLY(時), MINUTELY(分),
SECONDLY(秒)等單位。

INTERVAL 關鍵字用來指定間隔的頻繁,可指定的值的範圍從1-999。

BYHOUR  指定一天中的小時。可指定的值的範圍從1-24。16,17,18就表示每天下午的4、5、6點。

BYDAY 關鍵字用來指定每週的哪天執行。

BYMONTHDAY 關鍵字用來指定每月中的哪一天。-1 表示每月最後一天。

BYMONTH  關鍵字用來指定每年的月份。

BYDATE 指定日期。0310就表示3月10日。

例如:
執行每星期五。(所有這三個例子是等價的。)

FREQ=DAILY; BYDAY=FRI;  
FREQ=WEEKLY; BYDAY=FRI;  
FREQ=YEARLY; BYDAY=FRI;  

--//另外我時候覺得oracle把這部分內容搞得特別複雜,採用類似物件導向的設計,非常容易混亂。好在這方面的維護需求很少。
--//特此做一個記錄,找這個檢視我就浪費不少時間。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2845297/,如需轉載,請註明出處,否則將追究法律責任。

相關文章