|
スポンサード リンク
PLSQLジョブをスケジューリングして定期的に実行させるには、DBMS_JOBパッケージを使用します。
DBMS_JOBパッケージを使用するには、初期化パラメータ「JOB_QUEUE_PROCESSES」を設定する必要があります。
DBMS_JOBパッケージの主なプロシージャ
SUBMIT( ジョブ番号,
PLSQLプロシージャ名,
次回実行日付, 実行間隔
); |
PLSQLプロシージャ名に指定したジョブを新規にスケジューリングします。
ジョブ番号には、実行するジョブの番号が返されます。
次回実行日付には、ジョブを次回実行する日付を指定します。
実行間隔には、ジョブを次回実行する時間を計算する日付の計算式を指定します。
例えば、 一日間隔の場合 : 'SYSDATE + 1'
一時間間隔の場合 : 'SYSDATE + 1/1440'
となります。
COMMIT後に処理が確定されます。 |
REMOVE( ジョブ番号 ); |
指定された、ジョブ番号で登録されているPLSQLジョブを削除します。 |
RUN( ジョブ番号 ); |
指定された、ジョブ番号で登録されているPLSQLジョブを即時に実行します。
ジョブが実行されると、実行間隔が再計算されます。ビューuser_jobsを参照してください。 |
例1) ジョブスケジューリング
ストアドプロシージャ「test_proc」を初回実行日時が「2006/04/20 10:30:00」として、1日間隔で同時刻に実行されます。
|
declare
job_no binary_integer;
begin
dbms_job.submit(job_no,
'test_proc;',
to_date('2006/04/20 10:30:00','yyyy/mm/dd hh24:mi:ss'),
'sysdate+1');
commit;
end;
|
ビュー「user_jobs」で、JOBの登録状況を確認できます。
|
SQL> select job,what,
2 to_char(last_date,'yyyy/mm/dd hh24:mi:ss') as last_date,
3 to_char(next_date,'yyyy/mm/dd hh24:mi:ss') as next_date
4 from user_jobs;
JOB WHAT last_date next_date
----- ------- ------------------ -------------------
21 test_proc 2006/04/20 10:30:00
|
※項目「next_date」がJOBが次回実行される日時、「last_date」が前回正常終了した日時になります。
スポンサード リンク
|