gtag

2010年11月11日 星期四

建立與改變DB JOB執行的時間

建立DB JOB:
建立JOB必須宣告一參數來承接RETURN的JOB NUMBER。

DECLARE
V_JOB BINARY_INTEGER;
begin
DBMS_JOB.SUBMIT
(JOB => V_JOB,
WHAT => 'YOUPACKAGE.PROCEDURE;',
NEXT_DATE => TRUNC(SYSDATE) + 1,
INTERVAL => 'TRUNC(SYSDATE) + 1');
end;
/
COMMIT
/

這代表在每天00:00:00時,執行PROCEDURE,因為只有TRUNC(SYSDATE) + 1未加其他數字。

改變DB JOB:
利用DBMS_job.CHANGE這個PROCEDURE來改變DB JOB的執行時間。

這個PROCEDURE所需的參數:
PROCEDURE Change (JOB IN BINARY_INTEGER,
What IN varchar2,
next_date IN date,
INTERVAL IN varchar2)

在SQLPLUS中可以輸入這樣的語法,來完成改成JOB的執行時間(例如改變時間至每日3:30AM執行):
BEGIN
DBMS_job.CHANGE(2038, 'YOUPACKAGE.PROCEDURE;',TRUNC(SYSDATE)+1+3/24+30/1440,'TRUNC(SYSDATE)+1+3/24+30/1440');
END;
/
COMMIT
/

NEXT_DATE 設成TRUNC(SYSDATE)+1+3/24+30/1440,意指下次執行時間由何時開始。
INTERVAL 設成TRUNC(SYSDATE)+1+3/24+30/1440,意指執行的間隔時間。

TRUNC(SYSDATE)+1 隔天
3/24 代表在3點的時候
30/1440 代表在30分的時候
全部加起來就變成隔天早上3:30的時候。

沒有留言:

張貼留言