Oracleのジョブ



Oracleのジョブ スケジュール実行する

Oracleのストアドを実行する際、定期的にスケジューリングして実行したい場合があります。Windowsのタスクスケジュールのように。

例えば、「毎週日曜の夜0時にAプロシージャを実行する」など。

これがジョブです。

夜間のバッチ処理や定期的な処理はジョブでスケジュール実行すると便利ですね。ジョブはOracleのDBMS_JOBパッケージを利用します。

ジョブの構文

ジョブの構文はこちらです。

ジョブの例

ここでは、2017/1/1から1日間隔で「PROC_A」を実行するジョブを作りました。

実行間隔

  • 1日ごと → sysdate+1
  • 1時間ごと → sysdate + (1/24)
  • 1分ごと → sysdate + (1/1440)

Oracleのジョブの注意点

ただしこのジョブ、1つ注意点があります。

上記の例は1日間隔(’sysdate+1’)で実行していますが、処理が終わってからプラス1日です。よって処理時間がかかるジョブの場合、だんだん時間がズレていきます。

例えば、0時スタートのジョブがあります。今日、ジョブの実行に3分かかったしたら、翌日のジョブの実行開始時間は0時3分からとなります。

時間にシビアなケースでのジョブは使わない方がよいです。

以上、Oracleのジョブのまとめでした。