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サブプログラムを示し、簡単に説明しています。

Table 3-11 DBMS_DATA_TOOLS_JOB Names and description for the DBMS_DATA_TOOLS_JOB Subprograms

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

CREATE_JOBプロシージャ

このプロシージャは、1つのジョブを作成します。ジョブの作成時に有効属性を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プロシージャのパラメータ

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

パラメータ 説明
ジョブ名 ジョブに割り当てる名前。job_nameを指定しない場合、エラーが発生します。
説明 これは、ジョブに対して設定される追加情報を参照します。
ステップ これは、ジョブで構成されるData Studioツールが実行する様々なタスクを指します。
ステップはJSON配列です。各配列要素はJSONオブジェクトです。すべてのオブジェクトに適用されるJSON要素を次に示します:
  • type - 文字列。実行されるステップのタイプ(data_load、smart_table、プロシージャ、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はこのジョブを無視し、ジョブ・コーディネータは処理対象としてジョブを取得しません。ジョブ・コーディネータがジョブを処理できるようにするには、ジョブが使用可能である必要があります。ジョブを有効にするには、Enable Jobアイコンを選択します。
レポート この属性は、ジョブ機能の「レポート」ボタンを使用してジョブ実行の詳細を指定します。
これは、dbms_live_feedのレポート引数に似たJSONオブジェクトです。次の要素を指定できます。
  • completed: ジョブの完了時に通知するターゲット。

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

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

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

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

DELETE_JOBプロシージャ

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

構文

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

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

表3-13 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プロシージャのパラメータ

表3-14 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プロシージャのパラメータ

表3-15 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プロシージャのパラメータ

表3-16 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プロシージャのパラメータ

表3-17 STOP_JOBプロシージャのパラメータ

パラメータ 説明
ジョブ名

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

所有者

ジョブを停止するスキーマです。

強制

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

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

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