DBMS_JOB パッケージでPLSQLを定期的に実行する方法
文書番号:20238
Windows で言うタスクスケジューラのようなものがOracle にもあります。
DBMS_JOB パッケージを使用することでストアドプロシージャを定期的に実行することができます。
【実行手順】
-
実行するストアドプロシージャを作成し、コンパイルしておきます。
ジョブを登録します。
DECLARE
JOB_NO NUMBER;
BEGIN
--書式:DBMS_JOB.SUBMIT(JOB_NO,'実行するプロシージャ名',次回実行日時,実行間隔);
--「TEST_PROCESS」を「2014/10/01 13:00:00」に実行を開始し、1日間隔で実行する
DBMS_JOB.SUBMIT(JOB_NO,'TEST_PROCESS();',TO_DATE('2014/10/01 13:00:00','YYYY/MM/DD HH24:MI:SS'),SYSDATE + 1);
--「TEST_PROCESS」を「2014/10/01 13:00:00」に実行を開始し、1時間間隔で実行する
DBMS_JOB.SUBMIT(JOB_NO,'TEST_PROCESS();',TO_DATE('2014/10/01 13:00:00','YYYY/MM/DD HH24:MI:SS'),SYSDATE + 1/24);
--「TEST_PROCESS」を「2014/10/01 13:00:00」に実行を開始し、30分間隔で実行する
DBMS_JOB.SUBMIT(JOB_NO,'TEST_PROCESS();',TO_DATE('2014/10/01 13:00:00','YYYY/MM/DD HH24:MI:SS'),SYSDATE + 30/1440);
--「TEST_PROCESS」を即座に実行を開始し、1分間隔で実行する
--開始時刻を指定せずに設定する場合
DBMS_JOB.SUBMIT(JOB_NO,'TEST_PROCESS();',INTERVAL=>'SYSDATE+1/1440');
COMMIT;
END;
登録済みのジョブの一覧を取得します。
SELECT *
FROM user_jobs;
ジョブを手動で実行します。
※ジョブ番号は上記のジョブ一覧を照会するSQLで確認できます。
BEGIN
DBMS_JOB.RUN(ジョブ番号);
COMMIT;
END;
ジョブを削除します。
※ジョブ番号は上記のジョブ一覧を照会するSQLで確認できます。
BEGIN
DBMS_JOB.REMOVE(ジョブ番号);
COMMIT;
END;