ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
ジョブスケジューリング(DBMS_JOB)
スポンサード リンク

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」が前回正常終了した日時になります。

スポンサード リンク


スリープする(DBMS_LOCK.SLEEP)
文字列を暗号化する(10g)( DBMS_CRYPTO.ENCRYPT )
文字列を復号化する(10g)( DBMS_CRYPTO.DECRYPT )
PL/SQLコードを隠蔽(暗号化)する(WRAP)
ランダムな数値や文字列を取得する( DBMS_RANDOM )
アラート通知(DBMS_ALERT)
ジョブスケジューリング(DBMS_JOB)
ロック(排他制御)を取得する(DBMS_LOCK)

PL/SQL へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ