2016-08-18 70 views
0

我必須創建一個調度程序作業,它每天在00:01執行鏈。DBMS_SCHEDULER JOB隨機跳過運行

如果作業執行時間超過24小時,則應在當前完成後立即開始下一次運行。

我試圖設置:

  • FREQ =每日間隔= 1個
  • FREQ =每日間隔= 1 BYHOUR = 0 BYMINUTE = 1
  • FREQ =每週BYDAY =」星期一,星期二,等...「BYHOUR = 0 BYMINUTE = 1

以上全部失敗。

實際上執行時間超過24小時,下一次作業立即執行,但也發生這樣的情況:作業跳過一天,並安排下一次運行。

編輯: 我注意到運行被跳過時(實施例): *具有這樣間隔: FREQ = WEEKLY; BYDAY =週一,週二,週三,週四,週五,週六,週日; BYHOUR = 0; BYMINUTE = 1; BYSECOND = 0

  1. 在星期一執行,一些步驟鏈被跳過(在星期一),作業已完成在星期二的執行和上wednsday設置下一次運行。

  2. 連鎖步驟(只有一個,還有更多)暫停。在星期一執行期間,我解除了這一步驟,在星期二完成了工作並在星期三設置了下一次運行。

+0

您是否設置了屬性[schedule_limit](https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_sched.htm#CIHCIDII)?檢查還查看'ALL_SCHEDULER_JOB_LOG' –

+0

我沒有設置限制。我檢查了日誌,沒有什麼有趣的 - 日誌級別已滿 – MPAW

回答

0

您是否嘗試啓用該工作?

BEGIN 
    DBMS_SCHEDULER.enable(name=>'"schema"."job_name"'); 
END; 
+0

Mopanan, 我寫了關於執行和直接下一次運行。作業已啓用。 – MPAW

+0

道歉,這是遲到了,我誤解了你的問題 – Moptan

1

以一個例子

  • 週一00:01開始,未來定於週二00:01。飾面23:07
  • 週二00:01開始,接下來的定於週三00:01,完成周三00:05
  • 週三開始於00:05(延遲,因爲週二仍在運行)

這是你需要注意的週三開始,因爲這將決定下一個開始時間。如果它設置爲「每日時間間隔= 1」,則至少在另一天不會運行。每隔一小時進行一次,但使用byhour/byminute過濾器,因此它不會每小時運行一次。

+0

謝謝你的迴應。 如果我設置「每小時時間間隔= 24 BYHOUR = 0 BYMINUTE = 1」並且它是您例子中的星期三。 它不會等待下一個00:01發生嗎? 結果下一次運行將是星期四00:01? – MPAW