如圖1所示,任務類將調度系統(tǒng)與資源治理系統(tǒng)連接起來,使你可以控制如何將數據庫資源分配給正在運行的任務。利用任務類將一個任務下達到資源使用者組,該組是一個共享 CPU 時間、并行操作和其它資源分配的會話期組。然后,你可以利用資源計劃來控制將這些資源分配給這個使用者組或其它使用者組。圖2 顯示出調度程序窗口如何控制不同資源計劃在何時被激活。圖2 還顯示一個窗口組,它將類似的窗口組合成一個單一的實體。窗口和窗口組使你可以在很好地控制如何將數據庫資源分配給不同的任務類。
要創(chuàng)建一個重復性任務,你首先需要定義程序和調度表。假定你需要在每隔一天的下午6:00加載一個外部表。首先創(chuàng)建一個調度程序,它提供一個 PL/SQL 塊以執(zhí)行該加載。代碼清單1中的PL/SQL 塊發(fā)出一個對DBMS_SCHEDULER.CREATE_PROGRAM的調用,作為程序操作所提供的 PL/SQL 塊包含有一個簡單的INSERT...SELECT FROM 語句,用于從該外部表中載入新的客戶。
接著,創(chuàng)建一個調度表,根據該調度表運行該程序。代碼清單2 給出一個對DBMS_SCHEDULER.CREATE_SCHEDULE的調用,用于創(chuàng)建我的 PERIODICLOADS調度表。注釋和調度表名稱參數相當簡單。注釋可以是提醒你為什么要創(chuàng)建該調度表的任意文本。schedule_ name 參數指明該調度表的所有者和名稱。與程序和任務相類似,調度程序也是模式對象,它們的名稱必須符合與表、索引等相同的命名規(guī)則。
start_date為一個TIMESTAMP WITH TIME ZONE 值,它指明該調度表什么時候被激活。此調度表在(美國東部時間)2004年3月22日星期一開始時被激活。
FREQ=DAILY 根據PERIODICLOADS 調度表規(guī)定,任何任務相繼運行之間的重復時間間隔以天或者24小時為單位計算。INTERVAL=2 指明單位的數目,在此例中為2天。三個 BY 數值-BYHOUR=18, BYMINUTE=0, and BYSECOND=0-指明任務運行的時刻,以24小時制表示。代碼清單2中的PERIODICLOADS 調度表將給出以下任務運行時間: