この章では、Oracle Enterprise Schedulerのジョブ・リクエストの管理方法、リクエストの作成および送信方法、リクエストの保留および取消し方法について説明します。
ジョブ・リクエストはアプリケーションにかわって作業を実行します。ジョブ・リクエストは、ジョブ実行タイプ(JavaジョブやPL/SQLジョブなど)、ジョブ定義(リクエストの詳細を指定するメタデータを関連付ける)およびスケジュール(ジョブの実行日時を指定する)で構成されます。ジョブ・リクエストの管理には、ジョブを作成して送信することだけでなく、ジョブの保留と取消しや、データベースからリクエストをパージしてクリーン・アップする作業も含まれます。
注意:
Oracle WebLogic Scripting Toolを使用してリクエスト管理タスクを実行することもできます。詳細は、『Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンス』のEnterprise SchedulerのカスタムWLSTコマンドに関する項を参照してください。
この章の内容は次のとおりです。
Fusion Middleware Controlコンソールを使用してジョブ・リクエストを管理できます。ジョブ・リクエストは、Oracle Enterprise Schedulerのサービス提供先であるアプリケーションにかわって、作業を実行します。
ジョブ・リクエストの管理に関連するタスクには、ジョブ・リクエストの作成とジョブを実行するスケジュールの指定が含まれます。リクエストの送信や、保留および取り消すことができます。
必要となるジョブ・リクエストの管理タスクには、次のようなものがあります。
リクエスト固有のメタデータをジョブ定義として関連付けてジョブ・リクエストを作成し、ジョブの実行日時を指定するスケジュールを定義します。
リクエストを保留、再開および取り消します。
データベースからジョブ・リクエストをパージします。
Oracle Enterprise Schedulerを使用して、アプリケーションのかわりにジョブを実行できます。ジョブの実行が必要になると、アプリケーションはOracle Enterprise Schedulerにジョブ・リクエストを送信します。ジョブのパラメータを指定するジョブ定義を使用してジョブを構成し、これをアプリケーションに関連付けます。複数のジョブ・リクエストをグループ化する場合は、ジョブ・セットを作成します。
ジョブ・リクエストの管理作業には、リクエストの送信、既存リクエストの検索とそれらの情報の閲覧、リクエストの一時停止および取消しが含まれます。これらのタスクはFusion Middleware Controlコンソールで実行できます。
この項では、次の項目について説明します。
ジョブ・リクエストを送信するには、必要なメタデータを定義したジョブ定義を選択し、ジョブの実行日時を指定するスケジュールを定義します。
この項では、次の項目について説明します。
ジョブ・リクエストのジョブ定義を選択し、スケジュールを選択または作成して、ジョブ・リクエストを作成します。
実行エラー時の再試行回数やジョブのタイムアウト値など、ジョブ・リクエストのシステム・プロパティも必要に応じて構成できます。
ジョブ・リクエストを送信するには:
既存のジョブ定義を使用します。「ジョブ定義の作成または編集」の説明に従って、まず新しいジョブ定義を作成することもできます。
「スケジューリング・サービス」メニューをクリックし、「ジョブ・リクエスト」→「ジョブ・リクエストの送信」を選択して、「ジョブ・リクエストの送信」ページにナビゲートします。
ジョブ・リクエストの送信先のアプリケーションを選択します。
アプリケーションドロップダウン・リストで、アプリケーションのデプロイメント名を選択します。
「ジョブ・リクエストの詳細」の下の「送信ノート」テキスト・フィールドに、ジョブ・リクエストの説明を入力します。
ジョブ定義を選択します。
「ジョブ定義」の下の「ジョブ定義」テキスト・フィールドの横にある検索ボタンをクリックします。
使用するジョブ定義を検索します。
「名前」テキスト・フィールドで、検索するジョブ定義の名前を入力します。ジョブ定義のパッケージを「パッケージ」フィールドに入力することもできます。
「実行」をクリックしてジョブ定義を検索します。
検索結果表から、ジョブ定義名を選択します。
「OK」をクリックします。
オプションで、「パラメータ」リージョンで、スケジュールするジョブ・リクエストで使用するパラメータを定義します。
「ジョブ・パラメータ」リージョンで、「追加」をクリックしてパラメータを追加します。
パラメータの名前と値を入力します。
使用可能なシステム・プロパティの値を設定できます。
たとえば、許可するジョブの再試行回数(SYS_retries
)やタイムアウト値(SYS_request_timeout
)を構成できます。
ジョブを実行するスケジュールを選択します。
1回: 「カレンダ」ボタンをクリックして日時を1つ選択します。
既存のスケジュールの使用: 検索ボタンをクリックして、既存スケジュールを検索して選択します。保存済スケジュールの定義の詳細は、「事前定義ジョブ・スケジュールの作成または編集」を参照してください。
スケジュールの指定: ここで直接スケジュールを作成します。「ジョブ・リクエストのスケジュールの指定」の手順に従います
「OK」をクリックします。
「ジョブ・リクエストの送信」ページで、「スケジュールの指定」を選択すると、ジョブ・リクエストのスケジュールを構成できます。ジョブ・リクエスト・スケジュールを使用して、再帰ジョブ・リクエストを構成できます。また、すぐに実行するジョブ・リクエストや、指定した終了日より前に実行するジョブ・リクエストを構成できます。既存のジョブ定義を使用するか、「ジョブ定義の作成または編集」の説明のとおり新しいジョブ定義を作成します。
スケジュールを指定するには:
「リクエスト検索」ページでジョブ・リクエストを検索できます。「リクエスト検索」ページでは、次を実行できます。
「クイック検索」ドロップダウン・メニューから事前構成済の検索オプションを選択することで、クイック検索を実行します。
ジョブ・リクエストID、実行アプリケーション、ジョブ・リクエストのステータスなど、ジョブ・リクエストの詳細のリストを返す、基本的な検索を実行します。
基本検索の一部として使用可能なフィールドとともに、「実行時間/待機時間」、「失敗した実行の再試行」、「日付範囲」、「エラー・タイプ」および「リクエストECID/相関フローID」に基づく拡張検索を実行します。
検索結果表の列の表示を変更します。
この項では、次の項目について説明します。
簡易検索では、ジョブ・リクエストID、関連付けられているアプリケーション、ジョブ・リクエストのステータスなど特定の基準に基づいてジョブ・リクエストを検索したり、多数用意されている事前構成済クイック検索の1つを使用してジョブ・リクエストを検索できます。
ジョブ・リクエストを検索するには:
スケジュールを定義および保存し、将来のジョブ・リクエスト送信で使用できます。
「スケジューリング・サービス」メニューをクリックし、「ジョブ・リクエスト」→「スケジュールの定義」を選択し、「スケジュール」ページにナビゲートします。
「スケジュール」ページで、次のアクションのいずれかを選択できます。
新規スケジュールを作成するには、次のようにします。
「アプリケーション」ドロップダウン・リストで、スケジュールを作成するアプリケーションの名前を選択します。
「作成」をクリックします。
次の情報を入力します。
名前: スケジュールの名前を入力します。これは、ジョブ・リクエストにスケジュールを割り当てる際に表示される名前です。
パッケージ: スケジュールの検索またはグループ化に役立つ場合は、オプションで、このスケジュールに関連するJavaパッケージの名前を入力します。
説明: オプションで説明を入力します。
「頻度」ドロップダウンで、このスケジュールを使用するジョブ・リクエストの実行頻度を選択します。頻度オプションの詳細の指定方法は、各オプションによって異なります。詳細を指定するときに、「日付および時間の選択」アイコンをクリックするとタイムゾーンも指定できます。
「OK」をクリックします。
既存のスケジュールの詳細を表示するには:
「結果」領域で、詳細を表示するスケジュールを探します。
「アプリケーション」ドロップダウン・リストで、スケジュールを表示するアプリケーションの名前を選択します。
「名前」列で、スケジュールの名前をクリックします。
「スケジュール詳細」ページでは、スケジュールの時間を削除したり、Editボタンをクリックしてスケジュールの詳細を編集したりすることができます。
既存スケジュールを編集するには:
「名前」および「パッケージ」フィールドに、検索する値を入力します。
「実行」をクリックして、検索します。
「結果」領域で、編集するスケジュールを探します。
編集するスケジュールを選択して「編集」をクリックします。
「スケジュールの編集」ページで、スケジュールの詳細を編集します。
「OK」をクリックします。
ジョブ・リクエストの検索結果でジョブ・リクエストIDまたはリクエストの親IDをクリックすると、各ジョブ・リクエストに関する詳細情報を表示できます。ジョブがエラー状態にある場合、発生したエラーに関する詳細が情報ボックスに表示されます。ジョブ・リクエストを検索する方法の詳細は、「Oracle Enterprise Schedulerのジョブ・リクエストの検索」を参照してください。
個別のジョブ・リクエストに関して次のアクションを実行できます:
ジョブ・リクエストのログ情報を表示します。
ジョブ・セットおよびすべての子ジョブ・リクエストを表示します。
特定のジョブ・リクエストと同様のパラメータを指定して、ジョブまたはジョブ・セット・リクエストを発行します。
不完全なジョブ・リクエストを復元します。
ジョブ・リクエストの詳細を表示するには:
送信済の実行可能ジョブ・リクエストを取り消すことができます。実行可能ジョブ・リクエストには、スケジュールなしで送信されたジョブ・セットとジョブ・リクエストが含まれます。ジョブ・リクエストは実行以外の状態であれば取り消すことができます。
ジョブ・リクエストの取消し操作を実行したとき、取消しの状態がどのようになるかはジョブ・リクエストの現在の状態によって決まります。実行中でないジョブ・リクエストはすぐにCANCELLED
状態に設定されます。RUNNING
、PAUSED
またはCOMPLETED
状態のジョブ・リクエストは、リクエストの取消し操作の実行後、CANCELLING
状態になります。
リクエストの状態が最終的にどのようになるかは、取消し操作を実行したときのジョブ・リクエストの処理ステージによって決まります。
表4-1は、取消し操作を実行したときの状態に応じて、各実行可能リクエストにどのような取消し状態が適用されるかを示しています。
表4-1 実行可能リクエストと取消し状態
取消し操作実行時のジョブの状態 | 新しい取消し状態 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
すべての終了状態 |
状態変更なし |
|
状態変更なし |
|
状態変更なし |
実行可能リクエストは、プリプロセッサ、実行、ポストプロセッサという3つの主要ステージで処理されます。これらのステージにあるリクエストはすべて取り消すことができます。これらの3つのステージを完了できなかったジョブ・リクエストは、CANCELLED
になります。
この項では、次の項目について説明します。
プリプロセッサ・ステージ中に取消し操作を実行した場合、ジョブ・リクエストに設定される新しい状態は、プリプロセッサから返されるステータスによって異なります。
表4-2に、取消し操作実行後のジョブの状態を示します。
表4-2 プリプロセッサの状態と取消し操作実行後の状態
プリプロセッサから返された状態 | 取消し操作実行後の状態 |
---|---|
|
|
|
|
|
|
|
|
|
|
ジョブ実行ステージ中に取消し操作を実行した場合、ジョブ・リクエストに設定される新しい状態は、ジョブがどのように完了したかによって異なります。
表4-3に、取消し操作実行後のジョブの状態を示します。
表4-3 返された同期Javaジョブの状態と取消し操作実行後の状態
ジョブから返された状態 | 取消し操作実行後の状態 |
---|---|
通常の戻り値(成功) |
|
|
|
|
|
|
|
|
|
ジョブ実行ステージ中に取消し操作を実行した場合、ジョブ・リクエストに設定される新しい状態は、ジョブがどのように完了したかによって異なります。
表4-4に、取消し操作実行後のジョブの状態を示します。
表4-4 返された非同期Javaジョブの状態と取消し操作実行後の状態
ジョブから返された状態 | 取消し操作実行後の状態 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
状態変更なし。更新を待機します。 |
|
|
|
|
実行可能ジョブが実行中である場合、Oracle Enterprise Schedulerは実行中のRDBMSスケジューラ・ジョブの強制終了を試みます。ジョブが正常に強制終了された場合、リクエストはCANCELLED
状態になります。強制終了が実行される前にRDBMSスケジューラ・ジョブが終了した場合、ジョブ・リクエストに新しく設定される状態は、ジョブの実行結果によって異なります。
表4-5に、取消し操作実行後のジョブの状態を示します。
表4-5 返されたPL/SQLジョブの状態と取消し操作実行後の状態
ジョブから返された状態 | 取消し操作実行後の状態 |
---|---|
|
|
|
|
|
|
|
|
|
|
生成されたジョブが実行中である場合、Oracle Enterprise Schedulerは実行中のプロセスの強制終了を試みます。プロセスが正常に強制終了された場合、リクエストはCANCELLED
状態になります。強制終了が実行される前にプロセスが終了した場合、リクエストに新しく設定される状態は、プロセスの実行結果によって異なります。
表4-6に、取消し操作実行後のジョブの状態を示します。
表4-6 返された生成されたジョブの状態と取消し操作実行後の状態
ジョブから返された状態 | 取消し後の状態 |
---|---|
|
|
|
|
|
|
|
|
|
|
取り消された親ジョブ・リクエストは、すべての子ジョブ・リクエストが完了または取り消されるまでCANCELLING
状態に遷移します。取消し操作は対象のすべての子ジョブ・リクエストに伝播されます。たとえば、ジョブ・セットが取り消されるとジョブ・セット・ステップが取り消され、親リクエストが取り消されるとサブ・リクエストが取り消され、再帰の親が取り消されると再帰の実行可能ジョブ・リクエストが取り消されます。子ジョブ・リクエストが実行可能な場合、前述の項で説明したルールが適用されます。すべての子リクエストが完了したときに、親リクエストがCANCELLED
の状態になります。
子ジョブ・リクエストは実行可能ジョブ・リクエストまたは親ジョブ・リクエストである場合があります。CANCELLED
またはその他の終了状態にあるサブリクエストを取り消す場合、その親ジョブ・リクエストは、それ自身が取り消されていないかぎり通常どおり再開されます。サブリクエストの状態は親リクエストの状態に影響しません。
ジョブ・セット内のステップを取り消したとき、ジョブ・セットの状態がCANCELLED
状態になるのは、ジョブ・セット・ステップがCANCELLED
状態になったときです。ただし、別のジョブ・セット・ステップの結果がエラーの場合は、ジョブ・セットの状態がCANCELLED
に戻らないことがあります。
ジョブ・リクエストを取り消すには:
パージ・ポリシーを使用すると、指定した基準に基づいてスケジューリング・サービスで完了ジョブを削除できます。
たとえば、特定のジョブ定義を使用して送信され、特定のアプリケーションによって実行されたすべてのJavaタイプのジョブ・リクエストを3日間保存することをパージ・ポリシーで指定できます。また、特定のタイプ(たとえば、すべてのSQLジョブ・リクエスト)の成功状態のジョブ・リクエストを1日のみ保存するパージ・ポリシーも考えられます。パージ・ポリシーの実行頻度も指定できます。
この項では、次の項目について説明します。
パージ・ポリシーは、どのジョブ・リクエストをパージし、どのジョブ・リクエストを保存するかを決定します。パージ・ポリシーの定義には次の作業が含まれます。
パージするジョブの選択: 選択基準には、関連付けられているアプリケーションまたは製品、特定のジョブ定義またはジョブ・タイプ、ジョブ送信者、最大リクエスト数などがあります。
保存基準の指定: ジョブ・リクエストの保存期間をステータスに基づいて決定します。
パージ頻度の指定: パージ・ポリシーの実行頻度を指定します。
注意:
パージ・ポリシーの実行後、パージしたジョブ・リクエストをデータベースから物理的に削除する必要があります。詳細は、「ジョブ・リクエストのデータベースからの物理的なパージ」を参照してください。
新規パージ・ポリシーを設定するには:
ジョブ・リクエスト・データは、Oracle Enterprise Schedulerランタイム・ストアのランタイム・ストア表にレコードとして保存されます。これらのジョブ・リクエスト・レコードは、データベース管理者がSQLパージ・スクリプトを使用してデータベースから物理的にパージするまで、ランタイム・ストアに保持されます。ジョブ・リクエストを物理的にパージする前に、論理的に削除する必要があります。
Oracle Enterprise Schedulerスキーマでesspurge.purge_requests
メソッドを使用して、削除されたジョブ・リクエストをデータベースからパージします。Oracle Fusion Applications環境で、このスキーマは通常FUSION_ORA_ESS
と呼ばれています。
ESSPURGE
パッケージには、完了したジョブ・リクエストをパージできるストアド・プロシージャが含まれています。通常、このパッケージはOracle Enterprise Schedulerスキーマが作成または更新されたときにロードされます。ストアド・プロシージャを例4-1に示します。
esspurge.purge_requests
の基本的な構文を例4-2に示します。FUSION_ORA_ESS
はOracle Enterprise Schedulerスキーマの名前で、password
はパスワードです。
さらに別の例を示します。
現在時間より前に完了したジョブ・リクエストを最大50000件パージするには、次のコマンドを実行します。
execute esspurge.purge_requests(systimestamp, 50000);
30日前に完了したジョブ・リクエストを最大50000件パージするには、次のコマンドを実行します。
execute esspurge.purge_requests(systimestamp - 30, 50000);
2010年6月1日15:00:00(UTC)より前に完了したジョブ・リクエストを最大50000件パージするには、次のコマンドを実行します。
execute esspurge.purge_requests(TIMESTAMP '2010-06-01 15:00:00 -00:00', 50000);
例4-1 完了したジョブ・リクエストをパージするESSPURGEストアド・プロシージャ
--- Purges job requests that have completed. --- --- p_older_than : Purge only job requests that have completed after this time. --- p_max_count : The maximum number of job requests to purge. --- p_max_runtime : The maximum time, in minutes, the purge should run. --- If null (default), this defaults to one day which effectively means --- there is no time limit. --- procedure purge_requests ( p_older_than in timestamp, p_max_count in number, p_max_runtime integer default null );
例4-2 データベースからのジョブ・リクエストのパージ
sqlplus FUSION_ORA_ESS/password set serveroutput on size unlimited set timing on execute esspurge.purge_requests(systimestamp, 1000000);
スケジューリング・サービスに定義されているすべてのパージ・ポリシーを表示できます。
スケジューリング・サービスのパージ・ポリシーを表示するには:
パージ・ポリシーが「Succeeded」または「Cancelled」状態でないかぎり、パージ・ポリシーのスケジュールと同様に、既存のパージ・ポリシーのリクエストまたは保存基準を編集できます。
パージ・ポリシーを更新するには:
Oracle Simple Data Securityによって特定のデータ・レコードへのアクセスや変更に対するセキュリティ認可が強制されます。Oracle Simple Data Securityは、OPSSプリンシパルにアクションを付与することによってOracle Platform Security Services (OPSS)に統合されます。
権限は、特定のリソースに対してだれ(プリンシパル)が何(アクション)を実行できるのかを定義します。Oracle Simple Data Securityの権限では、エンタープライズ・ユーザーまたはエンタープライズ・グループをプリンシパルとして使用できます。
Oracle Enterprise Schedulerのコンテキストでジョブ・リクエスト・アクセス制御セキュリティ・ポリシーは、権限、権限受領者、および次のようなジョブ・リクエスト・セットに対するoracle.as.scheduler.security.RuntimeDataPermission
権限のセットで構成されます。
権限受領者は、ユーザーやアプリケーション・ロールなどの権限受領者IDで表現されます。このIDは、Oracle Fusion Middlewareから取得されるユーザーGUIDまたはアプリケーション・ロールGUIDと一致している必要があります。
Oracle Enterprise Manager Fusion Middleware Controlを使用して、ジョブ・リクエストのアクセス制御データ・セキュリティ・ポリシーを管理できます。
デフォルトの動作は次のとおりです。
デフォルトで、ユーザーは自分が送信したリクエストのみを表示できます。
ユーザーがリクエストを表示できる場合、リクエスト・ログも表示できます。
ユーザーがリクエストを表示できる場合、そのリクエストが昇格された権限で実行されていなければ、ユーザーはリクエスト出力を表示できます。
ユーザーがリクエストを表示できる場合、そのリクエストが昇格された権限で実行されていれば、リクエスト出力は表示できません。
リクエストの別名実行ユーザー(指定されている場合は、昇格されたユーザー)は、リクエスト、リクエスト・ログおよびリクエスト出力を表示できます。
管理者グループのユーザー(たとえば、"weblogic")は、すべてのリクエストおよびリクエスト・ログを表示できます。
管理者ユーザーは、管理者ユーザーとしてリクエストが送信および実行されていない場合、リクエスト出力を表示できません。
Enterprise Managerを使用して、Oracle Enterprise Schedulerの機能およびデータのセキュリティ・ポリシーを作成できます。ここで、アクセスとロールを関連付けてポリシーを作成できます。
表4-7に、使用可能なシンプル・データ・セキュリティのアクションを示します。
表4-7 データ・セキュリティのためのアクションの付与
アクション | 結果 |
---|---|
|
リクエストの読取り、およびリクエスト状態と詳細の取得を行います。 |
|
リクエストを更新します。 |
|
リクエスト実行を保留します。 |
|
リクエスト実行を取り消します。 |
|
リクエストをロックします。 |
|
リクエストのロックを解除します。 |
|
リクエストを削除します。 |
|
リクエストの消去。 |
ESS_REQUEST_OUTPUT_CREATE |
リクエストの出力を作成します。 |
|
リクエストの出力を表示します。 |
|
リクエストの出力を削除します。 |
|
リクエストの出力を更新します。 |