ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Enterprise Schedulerの管理
12c (12.1.3)
E59386-02
  目次へ移動
目次

前
次
 

B.4 問題と解決策

この項では、Oracle Enterprise Schedulerの一般的な問題と解決策について説明します。次の項目が含まれます。

推奨される解決策に加えて、調整に関するヒントとして「Oracle Enterprise Schedulerシステムのパフォーマンス・チューニング」を確認することも検討してください。

B.4.1 ジョブのWAIT状態が続く

問題

ユーザーがジョブを送信したときに、ジョブが長時間WAIT状態に留まったまま、RUNNING状態に遷移しないことがあります。

解決策

この問題を解決するには、Oracle Enterprise Schedulerの現在のステータスをFusion Middleware Controlから確認します。

  1. リクエスト・プロセッサおよびディスパッチャが実行しているかどうかを確認します。

    1. ナビゲーション・ペインで、ファーム、「スケジューリング・サービス」を展開します。

    2. 適切な管理対象サーバーのESSAPPアプリケーションを選択します。

    3. スケジューリング・サービスのホームページの「スケジューラ・コンポーネント」セクションで、リクエスト・プロセッサのステータスが「起動済」になっていることを確認します。

      実行中でない場合は、起動してください。「リクエスト・プロセッサまたはディスパッチャの起動と停止」を参照してください。

    4. スケジューリング・サービスのホームページの「スケジューラ・コンポーネント」セクションで、リクエスト・ディスパッチャのステータスが「起動済」になっていることを確認します。

      実行していない場合は、「リクエスト・プロセッサまたはディスパッチャの起動と停止」に従って起動します。

  2. ESSAPPアプリケーションが実行していることを確認します。

    1. ナビゲーション・ペインで、ファーム、「スケジューリング・サービス」を展開します。

    2. 適切な管理対象サーバーのESSAPPアプリケーションを選択します。

    3. スケジューリング・サービスのホームページの「スケジューラ・コンポーネント」セクションで、リクエスト・ディスパッチャのステータスが「起動済」になっていることを確認します。

    4. WebLogic Serverのホームページの「デプロイメント」セクションで、ESSAPPアプリケーションが実行していることを確認します。

      実行中でない場合は、起動してください。「Oracle Enterprise Schedulerサービス・インスタンスの起動と停止」を参照してください。

  3. プロセッサと作業割当ての構成を確認し、構成されている同時実行性またはスレッドが少なすぎないかを確認します。

    • 「スケジューリング・サービス」メニューから、「リクエスト・プロセッサ」「構成」を選択し、「リクエスト・プロセッサの構成」ページの「スレッド数」フィールドを確認します。「リクエスト・プロセッサの構成」を参照してください。

    • 「スケジューリング・サービス」メニューから、「作業割当て」「作業割当て」を選択し、「作業割当て」ページの構成を確認します。「作業割当ての管理」を参照してください。

B.4.2 同期ジョブのRUNNING状態が長時間続く

問題

ユーザーがジョブを送信したときに、ジョブのRUNNING状態が長時間続きます。

解決策

Oracle Enterprise Schedulerサーバーがクラッシュし、リカバリが行われていないために、ジョブがRUNNING状態になっている可能性があります。

この問題を解決するには、Oracle Enterprise Schedulerの現在のステータスをFusion Middleware Controlから確認します。

  1. リクエスト・プロセッサが実行していることを確認します。

    1. ナビゲーション・ペインで、ファーム、「スケジューリング・サービス」を展開します。

    2. 適切な管理対象サーバーのESSAPPアプリケーションを選択します。

    3. スケジューリング・サービスのホームページの「スケジューラ・コンポーネント」セクションで、「リクエスト・プロセッサ」が有効で起動済であることを確認します。

      実行中でない場合は、起動してください。「リクエスト・プロセッサまたはディスパッチャの起動と停止」を参照してください。

  2. Oracle Enterprise Schedulerサーバーが実行中であることを確認し、実行中でない場合は起動します。

    1. ナビゲーション・ペインでファームを開いて「WebLogicドメイン」を開きます。

    2. Oracle Enterprise Schedulerクラスタを選択します。

    3. 「WebLogicクラスタ」ページの「サーバー」セクションで、「ステータス」列を確認し、Oracle Enterprise Schedulerサーバーが実行中であることを確認します。

    4. サーバーのステータス表示がダウン(赤の下向き矢印)である場合は、「名前」列でサーバー名をクリックします。

    5. WebLogic Serverホームページで、「WebLogic Server」メニューから、「コントロール」「起動」を選択します。

  3. ジョブ出力でジョブが進行していることを確認します。「ジョブ・リクエストの詳細の表示」を参照してください。

    Oracle Enterprise Schedulerサーバーを再起動したときに、そのサーバーで実行されている同期ジョブの状態はERROR状態に遷移します。

B.4.3 非同期ジョブがRUNNING状態のまま完了しない

問題

PLSQL、非同期SOAサービスを呼び出すJavaジョブおよび非同期Oracle Application Development Framework (Oracle ADF) Business Componentサービスを呼び出すJavaジョブは、別のJava仮想マシン(JVM)または別のマシンで実行されます。このような場合、Oracle Enterprise Schedulerは、処理後にジョブの結果を定義する完了ステータスを送信するリモート・ジョブに依存します。しかし、このメッセージが生成されなかったり失われると、ジョブがRUNNING状態のままになることがあります。さらに、ジョブ・セットの後続のステップが実行されなかったり、非互換ジョブが無期限にブロックされることがあります。

解決策

この問題を解決するには、「非同期スケジュール済ジョブのトラブルシューティング」で説明する手順に従います。

B.4.4 非同期Java SOAジョブのRUNNING状態が続く

問題

非同期SOAサービスを呼び出すジョブは別のJava仮想マシン(JVM)または別のマシンで実行されます。このような場合、Oracle Enterprise Schedulerは、処理後にジョブの結果を定義する完了ステータスを送信するリモート・ジョブに依存します。しかし、様々な原因でこのメッセージが生成されないことがあります。

解決策

この問題を解決するには、ネイティブ・ジョブの問題を解決する必要があります。

このタイプの非同期SOAジョブ問題を解決するには:

  1. 「Oracle Enterprise Schedulerのジョブ・リクエストの検索」の説明に従って、リクエストを検索します。

  2. 「リクエスト詳細」ページの「アクション」メニューから、「リクエスト・ログ」を選択してログ・メッセージを表示します。「リクエスト詳細」ページの詳細は、「ジョブ・リクエストの詳細の表示」を参照してください。

    「ログ・メッセージ」ページが表示されます。デフォルトで、ユーザーがリクエストのログを表示したときに表示されるメッセージは、Oracle Enterprise Schedulerクラスタのスコープでログ記録されたメッセージのみです。(ESSAPPアプリケーションがクラスタにデプロイされていない場合は、管理対象サーバーのスコープ内でログ記録されたメッセージが表示されます)。しかし、Oracle Enterprise Schedulerは、リクエストに関連付けられたECIDを、Oracle SOA SuiteやOracle ADFなどのサブシステム全体に伝播します。

  3. 「ECID」フィールドの値をメモしておきます。

  4. 「広範囲のターゲット・スコープ」リストから、/farm_name/domain_name (Oracle WebLogicドメイン)を選択して、ドメイン全体のメッセージを表示します。

  5. Oracle WebLogic Serverドメインの「ログ・メッセージ」ページの「選択したターゲット」セクションで、「リクエスト詳細」ページで取得した値を持つ「ECID」フィールドが検索に含まれていることを確認します。

  6. Oracle SOA SuiteおよびECIDのログ・レコードを検索して表示し、問題をメモします。「Oracle Enterprise Schedulerログ・レベルの設定」を参照してください。

  7. ECIDを使用してSOAコンポジット・アプリケーション・インスタンスの監査証跡を表示します。

    1. ナビゲーション・ペインで、ファーム、「SOA」「SOAインフラ」を展開します。

    2. 「SOAインフラストラクチャ」ページで、「インスタンス」タブをクリックします。

    3. 「検索」セクションで、「ECID」フィールドにECIDを入力します。

    4. 「検索」をクリックし、そのECIDのインスタンスを検索します。

    5. 「インスタンス」表内の「インスタンスID」フィールド内のIDをクリックして、インスタンスを選択します。

      「フローのトレース」ページが表示されます。

    6. インスタンスの監査証跡を確認し、コンポジットが正常に終了したのか、またはエラーで終了したのかを調べます。「フローのトレース」ウィンドウの詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』のBPELプロセス・サービス・コンポーネントの監査証跡およびプロセス・フローの表示に関する項を参照してください。

  8. SOAコンポジットが完了していてジョブがまだOracle Enterprise Schedulerで実行中である場合は、「リクエスト詳細」ページでジョブを手動で完了させます。関連する情報は、「非同期スケジュール済ジョブのトラブルシューティング」を参照してください。

B.4.5 非同期Java Oracle ADFビジネス・コンポーネント・ジョブのRUNNING状態が続く

問題

非同期Oracle ADFビジネス・コンポーネント・サービスを呼び出すジョブは別のJVMまたは別のコンピュータで実行されます。このような場合、Oracle Enterprise Schedulerは、処理後にジョブの結果を定義する完了ステータスを送信するリモート・ジョブに依存します。しかし、様々な原因でこのメッセージが生成されないことがあります。

解決策

この問題を解決するには、ネイティブ・ジョブの問題を解決する必要があります。

このタイプの同期Oracle ADFビジネス・コンポーネント・ジョブ問題を解決するには:

  1. 「Oracle Enterprise Schedulerのジョブ・リクエストの検索」の説明に従って、リクエストを検索します。

  2. 「リクエスト詳細」ページの「アクション」メニューから、「リクエスト・ログ」を選択してログ・メッセージを表示します。「リクエスト詳細」ページの詳細は、「ジョブ・リクエストの詳細の表示」を参照してください。

    「ログ・メッセージ」ページが表示されます。デフォルトで、ユーザーがリクエストのログを表示したときに表示されるメッセージは、Oracle Enterprise Schedulerクラスタのスコープでログ記録されたメッセージのみです。(ESSAPPアプリケーションがクラスタにデプロイされていない場合は、管理対象サーバーのスコープ内でログ記録されたメッセージが表示されます)。しかし、Oracle Enterprise Schedulerは、リクエストに関連付けられたECIDを、Oracle SOA SuiteやOracle ADFなどのサブシステム全体に伝播します。

  3. 「ECID」フィールドの値をメモしておきます。

  4. 「広範囲のターゲット・スコープ」リストから、/farm_name/domain_name (Oracle WebLogicドメイン)を選択して、ドメイン全体のメッセージを表示します。

  5. Oracle WebLogic Serverドメインの「ログ・メッセージ」ページの「選択したターゲット」セクションで、「リクエスト詳細」ページで取得した値を持つ「ECID」フィールドと「コンポーネント名」フィールドが検索に含まれていることを確認します。

  6. Oracle ADFビジネス・コンポーネントのログ・レコードおよびECIDのWebサービス・スタックを検索して表示し、問題をメモします。『Oracle Fusion Middleware管理者ガイド』のログ・ファイルの検索と表示に関する項を参照してください。

  7. Oracle ADFビジネス・コンポーネントが正常に終了したのか、またはエラーで終了したのかを調べます。

  8. サービスが完了していてジョブがまだOracle Enterprise Schedulerで実行中である場合は、「リクエスト詳細」ページでジョブを手動で完了させます。関連する情報は、「非同期スケジュール済ジョブのトラブルシューティング」を参照してください。

B.4.6 非同期PL/SQLジョブのRUNNING状態が続く

問題1

PL/SQLジョブは別のマシンで実行されます。このような場合、Oracle Enterprise Schedulerは、処理後にジョブの結果を定義する完了ステータスを送信するリモート・ジョブに依存します。しかし、様々な原因でこのメッセージが生成されないことがあります。

解決策1

Oracle Enterprise Scheduler内で、PL/SQLジョブはジョブ名で識別できます。ジョブ定義名は、リクエストに関連付けられているFusion Middleware Controlの「リクエスト詳細」ページで確認できます。「ジョブ・リクエストの詳細の表示」を参照してください。

この問題を解決するには、ネイティブ・ジョブの問題を解決します。詳細は、「非同期PL/SQLジョブのトラブルシューティング」を参照してください。

問題2

Oracle Enterprise Schedulerは内部でデータベース管理システム(DBMS)のスケジューラを使用して、PL/SQLジョブをスケジュールします。場合によっては、Oracle Enterprise SchedulerがジョブをDBMSスケジューラに送信し、状態をRUNNINGに設定したのに、DBMSスケジューラでジョブ・リクエストがスケジュールされないことがあります。

解決策2

この問題の解決方法:

  1. DBMSスケジューラのリソース使用状況を確認します。『Oracle Database管理者ガイド』の「Oracle Schedulerの管理」の章を参照してください。

  2. PL/SQLジョブ制限を構成し、PL/SQLジョブのスロットル制限を変更します。「稼働シフトの管理」を参照してください。

B.4.7 ジョブがスケジュール時間に実行されない

問題

ジョブのスケジュール時間に到達しても、ジョブが実行されません。

解決策

この問題を解決するには、Fusion Middleware Controlの「リクエスト詳細」ページを確認します。このページには組込み診断があり、問題の内容が表示されます。エラーになったジョブの場合、「リクエスト詳細」ページにその理由が表示され、「アクション」メニューからジョブ・リクエスト・ログにアクセスできます。「ジョブ・リクエストの詳細の表示」を参照してください。

ジョブ診断の詳細は、「ジョブ診断」を参照してください。

B.4.8 手動エラー・リカバリを要する非同期Javaジョブ

問題

ジョブがERROR_MANUAL_RECOVERY状態になります。ジョブがエラー手動リカバリの状態になる理由は様々です。たとえば非同期ジョブの場合、エラーの発生により、ジョブが正常に起動されたどうかをジョブ実装が知ることができず、エラー手動リカバリ例外がスローされます。ジョブがエラー手動リカバリになる理由については、「手動リカバリの手順」を参照してください。

解決策

この問題を解決するには、ジョブ・ステータスを手動で完了の状態に更新します。「手動リカバリを要する同期Javaジョブの処理」および「手動リカバリを要するスタック非同期ジョブの処理」を参照してください。

B.4.9 手動エラー・リカバリを要する生成された(プロセス・タイプ)ジョブ

問題

生成されたプロセス・タイプのジョブがERROR_MANUAL_RECOVERY状態になります。

解決策

この問題を解決するには、次の手順を実行してリクエストを終了状態に移します。

  1. 「リクエスト詳細」ページで、生成されたホストおよびプロセスIDを特定します。「リクエスト詳細」ページの詳細は、「ジョブ・リクエストの詳細の表示」を参照してください。

  2. ホストでまだプロセスが実行している場合は、ジョブが完了するまで待つか、終了させます。

  3. プロセスが実行中でない場合は、エラー状態に遷移させるためリクエストをリカバリします。これは、自動再試行(構成されている場合)に依存します。Fusion Middleware Controlで、次の手順を実行します。

    1. 「Oracle Enterprise Schedulerのジョブ・リクエストの検索」の説明に従って、リクエストを検索します。「ステータス」の値を選択するときに、「取消」「手動リカバリ・エラー」を選択します。

    2. 「リクエスト詳細」ページの「アクション」メニューから、「スタック・リクエストのリカバリ」を選択します。「リクエスト詳細」ページの詳細は、「ジョブ・リクエストの詳細の表示」を参照してください。

      CANCELLED状態のリクエストがCANCELLED状態になり、ERROR_MANUAL_RECOVER_STATEのリクエストはERROR状態になり、適切なエラー・メッセージが指定されます。ユーザーが指定したエラー・メッセージが「リクエスト詳細」ページに表示されます。

    3. ジョブの状態を手動で更新してジョブを完了させます。「手動リカバリを要する同期Javaジョブの処理」および「手動リカバリを要するスタック非同期ジョブの処理」を参照してください。

ジョブの手動リカバリの詳細は、「手動リカバリの手順」を参照してください

B.4.10 ジョブのCANCELLING状態が続く

問題

ジョブを取り消したときに、CANCELLING状態が続いたまま、ジョブが取り消されないことがあります。リクエスト取消しの結果がどうなるかは、取消し操作を実行したときのリクエストの処理ステージと、そのステージの結果によって決まります。多くのジョブが非同期ADFサービスの呼出しとして実装されます。アプリケーション・インフラストラクチャでは進行中サービス・リクエストの取消しがサポートされないため、予期したとおりにジョブを取り消すことがきません。また、これ以外の理由でもジョブがCANCELLING状態でスタックすることがあります。

  • PL/SQLジョブでは、Oracle Enterprise SchedulerはRDBMSスケジューラ・ジョブの強制終了を試みます。生成されたプロセスの場合、Oracle Enterprise Schedulerは実行中のプロセスの強制終了を試みます。ジョブが正常に強制終了された場合、リクエストはCANCELLED状態になります。強制終了が成功する前にジョブが完了した場合、リクエストがどの状態に遷移するかは、ジョブ実行の結果によって決まります。これらのタイプのジョブでは、この問題は発生しません。

  • 非同期Javaジョブ: リクエストは取り消されますが、リモート・ジョブが終了ステータスをOracle Enterprise Schedulerに通知しません。これは、AsyncCancellableインタフェースが実装されていないか、リモートの取消し操作の失敗が原因で、ジョブがまだ実行を続けている場合に発生します。リモート・システムが応答できない場合にも発生する可能性があります。

  • 同期Javaジョブ: リクエストは取り消されますが、ジョブがまだ実行しています。これは、Cancellable()インタフェースが実装されていないか、ジョブのExecutable.execute()メソッドがCancellable.cancelの呼出し後に返らないことが原因で、発生します。Executableインタフェースの詳細は、『Oracle Fusion Middleware Oracle Enterprise Scheduler開発者ガイド』の「Oracle Enterprise Schedulerサンプル・アプリケーションのユースケース」を参照してください。

  • ジョブ・セット(親-子リクエスト): ジョブ・セットの場合、取消し操作はすべての資格のある子リクエストに伝播されます。すべての子リクエストが完了するまで、親リクエストはCANCELLING状態に留まります。

  • SOA Javaジョブ: ジョブがエラーで終了した場合は、コンポジット・インスタンスを探し監査証跡とECIDタグが付いたログを確認して、Fusion Middleware ControlでECIDを探し、何が発生したのかを確認します。ECIDの検索の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』のBPELプロセス・サービス・コンポーネントの監査証跡およびプロセス・フローの表示に関する項を参照してください。

  • Oracle ADFビジネス・コンポーネントJavaジョブ: リクエストがエラーで終了する場合は、次のディレクトリにあるserver-name-diagnostic.logファイルでメッセージIDを探し、何が発生したのかを確認します。

    (UNIX) DOMAIN_HOME/servers/server_name/logs
    (Windows) DOMAIN_HOME\servers\server_name\logs
    

    ログ・ファイルの表示の詳細は、『Oracle Fusion Middleware管理者ガイド』のログ・ファイルの表示と検索に関する項を参照してください。

解決策

Fusion Middleware Controlで手動の介入操作を行い、CANCELLING状態でスタックしているジョブを完了させます。

スタックしている非同期リクエストのリカバリを行うには、リモート・ジョブがまだ実行中であるかどうかを確認します。実行中の場合は、Oracle Enterprise Scheduler側で行う操作はありません。リモート・ジョブがもう実行していない場合は、Fusion Middleware Controlで次の手順を実行し、リクエストを完了させます。

  1. 「Oracle Enterprise Schedulerのジョブ・リクエストの検索」の説明に従って、リクエストを検索します。

  2. 「リクエスト詳細」ページの「アクション」メニューから、「スタック・リクエストのリカバリ」を選択します。「リクエスト詳細」ページの詳細は、「ジョブ・リクエストの詳細の表示」を参照してください。

同期Javaジョブの場合は、ジョブが完了するまで待ちます。ジョブが完全に止まってしまっている状態の場合は、ジョブの実行先のサーバーを再起動する必要があります。

B.4.11 データベース負荷の高い2個のジョブを同時に実行するとパフォーマンスとスケーラビリティが低下する

問題

データベース負荷の高い2個のジョブを同時に実行するとパフォーマンスとスケーラビリティが低下します。

ジョブ・パフォーマンスの問題を確認するには:

  1. オペレーティング・システム・レベルのツールまたはデータベース管理システム(DBMS)ツールを使用して、Oracleデータベース全体のパフォーマンス・メトリックを確認し、パフォーマンスのボトルネックをこれらの同時実行される2つのジョブにまで切り分け、チューニングを実施できるようにします。

  2. ジョブの実行時間を確認します。

    1. ナビゲーション・ペインで、ファーム、「スケジューリング・サービス」を展開します。

    2. 適切な管理対象サーバーのESSAPPアプリケーションを選択します。

    3. スケジューリング・サービスのホームページで、「長時間実行しているジョブ・リクエストの上位10」タブをクリックしてジョブを表示します。

解決策

この問題を解決するには、次のいずれかの手順を実行します。

  • データベース負荷の高い2つのジョブを非互換として設定します。2つのジョブを同時実行しないように設定することがありますが、それはジョブが非互換で同時実行するとシステム障害を招く恐れがあるという理由ではなく、両方のジョブが同じリソースに大量の負荷を与えるという理由から、そのように設定する場合もあります。この場合、ジョブを非互換として定義して、同時に実行しないようにします。「非互換性の管理」を参照してください。

  • ジョブを別の時間にスケジュールします。「Oracle Enterprise Schedulerジョブ・リクエストの送信」を参照してください。

B.4.12 新しく追加したサーバーが利用されない、または不適切なジョブを実行する

問題

新しく追加した管理対象サーバーが予期したとおりにジョブを実行しない、またはまったく利用されていません。

ジョブ履歴を見ると、このサーバーでジョブが実行されている形跡がない、またはこのサーバーで実行すべきではない特定のジョブが実行されていることを確認できます。

ジョブ履歴を表示するには:

  1. ナビゲーション・ペインで、ファーム、「スケジューリング・サービス」を展開します。

  2. 適切な管理対象サーバーのESSAPPアプリケーションを選択します。

  3. ジョブ履歴で、このサーバーでジョブが実行されている形跡がないことを確認します。

  4. 「Oracle Enterprise Schedulerのジョブ・リクエストの検索」の説明に従ってリクエストを検索し、すでに実行されたジョブのリストを表示します。

  5. 「リクエスト検索」ページで「リクエストID」列からジョブをクリックし、ジョブの「リクエスト詳細」ページに移動します。

  6. 「リクエスト詳細」ページの「実行証跡」セクションで、ジョブが実行された「ディスパッチャ」「プロセッサ」「作業割当て」および「稼働シフト」を確認します。

解決策

新しいサーバーを追加すると、Oracle Enterprise Schedulerはデフォルトの作業割当てを使用できるかどうかを、他のプロセッサのバインド状況を基に判断します。デフォルトの作業割当てを使用できない場合、ヘルス・チェック・サービス(内部作業割当てESSInternalWA)のみを実行するように新しいサーバーが構成されます。このデフォルト構成に再びアクセスして、このサーバーへの作業割当てバインディングを任意に構成し、ヘルス・チェックの完了後に内部作業割当てを削除します。詳細は、「Oracle Enterprise Schedulerクラスタの拡張」を参照してください。

B.4.13 Oracle Enterprise Schedulerランタイム・システムからエラーがスローされる

問題

Oracle Enterprise Schedulerランタイム・システムが正常に動作せず、ジョブの処理時にエラーがスローされる、または問題が発生します。

解決策

この問題を特定および解決するには、Oracle Enterprise Schedulerシステム・ログを確認し、問題を解決します。Fusion Middleware Controlで、次を実行します。

  1. 「Oracle Enterprise Schedulerのジョブ・リクエストの検索」の説明に従って、リクエストを検索します。

  2. 「リクエスト詳細」ページの「アクション」メニューから、「リクエスト・ログ」を選択してログ・メッセージを表示します。「リクエスト詳細」ページの詳細は、「ジョブ・リクエストの詳細の表示」を参照してください。

  3. ログ・レベルを調整するには:

    1. ナビゲーション・ペインで、ファーム、WebLogicドメイン、Oracle Enterprise Schedulerクラスタを展開し、Oracle Enterprise Schedulerサーバー(たとえば、ess_server1)を選択します。

      WebLogic Serverのホームページが表示されます。

    2. 「WebLogic Server」メニューから、「ログ」「ログ構成」を選択して「ログ構成」ページを表示します。

Oracle WebLogic Serverのlogging.xmlファイルを変更して、Oracle WebLogic Serverに対するOracle Enterprise Schedulerサーバー・ログ出力を構成できます。デフォルトで、Oracle Enterprise Schedulerの明示的なログ出力エントリはありません。Oracle Enterprise Schedulerは、親のログ出力(通常は"oracle"ログ出力または("")ルート・ログ出力)で構成されたロギング・レベルとログ・ハンドラを継承します。

デフォルトで、Oracle Enterprise Schedulerサーバー・ログ出力のログ・メッセージは、Oracle WebLogic ServerのOracle WebLogic Server診断ログ・ファイルで確認できます。ロギングとログ・レベルの詳細は、「Oracle Enterprise Schedulerログ・レベルの設定」を参照してください。

注意:

ログ出力には、Oracle WebLogic Serverで実行されているOracle Enterprise Schedulerジョブが書き込んだログしか表示されません。Oracle Enterprise Schedulerが実行中のPL/SQLジョブおよびCジョブのコントロールを、PL/SQLプロセスまたはCプロセスにそれぞれ移すと、PL/SQLおよびCジョブは別のプロセスで実行されるため、PL/SQLおよびCジョブのロギング・データはOracle Enterprise Schedulerのログには書き込まれません。

B.4.14 Oracle Enterprise Schedulerのデータベース接続不足

問題

Oracle Enterprise Schedulerでデータベース接続が不足する場合、Oracle Enterprise Schedulerに接続リークの問題が発生している可能性があります。

説明

『Oracle Fusion Middleware管理者ガイド』のデータ・ソース接続の不足に関する項を参照してください。

B.4.15 ジョブの停止によりジョブ・キューが一杯になる

問題

一部のジョブが予期したとおりに動作しないことがあります。一部のジョブがスピンまたは停止していたり、ジョブにメモリー・リークが存在する場合に、ジョブ・キューが長くなることがあります。

解決策

次に、一般的なシナリオを示します。

  • Javaジョブが無限ループに入り、キュー内にそのジョブの終了を待っているジョブがあります。

    この問題を解決するには、Fusion Middleware Controlで次の手順を実行します。

    1. ナビゲーション・ペインで、ファーム、「スケジューリング・サービス」を展開します。

    2. 適切な管理対象サーバーのESSAPPアプリケーションを選択します。

    3. 「スケジューリング・サービス」メニューから、「リクエスト・プロセッサ」「構成」を選択し、「リクエスト・プロセッサの構成」ページの「スレッド数」フィールドを確認します。「リクエスト・プロセッサの構成」を参照してください。

      「スレッド数」フィールドが25同期Javaジョブに設定されている場合、RUNNING状態になることができるのは25個のJavaジョブであり、その他すべてのJavaジョブは処理されるまでキューで待つことになります。

      一部のジョブで過負荷の処理が実行されている場合やジョブの停止が疑われる場合は、専用の作業割当てを定義して、それらのジョブを特定のOracle Enterprise Schedulerサーバーで実行し、他のジョブは残りのサーバーで実行させるようにして、問題のジョブを分離します。「作業割当ての作成または編集」を参照してください。

    4. Oracle Enterprise Schedulerサーバーを再起動します。

      1. ナビゲーション・ペインでファームを開いて「WebLogicドメイン」を開きます。

      2. Oracle Enterprise Schedulerクラスタを展開し、Oracle Enterprise Schedulerサーバーを選択します。

      3. WebLogic Serverホームページで、「WebLogic Server」メニューから、「コントロール」「停止」を選択します。

      4. サービスの停止後、WebLogic Serverホームページで、「WebLogic Server」メニューから、「コントロール」「起動」を選択します。

        サーバーの再起動後、Oracle Enterprise SchedulerはRUNNINGジョブをERROR状態に移し、キュー内の次のジョブ・バッチの処理を開始します。

  • PL/SQLジョブが無限ループに入り、終了しません。送信済のPL/SQLジョブが他にも多数あります。

    PLSQLジョブを取り消し、ジョブをCANCELLED状態に移動します。「Oracle Enterprise Schedulerジョブ・リクエストの取消し」を参照してください。

  • 大規模なデータベース挿入および更新により、ジョブが待機状態になります。

    たとえば、表に対して100万件の挿入、更新および削除を行うPL/SQLプロシージャがあるとします。DBMSの負荷によっては、そのようなPL/SQLプロシージャが完了するまでに20分から2時間かかることがあります。PLSQL同時実行性制限を25に設定した、wa1という名前の作業割当てが作成されたとします。多数のPL/SQLジョブがあり、各ジョブがこのPL/SQLプロシージャを実行するとします。

    この場合、Oracle Enterprise Schedulerサーバーは一度に25個のPL/SQLジョブしか実行しません。各PL/SQLジョブが完了するのに1から2時間かかるため、残りのPL/SQLジョブはWAIT状態ではありません。RUNNINGジョブの完了後、WAITキューの先頭のジョブが選択され実行がスケジュールされます。