DBMS_JOB モジュール

DBMS_JOB モジュールは、ジョブの作成、スケジューリング、および管理のためのプロシージャーを提供します。

DBMS_JOB モジュールは、管理タスク・スケジューラー (ATS) に対する代替インターフェースを提供します。 タスクを ATS に追加することによってジョブが作成されます。 実際のタスク名は、DBMS_JOB.TASK_NAME_PREFIX プロシージャー名に、割り当てられたジョブ ID を連結することによって構成されます。例えば、1 がジョブ ID とすると、SAMPLE_JOB_TASK_1 のようになります。

ジョブは、既にデータベースに保管されているストアード・プロシージャーを実行します。 SUBMIT プロシージャーを使用して、ジョブ定義を作成および保管します。 各ジョブにはジョブ ID が割り当てられ、それに関連付けられたストアード・プロシージャーと、ジョブを実行する時と頻度を記述した属性も、共に割り当てられます。

データベースで SUBMIT プロシージャーが最初に実行されるときに、必要に応じて SYSTOOLSPACE 表スペースが作成されます。

いつ、どれほどの頻度でジョブが実行されるかは、2 つの対話型パラメーター - next_dateinterval によって決まります。 next_date パラメーターは、ジョブが実行される次回の日時を指定する日時値です。 interval パラメーターは、評価の結果として日時値になる関数日付を含むストリングです。 ジョブを実行する直前に interval パラメーター内の式が評価され、その結果の値によって、ジョブで保管されている next_date 値が置換されます。 それからジョブが実行されます。 このようにして、毎回のジョブ実行の前に interval 内の式が再評価され、次回の実行のための next_date 日時が与えられます。

next_date パラメーターによって指定されるスケジュール済みジョブの最初の実行は、 現在時刻よりも少なくとも 5 分後として設定する必要があり、各ジョブの実行間隔も少なくとも 5 分は必要です。

このモジュールのスキーマは SYSIBMADM です。

DBMS_JOB モジュールには、以下の組み込みルーチン が含まれています。

表 1. DBMS_JOB モジュールで使用可能な組み込みルーチン
ルーチン名 説明
BROKEN プロシージャー 示されたジョブが失敗しているかどうかを指定します。
CHANGE プロシージャー ジョブのパラメーターを変更します。
INTERVAL プロシージャー ジョブの実行のたびに再計算される日付関数によって、実行頻度を設定します。 この値は、次回の実行日時になります。
NEXT_DATE プロシージャー ジョブが実行される次回の日時を設定します。
REMOVE プロシージャー データベースからジョブ定義を削除します。
RUN プロシージャー 失敗としてマーク付けされていても、ジョブを強制実行します。
SUBMIT プロシージャー ジョブを作成し、ジョブ定義をデータベースに保管します。
WHAT プロシージャー ジョブによって実行されるストアード・プロシージャーを変更します。
表 2. DBMS_JOB モジュールで使用可能な組み込み定数
定数名 説明
ANY_INSTANCE DBMS_JOB ルーチンのインスタンス引数でサポートされる唯一の値です。
TASK_NAME_PREFIX この定数には、管理タスク・スケジューラーのタスク名を構成するために接頭部として使用されるストリングが入ります。

使用上の注意

各データベースに対する DBMS_JOB モジュールを通して最初のジョブがサブミットされるときに、管理タスク・スケジューラーのセットアップが以下のように行われます。
  1. SYSTOOLSPACE 表スペースがまだ存在していなければ、作成します。
  2. ATS 表およびビュー (例えば SYSTOOLS.ADMIN_TASK_LIST) を作成します。
スケジュール済みジョブをリストするには、次のように実行します。
db2 SELECT * FROM systools.admin_task_list
      WHERE name LIKE DBMS_JOB.TASK_NAME_PREFIX || '_%'
ジョブ実行の状況を表示するには、次のように実行します。
db2 SELECT * FROM systools.admin_task_status
      WHERE name LIKE DBMS_JOB.TASK_NAME_PREFIX || '_%'
注: ジョブ ID の予期される値は、SYSTOOLS.ADMIN_TASK_LIST によって返される TASKID の値ではありません。 例えば、以下のようなジョブ・リストがあるとします。
NAME                    TASKID                                          
---------------         ------                                          
DBMS_JOB_TASK_2              3                                                
DBMS_JOB_TASK_3              4
DBMS_JOB_TASK_2 を変更したい場合、ジョブ ID として 2 を渡す必要があります。