DBMS_DATA_TOOLS_JOBSパッケージ・リファレンス

この章では、Data Studioの「ジョブ」機能で使用するパッケージについて説明します。DBMS_DATA_TOOLS_JOBSサブプログラムのサマリーのトピックでは、DBMS_DATA_TOOLS_JOBSパッケージに含まれるプロシージャについても説明します。

DBMS_DATA_TOOLS_JOBサブプログラムのサマリー

DBMS_DATA_TOOLS_JOBパッケージは、Data Studioツール・スイートの「ジョブ」機能で使用するスケジューリング・ファンクションおよびプロシージャのコレクションを提供します。

DBMS_DATA_TOOLS_JOBパッケージのサブプログラム

次の表は、DBMS_DATA_TOOLS_JOBのサブプログラムを示し、簡単に説明しています。

表19-2 DBMS_DATA_TOOLS_JOBのサブプログラムの名前と説明

サブプログラム 説明
ジョブの作成プロシージャ このプロシージャは、新しいジョブを作成します。
ジョブの削除プロシージャ スケジューラからジョブを削除します。
ジョブ名の変更プロシージャ 希望する名前でジョブの名前を変更します。
ジョブの更新プロシージャ 既存のジョブの属性を変更します。
実行プロシージャ 定義したスケジュールに関係なく、すぐにジョブを実行します。
ジョブの停止プロシージャ 実行中のジョブを停止します。これにより、ジョブが正常に終了し、必要に応じて強制的に停止します。

CREATE_JOBプロシージャ

このプロシージャは、1つのジョブを作成します。ジョブの作成時にenabled属性をTRUEに設定して有効にすると、Schedulerによりスケジュールに従って自動的にジョブは実行されます。ジョブの作成時に無効にすると、「ジョブの有効化」機能を使用してジョブを有効にするまでジョブは実行されません。

構文

dbms_data_tools_job.create_job(
                       job_name        in varchar2,
                       description     in varchar2,
                       steps           in clob,
                       owner           in varchar2 default null,
                       start_date      IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
                       repeat_interval IN VARCHAR2                 DEFAULT NULL,
                       end_date        IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
                       job_class       IN VARCHAR2                 DEFAULT NULL,
                       enabled         IN BOOLEAN                  DEFAULT FALSE,
                       reporting       in clob default null);

CREATE_JOBプロシージャのパラメータ

表19-3 CREATE_JOBプロシージャのパラメータ

パラメータ 説明
ジョブ名 ジョブに割り当てる名前。job_nameを指定しない場合、エラーが発生します。
説明 これは、ジョブに対して設定される追加情報を指します。
ステップ これは、ジョブで構成される、Data Studioツールが実行する様々なタスクを指します。
ステップはJSON配列です。各配列要素はJSONオブジェクトです。すべてのオブジェクトに適用されるJSON要素を次に示します:
  • type - 文字列。実行されるステップのタイプ(data_load、smart_table、procedure、http)を宣言します。
  • on_errors - 文字列
  • stop: エラーが発生した場合、ジョブは停止し、エラーが発生します。
  • continue: エラーはログに記録されますが、処理は次のジョブ・ステップに進みます。
  • step_name - ログに表示するステップの説明的な名前

各オブジェクト・タイプには、タイプに応じて追加要素がいくつかあります。

data_load:
  • data_load_name - (必須)実行する、以前に作成したデータ・ロードの名前

smart_table:
  • recipe_name - (必須)実行する、以前に作成したスマート表レシピの名前。
  • url - (必須)接続先のREST URL。
  • method - GET (デフォルト)、POST、PUT、DELETEまたはその他のHTTP動詞
procedure:
  • procedure - (必須)実行するプロシージャの名前。オプションでスキーマ修飾が可能で、ベア・プロシージャまたはパッケージ・メソッドにすることができます。

  • arguments - プロシージャに指定する文字列、数値またはブールの引数の配列。
所有者

ジョブが作成されるスキーマです。スキーマを指定せずにジョブを作成した場合、所有者はCREATE_JOBプロシージャを実行するユーザーになります。

開始日

ジョブの開始がスケジュールされている最初の日時を指定します。start_dateおよびrepeat_intervalをNULLのままにした場合、ジョブは使用可能になるとただちに実行されるようにスケジュールされます。

カレンダ式を使用して反復間隔を指定する繰返しジョブの場合は、start_dateは参照日として使用されます。ジョブが実行される最初の日時は、現在の日時以降で最初にカレンダ式に一致した日時になります。

Schedulerでは、ジョブが正確な時間に実行されることを保証しません。これは、システムがオーバーロードしてリソースが使用できない場合があるためです。

繰返し間隔

この属性は、ウィンドウを繰り返す間隔を指定します。これは、Schedulerのカレンダ構文を使用して表されます。詳細は、「カレンダ構文」を参照してください。

PL/SQL式を使用して、ウィンドウの反復間隔を指定することはできません。

指定した式は、ウィンドウの次回のオープンを決定するために評価されます。repeat_intervalを指定しない場合、ウィンドウは指定した開始日に1回だけオープンされます。

終了日

この属性は、ジョブの期限が切れる日時(これ以降にジョブは実行されなくなります)を指定します。

end_dateの値は、start_dateの値よりも大きい必要があります。end_datestart_dateより前である場合、エラーが生成されます。end_datestart_dateと同じである場合、ジョブは実行されず、エラーは生成されません。

end_dateの値が指定されていない場合、stop jobを指定しないかぎり、ジョブは永久に繰り返されます。
ジョブ・クラス このジョブに関連付けるクラス。
有効 ジョブを使用可能で作成するかどうかを指定します。TRUEまたはFALSEを設定できます。デフォルトではFALSEに設定されるため、ジョブは使用禁止で作成されます。使用禁止ジョブとは、ジョブに関するメタデータが取得され、ジョブがデータベース・オブジェクトとして存在することを意味します。ただし、Schedulerはこのジョブを無視し、ジョブ・コーディネータは処理対象としてジョブを取得しません。ジョブ・コーディネータがジョブを処理できるようにするには、ジョブが使用可能である必要があります。ジョブを有効にするには、「ジョブの有効化」アイコンを選択します。
レポート この属性は、「ジョブ」機能の「レポート」ボタンを使用してジョブ実行の詳細を指定します。
これは、dbms_live_feedのレポート引数に似たJSONオブジェクトです。次の要素を指定できます:
  • completed: ジョブの完了時に通知するターゲット。

  • errors: ジョブのあるステップでエラーが発生したときに通知するターゲット。

  • failed: ジョブにステップのコンテキスト外でなんらかの致命的エラーがあった場合に通知するターゲット。

  • long: ジョブが長時間実行されたときに通知するターゲット。

これらの4つの各要素は、smtp要素で電子メール・アドレスの配列を指定することも、slack要素でSlackチャネルで指定することもできます。long要素には、ジョブの実行時間がlongを超えているとみなされるまでの時間を決定するmax_runtime_seconds要素を含めることができます。

DELETE_JOBプロシージャ

このプロシージャは、ジョブを削除します。

構文

dbms_data_tools_job.delete_job(job_name in varchar2, owner in varchar2 default null);

DELETE_JOBプロシージャのパラメータ

表19-4 DELETE_JOBプロシージャのパラメータ

パラメータ 説明
ジョブ名 ジョブに割り当てる名前。job_nameを指定しない場合、エラーが発生します。
所有者

ジョブが作成されるスキーマです。スキーマを指定せずにジョブを作成した場合、所有者はCREATE_JOBプロシージャを実行するユーザーになります。

RENAME_JOBプロシージャ

このプロシージャは、ジョブの名前を変更します。

構文

dbms_data_tools_job.rename_job(old_job_name in varchar2,
                       new_job_name in varchar2,
                       owner        in varchar2 default null);

RENAME_JOBプロシージャのパラメータ

表19-5 RENAME_JOBプロシージャのパラメータ

パラメータ 説明
古いジョブ名 既存のジョブの名前。
新規ジョブ名

新しいジョブの名前。

所有者

ジョブが作成されるスキーマです。

UPDATE_JOBプロシージャ

このプロシージャは、既存のジョブ属性を更新します。

構文

dbms_data_tools_job.update_job(job_name in varchar2,
                       owner           in varchar2 default null,
                       description     in varchar2 default null,
                       steps           in clob default null,
                       start_date      IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
                       repeat_interval IN VARCHAR2                 DEFAULT NULL,
                       end_date        IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
                       job_class       IN VARCHAR2                 DEFAULT NULL,
                       enabled         IN BOOLEAN                  DEFAULT NULL,
                       reporting       in clob default null);

UPDATE_JOBプロシージャのパラメータ

表19-6 UPDATE_JOBプロシージャのパラメータ

パラメータ 説明
ジョブ名 更新するジョブの名前。
所有者

ジョブが更新されるスキーマです。

説明 適用する更新された説明。
ステップ 更新する新しいステップ。
開始日 新しい開始日。
繰返し間隔 更新された繰返し間隔。
終了日 更新された終了日。
ジョブ・クラス 更新されたジョブ・クラス。
有効 有効または無効にできます。
レポート 更新されたレポート属性。

実行プロシージャ

このプロシージャは、ジョブをただちに実行します。

ジョブが使用可能である場合は、Schedulerによって自動的に実行されます。スケジュールに従ってジョブを実行する場合は、RUN_JOBをコールする必要はありません。通常のスケジュール以外でジョブを実行する場合に、RUN_JOBを使用します。

構文

dbms_data_tools_job.run(job_name            in varchar2,
                owner               in varchar2 default null,
                use_current_session in number   default null,
                options             in clob     default null);

RUNプロシージャのパラメータ

表19-7 RUNプロシージャのパラメータ

パラメータ 説明
ジョブ名

ジョブ名またはエントリのカンマ区切りリスト(それぞれが既存のジョブの名前であり、オプションでスキーマ名およびドット区切りを接頭辞として付加できます)。

複数の接続先ジョブを指定すると、ジョブはすべての接続先で実行されます。この場合、use_current_session引数はFALSEである必要があります。

所有者

ジョブが実行されるスキーマです。

現在のセッションを使用

プロシージャを起動したセッションで、ジョブを実行するかどうかを指定します。

use_current_sessionTRUEに設定した場合は、次のようになります。
  • コマンドラインでジョブをテストして、起こりうるエラーを確認できます。

  • RUNは、定期的にスケジュールされたジョブ実行と並行して実行できます。

use_current_sessionFALSEに設定した場合は、次のようになります。
  • エラー情報を確認するため、ジョブ・ログをチェックする必要があります。
  • scheduler_jobsの関連フィールドはすべて更新されます。
  • 定期的にスケジュールされたジョブが実行中の場合、RUNは失敗します。
オプション  

STOP_JOBプロシージャ

このプロシージャは、現在実行中のジョブ、またはジョブ・クラス内のすべてのジョブを停止します。

ジョブの停止後、1回かぎりのジョブのSTATEはSTOPPEDに設定され、繰返しジョブのSTATEは、ジョブの次の実行がスケジュールされているかどうかによって、SCHEDULEDまたはCOMPLETEDに設定されます。

構文

 dbms_data_tools_job.stop_job(job_name in varchar2,
                     owner    in varchar2 default null,
                     force    in boolean  default false);

STOP_JOBプロシージャのパラメータ

表19-8 STOP_JOBプロシージャのパラメータ

パラメータ 説明
ジョブ名

停止するジョブの名前。既存のジョブの名前。オプションでスキーマ名およびドット区切りが接頭辞として付加されます。

所有者

ジョブが停止されるスキーマです。

強制

forceFALSEに設定した場合、Schedulerは割込み機能を使用してジョブの停止を試みます。この方法では制御をスレーブ・プロセスに戻して、停止するジョブ・キュー内のジョブのステータスをこのプロセスで更新できます。更新に失敗した場合は、エラーが戻されます。

forceTRUEに設定した場合、Schedulerはただちにジョブ・スレーブを終了します。Oracleでは、forceFALSEに設定したSTOP_JOBプロシージャに失敗した場合のみ、forceをTRUEに設定してSTOP_JOBプロシージャを使用することをお薦めします。

forceオプションを使用するには、MANAGE SCHEDULERシステム権限が必要です。