ヘッダーをスキップ
Oracle® Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド
11gリリース1 (11.1.1.7)
B55916-10
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

B Oracle SOA SuiteとOracle BPM Suiteのトラブルシューティング

この付録では、ロギング・レベルの設定、パラレル・パージと表のパーティション化の問題、接続およびトランザクション・タイムアウトの問題、ランタイム診断の問題、ヒューマン・ワークフローの問題、イベント配信ネットワーク(EDN)の問題、パフォーマンスの問題、サーバー起動のベスト・プラクティス、ブラウザの問題など、Oracle SOA SuiteとOracle BPM Suiteの使用時に発生する可能性がある問題をトラブルシューティングする方法について説明します。その他のトラブルシューティング情報の参照先も示されています。

この付録では次の項について説明します。

B.1 トラブルシューティングのためのロギング・レベルの設定

トラブルシューティングを容易にするために、Oracle Enterprise Manager Fusion Middleware Controlで、ロギング・レベルを「TRACE:32 FINEST」レベルに設定することをお薦めします。この項では、このレベルに設定するロガーについて説明します。

トラブルシューティングのためにロギング・レベルを設定する手順は、次のとおりです。

  1. 「ログ構成」ページにアクセスする手順については、第3.4項「ログ・ファイルの構成」を参照してください。

  2. 「Oracle Diagnostic Loggingレベル(Javaレベル)」リストから、次の親ロガーを「TRACE:32 FINEST」レベルに設定します。

    • oracle.soa

    • oracle.fabric

    • oracle.integration

    • oracle.wsm (このロガーは、「ERROR」レベルの設定でも必要なエラー・メッセージが記録されるため、この設定でも問題ありません)

  3. さらに詳細なロギング管理を行う場合は、親ロガーを展開して、次の任意のロガーを設定します。

    コンポーネント ロガー

    ヒューマン・ワークフロー、承認管理の拡張(AMX)、ルール

    • oracle.soa.services.common

    • oracle.soa.services.identity

    • oracle.soa.services.notification

    • oracle.soa.services.rules

    • oracle.soa.services.rules.obrtrace

    • oracle.soa.services.workflow

    • oracle.soa.services.workflow.common

    • oracle.soa.services.workflow.evidence

    • oracle.soa.services.workflow.metadata

    • oracle.soa.services.workflow.persistency

    • oracle.soa.services.workflow.query

    • oracle.soa.services.workflow.report

    • oracle.soa.services.workflow.runtimeconfig

    • oracle.soa.services.workflow.soa

    • oracle.soa.services.workflow.task

    • oracle.soa.services.workflow.task.dispatch

    • oracle.soa.services.workflow.task.routing

    • oracle.soa.services.workflow.user

    • oracle.soa.services.workflow.verification

    • oracle.soa.services.workflow.performance - ワークフロー・パフォーマンスAPI

    • oracle.soa.services.workflow.worklist - Oracle BPM Worklist

    SOAインフラストラクチャ

    • oracle.fabric.common.wsdl - WSDLおよびスキーマの管理

    • oracle.integration.platform.blocks.deploy - デプロイメント

    • oracle.integration.platform.blocks.soap - WSバインディング、Webサービスのコール

    • oracle.integration.platform.blocks.local - ローカル・バインディング

    • oracle.integration.platform.kernel - 起動の問題

    • oracle.integration.plaform.blocks.mesh - メッセージのルーティング

    • oracle.integration.platform.common - メタデータ、MDS

    • oracle.integration.platform.instance - インスタンス

    • oracle.integration.platform.instance.activity - インスタンス

    • oracle.integration.platform.instance.store - インスタンス

    EDN

    • oracle.integration.platform.blocks.event

    • oracle.integration.platform.blocks.event.saq

    • oracle.integration.platform.blocks.event.jms

    デプロイメント

    oracle.integration

    Oracle Mediator

    • oracle.soa.mediator.common - Oracle Mediatorの監査メッセージの永続性に関連する処理イベントが記録されます。

    • oracle.soa.mediator.common.cache - メタデータ・キャッシュ(RuntimeMetadataCache)およびランタイム関連のキャッシュ(RuntimeCache)。

    • oracle.soa.mediator.common.error - エラーのエンキューと処理に関連する情報が記録されます。

    • oracle.soa.mediator.common.error.recovery - エラーのリカバリ処理のみが記録されます。すべてのフォルト・ポリシー・ハンドラは、このロガーに含まれます。

    • oracle.soa.mediator.common.listener - Oracle Mediatorのパラレル・ルーティング・ルールおよびリシーケンサ用の共通インフラストラクチャに関連する処理。

    • oracle.soa.mediator.common.message - Oracle Mediatorメッセージの作成と変更に関連する情報が記録されます。(Oracle Mediatorでは、正規化メッセージをOracle Mediatorメッセージにラップします。)

    • oracle.soa.mediator.common.persistence - Oracle Mediatorにおけるデータベースへの遅延メッセージの永続性に関連する情報が記録されます。

    • oracle.soa.mediator.dispatch - Oracle Mediator内のメッセージ・ルーティング関連のすべてが記録されます。これには、順次ルーティング、パラレル・ルーティングおよび動的ルーティングが含まれます。

    • oracle.soa.mediator.dispatch.db - 遅延メッセージおよびコンテナIDのインフラストラクチャに関連する情報が記録されます。

    • oracle.soa.mediator.dispatch.resequencer.toplink - リシーケンサのデータベース通信に関連する情報が記録されます。これには、3つのすべてのリシーケンサ戦略の実行が含まれます。

    • oracle.soa.mediator.monitor - Oracle Mediatorのインスタンス・トラッキングに関連するすべてのイベントが記録されます。

    • oracle.soa.mediator.resequencer - Oracle Mediatorのリシーケンサ処理に関連するすべて(ロッカーとワーカーのインフラストラクチャ、グループおよびシーケンサIDの式の評価など)を記録します。

    • oracle.soa.mediator.resequencer.besteffort - ベスト・エフォート戦略のリシーケンサ用(特に、ステージング処理のロック)。

    • oracle.soa.mediator.resequencer.fifo - FIFO戦略のリシーケンサ用。

    • oracle.soa.mediator.resequencer.standard - 標準戦略のリシーケンサ用。

    • oracle.soa.mediator.service - Oracle Mediatorの様々なメッセージ交換パターン(一方向、双方向、同期、非同期など)の処理に関連するイベントが記録されます。

    • oracle.soa.mediator.service.common.functions - Oracle MediatorのXPath拡張関数に関連するログ

    • oracle.soa.mediator.service.filter - ルーティング・ルールのフィルタ基準の評価。

    • oracle.soa.mediator.service.transformation - 変換に関連するイベントが記録されます(変換前および変換後のペイロードなど)。

    • oracle.soa.mediator.serviceEngine - Oracle Mediatorサービス・エンジンのライフサイクル・イベントが記録されます。また、Oracle Mediatorのメッセージの入出力も記録されます。

    Oracle BPEL Process Manager

    • oracle.soa.bpel

    • oracle.soa.bpel.console

    • oracle.soa.bpel.engine

    • oracle.soa.bpel.engine.activation

    • oracle.soa.bpel.engine.agents

    • oracle.soa.bpel.engine.bpel

    • oracle.soa.bpel.engine.compiler

    • oracle.soa.bpel.engine.data

    • oracle.soa.bpel.engine.delivery

    • oracle.soa.bpel.engine.deployment

    • oracle.soa.bpel.engine.dispatch

    • oracle.soa.bpel.engine.sensor

    • oracle.soa.bpel.engine.translation

    • oracle.soa.bpel.engine.ws

    • oracle.soa.bpel.engine.xml

    • oracle.soa.bpel.entity

    • oracle.soa.bpel.jpa

    • oracle.soa.bpel.system

    Oracle BPM Suite

    oracle.bpm.bpmn.engine

    Oracle B2B

    • oracle.soa.b2b.apptransport - ランタイム・ロガー

    • oracle.soa.b2b.engine - ランタイム・ロガー

    • oracle.soa.b2b.transport - ランタイム・ロガー

    • oracle.soa.b2b.ui - ユーザー・インタフェース・ロガー

    • oracle.soa.b2b.repository - リポジトリ・アクセスの詳細なロガー

    Oracleアダプタ

    oracle.soa.adapter

    Oracle Web Services Manager (OWSM)

    oracle.wsm - デフォルトでは、「ERROR」レベルに設定されており、すべてのWSM-0xxxxエラーが記録されます。「TRACE:32」に設定すると、かなり詳細なログが記録されます。


  4. 「Oracle Diagnostic Loggingレベル(Javaレベル)」リストから、ロガーレベルを次のいずれかの設定に変更します。

    • TRACE:1 (FINE)

    • TRACE:16 (FINER)

    • TRACE:32 (FINEST) - 最も詳細なレベル(トラブルシューティングのために推奨)

    変更が有効になるまで数分かかります。

Oracle Business Activity Monitoring (BAM)ログの監視の詳細は、第25.6項「Oracle BAMのログの監視」を参照してください。Oracle User Messaging Service (UMS)ログの監視の詳細は、第28.2項「ログ・ファイルの表示」を参照してください。

B.1.1 すべての管理対象サーバーからのログ・ファイルおよびスレッド・ダンプ

表B-1に、確認するログ・ファイルと取得するスレッド・ダンプを示します。

表B-1 ログ・ファイルとスレッド・ダンプ

出力 説明

サーバー診断ログ

次のファイルを確認します。

$DOMAIN_HOME/servers/server_name/logs/server_name-diagnostic.log

たとえば、server_namesoa_server1の場合は、soa_server1-diagnostic.logです。

これは、ログ出力を入手できる場所です。デフォルトでは、最新分100 MBの診断ログのみが保持されます。

サーバー・ログ

server_name.log (たとえば、server_namesoa_server1の場合は、soa_server1.logです)

サーバー・コンソールの出力

<stdout>も役に立ちます(特に、デプロイおよびパッチの問題の場合)。

サーバーのスレッド・ダンプ

オペレーティング・システムのコマンド・プロンプトで、次のように入力します。

kill -3 managed_server_process_ID

また、Oracle WebLogic Server管理コンソールを使用することもできます。

  1. Oracle WebLogic Server管理コンソールのナビゲーション・ツリーで、「環境」「サーバー」の順に選択します。

  2. 表の中から、サーバーを選択します。

  3. 監視」タブを選択します。

  4. 「スレッド」タブを選択します。

  5. 「スレッド・スタックのダンプ」をクリックします。

出力がコンソール・ログに表示されます。

OWSMメッセージ・ログ

次のログに、ネットワーク上のすべてのSOAPメッセージがキャプチャされます。

$DOMAIN_HOME/servers/server_name/logs/owsm/msglogging/diagnostic.log

このログは、デフォルトでは無効になっています。このログを有効にするには、次の手順を実行します。

  1. 「Fusion Middleware Control」「WebLogicドメイン」「Webサービス」「ポリシー」の順に移動します。

  2. ログを有効にするセキュリティ・レベルを選択します。

  3. ポリシーを編集して、ログのアサーションを有効にします。


B.2 パラレル・パージと表のパーティション化の問題

この項では、パラレル・パージと表のパーティション化の問題をトラブルシューティングする方法について説明します。監査レベルの推奨事項も示します。

詳細は、第10章「データベース増分の管理」を参照してください。

B.2.1 パラレル・パージ・スクリプトの実行

この項では、Oracle SOA Suiteデータベースが管理されておらず、領域を再利用する必要がある状況について説明します。また、この項では、日々の通常の実行に適切なパラメータ設定の識別方法についても説明します。

領域の再利用を試行する際は、パージ・スクリプトを頻繁に実行して、作成されているより大幅に多くのSOAコンポジット・アプリケーションを削除する必要があります。これは、長い待機キューを回避するために監視する必要があるホストおよびデータベース・リソースに影響を与えます。

削除するSOAコンポジット・アプリケーションの目標数は、明確に定めておくことが必要です。そうしないと、パージ・スクリプトが過度に強力に構成される可能性があります。次の内容について説明します。

B.2.1.1 並列度値の指定

適切な並列度(DOP)値を指定する際は、ハードウェア・リソースを考慮する必要があります。DOPは、データベースによってスケジュールされるジョブの数と、ホスト上で同時に実行されるプロセスの数を識別します。

パラレル・パージ・ジョブはI/O集中型です。これは、CPUのみに負荷がかかるのではないことを意味します。ただし、次の式は出発点で、この後で、なんらかの増分を識別するためのテストと監視が必要とされます。

DOP <= PARALLEL_THREADS_PER_CPU x CPU_COUNT

パージ・ジョブは同時に実行されますが、実際にはリソースの競合を回避するために、30秒ずつ遅延させて実行されます。パージ・ジョブが同じSOAコンポジット・アプリケーションをめぐって競合することはないので、この遅延は小さな競合を回避するためではありません。この遅延は、パージ・ジョブの経過時間と関係します。たとえば、DOPが10の場合は、10番目のパージ・ジョブが270秒間スリープしてから開始することを意味します(つまり、(DOP - 1) * 30 sec)

大きなDOP数を指定した場合は、max_runtimeパラメータを適切に設定する必要があります。

B.2.1.2 削除するSOAコンポジット・アプリケーションの解析

領域を再利用する際は、当然のことながら、パージ・スクリプトの各実行でできるだけ多くのSOAコンポジット・アプリケーションを削除したいと考えます。しかし、スクリプトは適切なSOAコンポジット・アプリケーションのデータを解析する必要があり、これはパージの経過時間を独占する可能性があります。

そのため、日付およびmax_countパラメータを適度に設定して頻繁にパージ・スクリプトを実行することで、このデータを削減する必要があります。これを削減するには、パラレル・パージを頻繁に、おそらく1時間に2回程度スケジュールすることが必要です。

解析するSOAコンポジット・アプリケーションのセットは、次のパラメータによって識別されます。

  • min_creation_date

  • max_creation_date

  • retention_date

  • max_count

解析の経過時間を短縮するには、適度なmax_countパラメータ設定が最も効果的な方法です。出発点としてmax_countパラメータを小さく(50,000程度に)設定し、少しずつ増加して最適な値を見つけてください。表のサイズを縮小すると、max_countパラメータと日付の範囲を増加させることができます。


注意:

この削減方法は常に有効ではありません。より大量のデータを解析するために、パラレル問合せを使用することが必要な場合もあります。


B.2.1.3 パラレル問合せスレーブの使用

削減候補のSOAコンポジット・アプリケーションの解析は、主として複数のINSERT ... SELECT文によって実行されます。解析するSOAコンポジット・アプリケーションのセットが大きくなるほど、データベースのコストベースのオプティマイザは全表スキャンの実行を支持するようになります。表の大きな部分を通過する必要がある場合は、マルチブロックI/Oコールを実行する全表スキャンを実行するほうが索引アクセスよりも高速になる可能性があります。

パラレル問合せは、複数スレーブ・プロセスにわたって作業を調整および分散させることで、全表スキャンのパフォーマンスを大幅に改善できます。さらに、INSERTの部分のPARALLELヒントが、APPENDモードで実行されます。これはダイレクト・パス挿入によってパフォーマンスをさらに向上させます。

スケジュールされたパージ・ジョブと同様に、パラレル問合せスレーブはI/O集中型で、CPUのみに負荷がかかるわけではありません。ただし、PARALLELヒントのDOPを選択する際は、次の式を出発点とすると役立ちます。

DOP <= PARALLEL_THREADS_PER_CPU x CPU_COUNT

注意:

パラレル・パージ・ジョブの数を識別するためのDOP設定と、パラレル問合せスレーブの数を識別するためのDOP設定があります。これらのDOP設定は両方とも、ホスト上で実行されるプロセスの量を左右しますが、同時にではありません。INSERT ... SELECT文が最初に実行されてデータの解析が行われ、その後でパラレル・パージ・ジョブのスケジューリングが実行されます。


INSERT... SELECT文では、PARALLELヒントを、INSERTキーワードまたはSELECTの後、あるいは両方の後に指定できます。したがって、INSERT操作とSELECT操作の並列処理は互いに独立しています。文全体の適切なDOPは、次の優先順位ルールを使用して識別されます。

  • 文のINSERT部分のPARALLELヒント。

  • セッションの設定。

  • INSERT表のDOP。

  • 文内の任意の表の最大DOP設定。

パラレルDMLを実行するには、スクリプト内で次の文を実行する必要があります。

ALTER SESSION FORCE PARALLEL DML STATEMENT

たとえば、この文のDOPは、INSERTでは2SELECTでは4となっています。しかし、優先順位ルールに従うと、文全体のDOPは2になります。

INSERT /*+ PARALLEL(TBL_INS,2) */ INTO TBL_INS
SELECT /*+ PARALLEL(TBL_SEL,4) */ * FROM TBL_SEL;

注意:

必要な場合は、パージ・スクリプト内でDELETEおよびSUBSELECTコマンドにパラレル問合せを適用することもできます。


B.2.1.4 パージ操作のデバッグとトレース

この項では、デバッグとトレースの問題について説明します。

B.2.1.4.1 パージ操作のデバッグ

パージ・スクリプトには、各操作に関する詳細なタイムスタンプ付きの情報を提供するDEBUGフラグが装備されています。この情報を評価して、削除が困難なためにパージ・スクリプトの外部で表パーティション化によって管理したほうが適している表を識別できます。DEBUGフラグを設定する手順は次のとおりです。

  1. デバッグ・ログを書き込むオペレーティング・システム・ディレクトリを作成します。

    mkdir -p /,,/debuglogs
    
  2. SYSDBAアカウントを使用してデータベースに接続して、データベース・ディレクトリを作成します。

    SQL> CREATE OR REPLACE DIRECTORY SOA_PURGE_DIR AS '/../DEBUGLOGS';
    
  3. Oracle SOA Suiteスキーマ所有者に権限を付与します。

    SQL> GRANT READ, WRITE ON DIRECTORY SOA_PURGE_DIR TO DEV_SOAINFRA;
    
  4. Oracle SOA Suiteスキーマ所有者として接続して、DEBUGフラグを設定します。

    cd MW_HOME/SOA_ORACLE_HOME/rcu/integration/soainfra/sql/soa_purge/
    SQL> @DEBUG_ON.SQL;
    
  5. パージ・スクリプトを実行します。

    SQL> SET SEVEROUT ON
    SQL> EXECUTE_PURGE
    

    注意:

    または、SQL*Plus SPOOLコマンドを使用して、デバッグ情報をキャプチャします。


    パージの期間に関する自動ワークロード・リポジトリ(AWR)レポートも、経過時間と実行時間が最もかかるSQLの識別に役立ちます。

B.2.1.4.2 パージ操作のトレース

パラレル・パージ・スクリプトのパフォーマンスを診断するためにSQLトレースが必要とされる場合は、次が必要となります。

  1. プロシージャsoa.delete_instances_in_parallelsoa.delete_insts_in_parallel_jobを編集して、SQLトレース(10046)を追加します。

    SQL> EXECUTE IMMEDIATE 'ALTER SESSION SET EVENTS ''10046 TRACE NAME CONTEXT
    FOREVER,LEVEL 12''';
    

    注意:

    すべての引用符は一重引用符です。


    これによってパージ・セッションとスケジュールされたパージ・ジョブ(J000)のSQLトレースが、データベースのユーザー・ダンプの宛先に作成されます。

    SQL> SHOW PARAMETER DUMP
    
  2. トレース・ファイルで文字列dbms_scheduler.create_jobまたはdelete_instances_in_parallelを検索することで、メイン・データベース・セッションのトレースを識別します。

    grep -i dbms_scheduler.create_job *
    

    例:

    TESTORA2_ora_3893.trc
    

    スケジュールされたジョブの数はDOPによって異なります。たとえば、DOPが4の場合は、次のようになります。

    • TESTORA2_j000_9585.trc

    • TESTORA2_j001_9587.trc

    • TESTORA2_j002_9604.trc

    • TESTORA2_j003_9606.trc

    パラレル問合せスレーブをパージ・スクリプトにカスタマイズすると、それぞれにトレース・ファイル(P000)が作成されます。パラレル問合せトレース・ファイルの重要度は低くなります。なぜなら、他方のトレース・ファイルの問合せ計画がそれらの実行の説明を行うからです。例:

    PSOAORA2_p000_4284.trc
    
  3. トレース・ファイルでTKPROFを実行し、経過時間でソートして最もコストの大きなSQLを識別します。

    TKPROF TESTORA2_ORA_3893.TRC ../OUT/ TESTORA2_ORA_3893.OUT WAITS=YES
    SYS=YES AGGREGATE=YES SORT=EXEELA
    

    TKPROFの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

B.2.2 Oracle SOA Suiteの表のパーティション化

Oracleの表のパーティション化では、大きな表をパーティションと呼ばれるより小さく扱いやすいセグメントに分解することで、大きな表のメンテナンスに関する多くの問題に対処します。SOAスキーマには、Oracleデータベースのレンジ・パーティション化を利用するためのパーティション・キーが装備されています。

パーティション化の詳細は、第10.4項「コンポーネント表のパーティション化」を参照してください。

B.2.2.1 参照整合性および同一レベル・パーティション化

パフォーマンス上の理由から、Oracle SOA Suiteサービス・コンポーネント(Oracle B2Bを除く)には、参照整合性を規制するための外部キー制約はありません。この制約がない場合、マスター表と詳細表の関係は、詳細表の不確定な参照を回避するように保護する必要があります。

同一レベル・パーティション化は、マスター表と詳細表をその外部キー制約に基づいてパーティション化するデータベース・パーティション化機能です。この機能は、関連するマスター行と詳細行を同じ日付範囲にグループ化する表パーティションを作成します。このグループ化によって、パーティションが削除された場合に不確定な参照が作成されることがなくなります。

この機能を模倣するために、Oracle SOA SuiteにはSOAコンポジット・アプリケーション・インスタンスの作成日をコンポーネントのマスター表(Oracle BPEL Process Manager、Oracle Mediatorおよびヒューマン・ワークフロー)にプッシュ・ダウンする機能が装備されています。SOAインフラストラクチャは、他のすべてのコンポーネントが依存する最上位のコンポーネントであるため、この方法ではすべての依存行が日付範囲によってグループ化されます。

たとえば、COMPOSITE_INSTANCE表のCREATED_TIME列のタイムスタンプは、次の表にプッシュ・ダウンされます。

  • Oracle BPEL Process Managerマスター表CUBE_INSTANCEの列CPST_INST_CREATED_TIME、その後これはCUBE_SCOPE.CI_PARTITON_DATEといった依存表にプッシュ・ダウンされます。

  • Oracle Mediatorマスター表MEDIATOR_INSTANCEの列COMPOSITE_CREATION_DATE、その後これはMEDIATOR_CASE_INSTANCE.MI_PARTITION_DATEといった依存表にプッシュ・ダウンされます。


注意:

  • 依存表はそのマスターを使用してパーティション化する必要があり、どの場合も、最上位のSOAインフラストラクチャであるCOMPOSITE_INSTANCE表はパーティション化する必要があります。

  • 同一レベル・パーティション化を完了するには、すべての表パーティションは同じ名前と日付範囲を使用する必要があります。


要約すると、同一レベル・パーティション化とは、関連付けられた依存表の行が、それらのマスター表の行と同じパーティション・キー範囲を持つ1つのパーティションに存在することを意味します。したがって、同一レベル・パーティションのそれぞれの詳細行の状態は、その行に関連するマスター表の行から推測できます。

B.2.2.2 SOAコンポジット・アプリケーションのレンジ - ハッシュ・パーティション

レンジ・パーティションではその行をサブパーティションにハッシュして、SOAコンポジット・アプリケーションのレンジ - ハッシュ・パーティション化を実装できます。ハッシュ・サブパーティションはI/Oの分散において効果がある可能性がありますが、Oracle SOA Suiteの表をパーティション化する際は現在推奨されていません。

キーのハッシュは等価性の述語(=IN)と一緒に使用すると効果のある方法で、Oracle BPEL Process Manager CIKEY表など、候補として適したキー付きの表がいくつか存在します。ただし、レンジ - ハッシュ・パーティションだけでは、ハッシュ・キーの一意性を提供しません。コストベースのオプティマイザが一意性を識別するには、問合せで表の全パーティションを検索する必要があります(全表スキャン)。パーティション・プルーニングは検索するパーティションの範囲を絞り込むことで役立ちますが、Oracle SOA Suiteではこの機能は使用されません。(第B.2.2.5項「パーティション・プルーニング」を参照。)したがって、コストベースのオプティマイザが一意性を識別する際に全表スキャンを回避するために、索引が検索されてハッシュ・サブパーティションがバイパスされます。

B.2.2.3 時間隔パーティション化

時間隔パーティション化はレンジ・パーティション化の拡張で、必要に応じてパーティションを自動的に作成するようにデータベースに指示します。

検証スクリプトは現在、グループのすべての表でパーティション名が同じであることを要求します。時間隔パーティション化システムは、パーティションごとに異なるパーティション名を生成します。したがって、これはサポートされません。

B.2.2.4 グローバル・ハッシュ索引

グローバル・ハッシュ索引の使用は、Oracle SOA Suiteの表のパーティション化とは独立しています。

Oracle SOA Suiteは絶え間なく行を挿入し、索引キーの多くは単調増加します。BTREE構造の索引はこれらのキーを挿入し、Oracle Real Application Clusters (Oracle RAC)の設定全体で非常にホットになる可能性がある数個のデータベース・ブロックのみをターゲットにします。これは通常AWRレポート内で、過剰なバッファ・ビジー待機として示されます。多数のデータベース・ブロックにわたって索引キーをランダムに分散させるために、グローバル・ハッシュ索引を使用します。

B.2.2.5 パーティション・プルーニング

レンジ・パーティション・キーが述語として使用されている場合は、オプティマイザは検索するパーティションの数をプルーニングできます。Oracle SOA Suiteおよび特にOracle Enterprise Manager Fusion Middleware Controlは、現在SQL問合せでパーティション・キーを使用しないので、このパフォーマンス機能を利用しません。

同一レベル・パーティション化の要件によって、パーティション・キーは、コンポーネントの作成日ではなくSOAコンポジット・アプリケーションの作成日を使用して移入されます。コンポーネント(Oracle BPEL Process Manager、Oracle Mediatorおよびヒューマン・ワークフロー)には自らの作成日があり、これはコンソールの問合せで使用されます。

Oracle BPEL Process Managerの例としては、次のようなものがあげられます。

  • パーティション・キー: 表CUBE_INSTANCECPST_INST_CREATED_TIME

  • 作成日: 表CUBE_INSTANCECREATION_DATE

B.2.2.6 パーティションのパージ

特に行移行スクリプトを使用したときは、パーティション化された表をパージすることが必要になる場合があります。これは、メンテナンスのために表のパーティション化を行うという目的にそぐわないことで、ALTER TABLE ... DROP PARTITIONコマンドによってデータが一括して削除される可能性があります。

パーティション化された表をパージしようとすると、多くの場合、解析パフォーマンスの問題が発生します。パーティションをパージする必要がある場合は、パーティションの縮小も行ってください。詳細は、第9.5項「領域管理の理解」を参照してください。

B.2.3 監査レベルの低減

この項では、Oracle SOA Suiteスキーマに書き込まれるデータとSOAコンポジット・アプリケーションの監査レベルを下げる方法についてのチューニング情報を提供します。

B.2.3.1 本番環境の監査レベルの設定

Oracle Enterprise Manager Fusion Middleware Controlの「SOAインフラストラクチャの共通プロパティ」ページで、すべての本番環境の「監査レベル」「本番」に設定します。 これは、本番でのすべてのOracle SOA Suiteドメインの標準設定です。それぞれのコンポーネントは、SOAコンポジット・アプリケーションのレベルとは独立して設定できます。ただし、「本番」が最小設定になります。「監査レベル」「開発」から「本番」に変更すると、(個々のコンポーネントの監査設定をチューニングしないで)パフォーマンスを改善できます。

監査を無効にすると(ビジネス環境でそれが可能な場合)、パフォーマンスが大幅に向上します。「本番」「オフ」に変更すると、(個々のコンポーネントの監査設定をチューニングしないで)パフォーマンスを改善できます。ただし、監査を無効にできない場合は、次の手順に従って監査レベルを下げることをお薦めします。

監査証跡が不要な同期BPELコンポーネントの場合は、次の設定を使用します。

  • inMemoryOptimization = true

  • completionPersistPolicy = faulted

このように設定すると、同期プロセスはインスタンス・フォルトが発生した場合のみ監査証跡に表示されます。

inMemoryOptimizationおよびcompletionPersistPolicyの設定の詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の「デプロイメント・ディスクリプタのプロパティ」に関する章を参照してください。

「監査レベル」の設定の詳細は、第3.1項「SOAインフラストラクチャ・プロパティの構成」を参照してください。


注意:

これらの設定は同期BPELプロセスに使用し、どのタイプであっても非同期BPELプロセスには使用しないでください。


B.2.3.2 インスタンス状態のトラッキングの無効化

インスタンス状態のトラッキングを無効にすることで、監査レベルを下げることができます。「SOAインフラストラクチャの共通プロパティ」ページで「コンポジット・インスタンスの状態をキャプチャ」チェック・ボックスを選択解除します。これには、次の利点があります。

  • データベースに状態がキャプチャされないことによるパフォーマンスの向上。

  • データベース内のパージするデータの減少。

これによって、Oracle Enterprise Manager Fusion Middleware Controlには依然としてSOAコンポジット・アプリケーション・インスタンスが表示されても、インスタンスの状態は疑問符(?)で示されるようになります。したがって、SOAコンポジット・アプリケーションが完了したかどうかをOracle Enterprise Manager Fusion Middleware Controlから識別することはできません。状態列には、SOAコンポジット・アプリケーション内の個々のコンポーネント(Oracle Business Process Management、Oracle BPEL Process Manager、ヒューマン・ワークフローのユーザー・タスク、Oracle Mediatorなど)の状態は反映されません。個々のコンポーネントの状態は、各コンポーネントのページ(たとえば、Oracle Enterprise Manager Fusion Middleware Controlの「soa-infra」「サービス・エンジン」「BPEL」)で追跡できます。

監査レベルの初期設定はグローバル監査設定を継承する「継承」であるため、各コンポーネントには固有の監査レベルも設定できます。これらの設定は、Oracle Enterprise Manager Fusion Middleware Controlで、「soa-infra」「SOA管理」「BPMNプロパティ」「BPELプロパティ」または「メディエータ・プロパティ」を選択することで設定できます。

SOAコンポジット・アプリケーションの監査レベルを設定することで、監査をさらに調整できます。これはデフォルトでは「継承」に設定されており、それぞれのコンポーネントの監査レベルを継承します。たとえば、次のプロパティを次のように設定します。

  • 「SOAインフラストラクチャの共通プロパティ」ページで「監査レベル」「本番」に設定します。

  • 「コンポジット・インスタンスの状態をキャプチャ」チェック・ボックスを選択解除します。

  • 「BPELサービス・エンジン・プロパティ」ページで「監査レベル」「最小」に設定します。

  • SOAコンポジット・アプリケーションの「監査レベル」「継承」に設定します。

  • inMemoryOptimizationcompletionPersistPolicyをそれぞれtruefaultedに設定します(同期プロセスのみ)。

これらの設定によってSOAコンポジット・アプリケーションのデータ・トラフィックが減少し、パージ時間が改善されます。

「SOAインフラストラクチャの共通プロパティ」ページの「監査レベル」の設定と「コンポジット・インスタンスの状態をキャプチャ」チェック・ボックスの選択解除の詳細は、第3.1項「SOAインフラストラクチャ・プロパティの構成」を参照してください。

inMemoryOptimizationおよびcompletionPersistPolicyの設定の詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の「デプロイメント・ディスクリプタのプロパティ」に関する章を参照してください。

B.3 接続およびトランザクション・タイムアウトのトラブルシューティング

この項では、接続およびトランザクション・タイムアウトの問題をトラブルシューティングする方法について説明します。

B.3.1 接続タイムアウトの解決

次のような状況では、接続タイムアウト・エラーが発生する可能性があります。

  • 処理に30秒以上かかる大きなペイロードのSOAコンポジット・アプリケーションを実行する場合。

  • Oracle Enterprise Manager Fusion Middleware Controlの「Webサービスのテスト」ページから、大きいペイロードを使用してストレス・テストを起動している場合。

  • ファイル・アダプタ・サービスを使用して、コンポジットに大量のメッセージ・ファイル(100万)を渡している場合。

  • Oracle Enterprise Manager Fusion Middleware Controlでインスタンス数とフォルト数のメトリックを取得している場合。

トランザクション・タイムアウト・プロパティを増加して、タイムアウト・エラーの発生を回避する手順は、次のとおりです。

  1. Oracle WebLogic管理コンソールにログインします。

  2. 「JTA」をクリックします。

  3. 「タイムアウト」の値を変更します(デフォルトは30です)。

  4. 「保存」をクリックします。

  5. Oracle WebLogic Serverを再起動します。

B.3.2 データベース接続値を増やす

データベースへの接続が遅いと、例B-1のエラー・メッセージが表示される場合があります。

例B-1 低速なデータベース接続によるエラー

Exception [TOPLINK-4002] (Oracle TopLink - 11g Release 1 (11.1.1.1.0) (Build 
090304)): oracle.toplink.exceptions.DatabaseException 
Internal Exception: java.sql.SQLException: Internal error: Cannot obtain 
XAConnection weblogic.common.resourcepool.ResourceDeadException: Pool 
SOADataSource has been disabled because of hanging connection tests, cannot 
allocate resources to applications.

このことが発生した場合は、次の手順を実行します。

  1. DOMAIN_HOME\bin\setSOADomainEnv.cmdファイルを開きます。

  2. 太字で表示されている行を非コメント化します。

    # 8331492: Value of weblogic.resourcepool.max_test_wait_secs is 10 
    # seconds. It can be increased by uncommenting line below if your database 
    # connections are slow. See SOA documentation for more details. 
     EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES}
    -Dweblogic.resourcepool.max_test_wait_secs=30" 
    export EXTRA_JAVA_PROPERTIES 
    
  3. 変更を保存して、管理対象のOracle WebLogic Serverを再起動します。

B.3.3 SOAインフラストラクチャの障害後にデプロイメント・アーカイブのEJBトランザクション・タイムアウト値を更新する

Oracle WebLogic Server管理コンソールの「デプロイメント」展開されたSOAインフラストラクチャ・アプリケーション「FacadeFinderBean」「構成」タブで、「FacadeFinderBean」プロパティのトランザクション・タイムアウト値を更新すると、SOAインフラストラクチャの再起動後に例B-2のエラーが発生することがあります。

例B-2 EJBトランザクション・タイムアウト・エラー

java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy223
implementing
 oracle.bpel.services.workflow.verification.IVerificationService,org.springframe
work.aop.SpringProxy,org.springframework.aop.framework.Advised]
to required type
[oracle.bpel.services.workflow.verification.IVerificationService] for
property 'verificationService': no matching editors or conversion strategy found
Message icon - Warning Errors were encountered while performing this operation.

また、SOAインフラストラクチャのステータスも失敗として表示されます。

このエラーはFacadeFinderBeanに固有のものではありません。SOAインフラストラクチャ・アプリケーションの一部であるすべてのEJBにも当てはまります。

このエラーを解決するには、デプロイメント・アーカイブのトランザクション・タイムアウト設定を手動で変更する必要があります。

トランザクション・タイムアウト設定を更新する手順は、次のとおりです。

  1. デプロイメント・アーカイブでfabric-ejb.jarファイルを開きます。

  2. META-INF/weblogic-ejb-jar.xmlファイル内のトランザクション・タイムアウト値を大きくします。

  3. JARファイルを作成しなおします。

  4. 第3.2項「管理対象サーバーとSOAインフラストラクチャの停止と起動」の説明に従って、SOAインフラストラクチャが含まれている管理対象サーバーを再起動します。


    注意:

    この問題は、SOAインフラストラクチャの一部としてデプロイされたEJBを更新するときにも発生することがあります。この問題が発生した場合は、それらのEJBに含まれている対応するJARファイルを同様の方法で更新する必要があります。


B.3.4 リモートWebサービスへの長時間実行される同期コールによるエラーの発生または非同期トランザクションの長時間後のエラー・リターン

リモートWebサービスに対して長時間実行した同期コールが、JTAトランザクション・ロールバック・エラーで終了する場合があります。(SOAサーバーに対するコールなど)非同期コールを行うトランザクションを実行すると、アプリケーションがエラーを返す場合もあります。サーバー・ログには、この動作の原因となる可能性があるJTAトランザクション・タイムアウトが示されます。

Oracle WebLogic Server管理コンソールで、JTAトランザクションのタイムアウトをチェックする手順は次のとおりです。

  1. Oracle WebLogic Server管理コンソールにログインします。

  2. 「ドメイン構造」で、「サービス」「JTA」の順に選択して、タイムアウト値をチェックします。

    トランザクションが30秒を超えると常にタイムアウトする場合に、それがカスタム・コンポジット同期クライアント呼出しの場合は、設計アプローチを再検討する必要があります。場合によっては、非同期トランザクションとして外部Webサービスを呼び出す方法が最善となります。

    長時間実行される同期トランザクションをサポートするためにJTAを増加させることは、単なる暫定的なメカニズムです。JTAトランザクション・タイムアウト設定の変更の詳細は、第B.3.1項「 接続タイムアウトの解決」を参照してください。

  3. 同期クライアントの呼出しに長時間がかかる場合は、システムにパフォーマンスの問題がないかどうかをチェックして、それらの解決を試みます。

  4. JTAタイムアウト設定との関連でsyncMaxWaitTimeプロパティとBPELのEJBトランザクション・タイムアウト設定の適切な値をチェックした後でのみ、必要に応じてJTAタイムアウトの値を増加します。

    syncMaxWaitTimeプロパティの表示および変更の詳細は、第13.1項「BPELプロセス・サービス・エンジン・プロパティの構成」を参照してください。

  5. BPEL EJBトランザクション・タイムアウト設定を表示および変更するには、次の手順を実行します。

    1. Oracle WebLogic Server管理コンソールにログインします。

    2. 「ドメイン構造」で、「デプロイメント」をクリックします。

    3. 「soa-infra」「EJB」を開きます。

    4. 次のEJBを更新します。

      - BPELActivityManagerBean

      - BPELDeliveryBean

      - BPELDispatcherBean

      - BPELEngineBean

      - BPELFinderBean

      - BPELInstanceManagerBean

      - BPELProcessManagerBean

      - BPELSensorValuesBean

      - BPELServerManagerBean

    5. 「保存」をクリックします。

    6. Oracle WebLogic Serverを再起動します。

  6. 非同期トランザクションについては、BPEL EJBトランザクション・タイムアウトとJTAトランザクション・タイムアウトの両方の値をチェックして、必要に応じて調整します。

B.4 ランタイム診断のトラブルシューティング

この項では、ランタイムの問題をトラブルシューティングする方法について説明します。

B.4.1 「WSDLを読み取れません」というOracle SOA Suite実行時エラー

エンドポイントを参照できない場合、または不適切なデプロイメント・プラン・ファイルを使用してコンポジットがデプロイされている場合は、次のエラーが表示されます。

oracle.fabric.common.FabricException: Cannot read WSDL

この問題を診断する手順は次のとおりです。

  1. 参照用のエンドポイントが稼働していることを確認します。

    WSDLまたはエンドポイントがエラーに示されます。そこで、Oracle Enterprise Manager Fusion Middleware Controlからサービスを参照して、それがアクティブかどうかをチェックできます。サービスがアクティブでエンドポイントが到達可能であったら、SOAインスタンスを検索して、Oracle Enterprise Manager Fusion Middleware ControlのBPELプロセス・サービス・エンジンの「リカバリ」タブでそれを再試行します。

  2. 拡張やカスタマイズの場合は、デプロイメント構成プランで適切なURLが更新されていることを確認します。

    sca_extractPlanを使用してプランを抽出する例を含むデプロイメント・プランの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のデプロイメント前のターゲット環境向けのアプリケーションのカスタマイズに関する項を参照してください。

B.4.2 BPELインスタンスの自動リカバリで特定インスタンスがリカバリされない

BPELプロセスには、未解決の起動メッセージやコールバック・メッセージ、指定のしきい値の時間に完了していないアクティビティなど、リカバリ可能なアクティビティを自動的にリカバリしようとする自動リカバリ機能が装備されています。ただし、自動リカバリ機能は、数個のインスタンスのリカバリのみを試行し、固定された回数だけ再試行します。一部のインスタンスが自動的にリカバリされない場合は、自動リカバリ・パラメータの構成によってそれらのインスタンスはピックアップされないと考えられます。

この問題を解決する手順:

  • 自動的にリカバリするメッセージの最大数を設定します。

    デフォルトでは、Oracle BPEL Process Managerの自動リカバリ機能は、それぞれのリカバリ試行ごとに送信する50件のメッセージを処理します。これはmaxMessageRaiseSizeプロパティによって制御されます。

    1. ナビゲーション・ペインで、「soa-infra」(SOA_cluster_name)を右クリックします。

    2. 「SOA管理」「BPELプロパティ」「詳細BPEL構成プロパティ」「RecoveryConfig」の順に選択します。

    3. 「RecurringScheduleConfig」「maxMessageRaiseSize」「StartupScheduleConfig」「maxMessageRaiseSize」の両方を開きます。

      それぞれのデフォルト値は50です。負の値に設定すると、データベースから選択されたすべてのメッセージがリカバリのために送信されます。0(ゼロ)の値を指定すると、メッセージはデータベースから選択されません(事実上のリカバリの無効化)。50を超えるメッセージをリカバリするには、その値にプロパティ値を設定します。サーバーに対するリカバリの影響を制限するには、このプロパティを使用します。

  • 1つのメッセージに対して自動リカバリを試行する最大回数を設定します。

    また、同じリカバリ可能インスタンスで実行する自動リカバリ試行の回数も構成できます。入力した値によって、起動メッセージおよびコールバック・メッセージがリカバリされる最大回数が指定されます。値が0(デフォルト値)の場合、すべてのメッセージがリカバリされます。1つのメッセージに対するリカバリ試行の数が、指定された値を超過すると、そのメッセージにはリカバリ不能のマークが付けられます。

    Oracle Enterprise Manager Fusion Middleware Controlで起動メッセージとコールバック・メッセージの自動リカバリ試行を構成する手順は次のとおりです。

    1. ナビゲーション・ペインで、「soa-infra」(SOA_cluster_name)を右クリックします。

    2. 「SOA管理」「BPELプロパティ」「詳細BPEL構成プロパティ」の順に選択します。

    3. 「MaxRecoverAttempt」を選択し、「値」フィールドに値を入力します。

    4. 「適用」をクリックします。

      自動リカバリは、使用しないほうがよい場合もあります。サービスが多重呼出し不変でない場合は、破損が発生する可能性があります。さらに、自動リカバリ機能はコンポジットを、最後に保存された状態にリストアしますが、これは非同期の呼出しや待機などの直後の可能性があります。したがって、大量のリカバリを実行する前に、プロセスの動作とそれが次に何をするかを理解しておくことが重要です。大量の自動リカバリは、コンポジット・エラーの根本原因が修正された後(たとえば、利用できなかったサービスが利用可能になった後や領域不足のデータベースが修正された後など)でのみ試行してください。また、自動リカバリによって、エラー・シナリオで予期しないロードがトリガーされる可能性もあります。これにより、リモート・サーバー上でブロックするスレッド数が増加して、結果としてSOAサーバーで次々とハングが発生する可能性があります。

      詳細は、第13.2項「Oracle BPEL Process Managerの自動リカバリの構成」を参照してください。

B.4.3 障害発生時に一部コンポジットは複数回再試行される

BPELプロセス・フローでエラーが発生すると、それが呼び出したすべてのアクティビティとともに再試行されます。これは望ましくない場合もあります。

プロパティGlobalTxMaxRetry(デフォルト値は3)は、再試行可能なものとしてエラーが識別されたときに実行する再試行回数を指定します。たとえば、Webサービスを数回呼び出した後で、データ・ソース・エラーによってデハイドレーションが失敗した場合は、これは再試行可能なエラーとして識別され、前のデハイドレーション状態のすべてのアクティビティが再試行されます。再試行されているアクティビティが多重呼出し不変でない場合(つまり、それらの状態が再試行ごとに変化する可能性があり、同じ動作の提供が保証されない場合)は、複数回の再試行によって問題が生じる可能性があります。

この状況を修正するには、composite.xmlファイルのパートナ・リンク設定セクションでidempotentsetfalseに設定して多重呼出し不変でないアクティビティを明確にマークすることでコンポジットをカスタマイズして、再試行を防止します。

<property name="bpel.partnerLink.partner_link_name.idempotent">false</property>

idempotentプロパティはOracle Enterprise Manager Fusion Middleware Controlでは設定できません。

また、システムMBeanブラウザでGlobalTxMaxRetry0に設定することもできます。

GlobalTxMaxRetryを設定する手順は次のとおりです。

  1. 「soa-infra」(SOA_cluster_name)を右クリックします。

  2. 「SOA管理」「共通プロパティ」の順に選択します。

  3. 「詳細SOAインフラ拡張構成プロパティ」をクリックします。

  4. 「GlobalTxMaxRetry」をクリックします。

  5. 「値」フィールドに、適切な値を入力します。

  6. 「適用」をクリックします。

idempotentプロパティの詳細は、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』のコンポジット内のBPELプロパティ・セットに関する項と『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のパートナ・リンク操作レベルでの多重呼出し不変性の管理に関する項を参照してください。

B.4.4 アプリケーション・トランザクションが完了せず、基になるコンポジットが実行状態でスタックしている

アプリケーション・トランザクションが完了しません。たとえば、注文書のステータスが処理中のままになっている、といった場合です。コンポジット・インスタンスをチェックすると、コンポジットが実行状態でスタックしていることがわかります。この場合は、コンポーネントはおそらく動作していません。多分失敗しており、リカバリが必要な場合があります。

フォルトは次のような様々な理由で発生する可能性があります。

  • BPELアクティビティがエラー(たとえば、ビジネス・エラー、セキュリティ認証エラー、他のエラーなど)によって失敗した場合。

  • BPELアクティビティが、利用できない外部Webサービスを呼び出した場合。

  • 管理者がOracle Enterprise Manager Fusion Middleware Controlを使用してBPELアクティビティをすでに終了している場合。

  • BPELアクティビティが非同期ADFサービスを呼び出して、メッセージがAQ/JMSキューでスタックした場合。

  • BPELアクティビティが非同期ADFサービスを呼び出したが、Oracle SOA Suiteが利用できないために、コールバック・メッセージが到着しなかった場合。

  • BPELアクティビティが同期ADFサービスを呼び出し、これに長時間かかっている場合(またはハングしている場合)。

  • ネットワーク・エラーが発生した場合。

この問題を診断する手順は次のとおりです。

  1. Oracle Enterprise Manager Fusion Middleware Controlにログインします。

  2. ナビゲータ・ペインで、「domain_name」「SOA」に移動します。

  3. 「soa-infra」(SOA_cluster_name)をクリックします。

  4. 「インスタンス」タブをクリックします。

  5. コンポジット・インスタンスを検索して、インスタンスIDをクリックします。

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

    インスタンスが表示されない場合(および「SOAインフラストラクチャの共通プロパティ」ページで「監査レベル」「オフ」に設定されていない場合)は、メッセージがOracle SOA Suiteの外部でスタックしていることを意味します。

    メッセージがOracle Mediatorに到達したものの、BPELフローをインスタンス化していない場合は、エラーが原因でBPELインスタンスが最初からロールバックされている可能性があります。

    BPELフローが存在する場合は、通常は「フローのトレース」ページの「フォルト」セクションに、根本原因をトレースできる失敗したサービスが表示されます。

  6. 「トレース」セクションで、BPELプロセスをクリックします。

  7. BPEL監査証跡を開いて、サービスが失敗した正確なポイントを表示します。

    この情報は、BPELフロー・トレースの「フォルト」タブでも確認できます。これはまた、フォルトをリカバリできるかどうかも示します。

  8. 「raw XMLの表示」リンクをクリックします。

    このリンクから同じ情報を確認して、エラーを表示できます。例:

    ...
    <message>Faulted while invoking operation "modifyUserRoles" on provider
     "UserService". </message><details>
    ...
    <tns:message>JBO-27023: Failed to validate all rows in a
     transaction.</tns:message>
    <tns:severity>SEVERITY_ERROR</tns:severity>
    ...
    <message>The transaction was rolled back. The work performed for bpel instance
     "451042" was rolled back to the previous dehydration point, but the audit
     trail has been saved.
    You can recover the instance from the recovery console by resubmitting the
     callback message or activity for execution.</message
    

    インスタンスは前のデハイドレーション・ポイントにロールバックされているため、ステータスは「実行中」のままになります。

  9. 「監査証跡」タブと「フォルト」タブで、次をメモします。

    • コンポジット名(例: POComposite)

    • コンポーネント(例: UpdateGuid BPELプロセス)

    • BPELインスタンスID(例: bpel:451042)

    これはすべて、リカバリ可能なインスタンスのリカバリで使用されます。「監査証跡」ウィンドウでは、リカバリ不可能なビジネス・フォルトとしてエラーがマークされている場合がありますが、メッセージのリカバリ可能性はBPELプロセス・サービス・エンジンの「リカバリ」タブで確認できます。

  10. インスタンスのリカバリを試行するには、「soa-infra」(SOA_cluster_name)を右クリックして、「サービス・エンジン」「BPEL」を選択します。

  11. 「リカバリ」タブをクリックします。

  12. 「タイプ」リストから「アクティビティ」を選択します。

  13. 手順9でメモしたコンポジットとコンポーネントの名前を指定して、「検索」をクリックします。

  14. 固有のBPELインスタンスIDを見つけます。「リカバリ可能」とマークされているフォルトをリカバリできます。

  15. 「タイプ」リストで他のリカバリ・オプションがある場合はそれをチェックします(例: 「起動」および「コールバック」)。


    注意:

    SOAインフラストラクチャの「フォルトと拒否メッセージ」 タブで、リカバリ可能なメッセージを検索することもできます。これは、メッセージをクリックして「リカバリ・アクション」リストから適切なアクションを選択することによって行います。


  16. インスタンスがリカバリ可能とマークされていない場合は、サービスを再度呼び出すことはできません(おそらく多重呼出し不変ではないため)。場合によっては、リカバリ不可能な多重呼出し不変でないトランザクションの問題を解決するために、Oracleサポート・サービスに診断情報を提供することが必要になります。

  17. BPELアクティビティが非同期ADFサービスを呼び出した場合に、メッセージがAQ JMSキューでスタックしているときは、server.logファイルとserver-diagnostic.logファイルを表示して、JRF Webサービス・インフラストラクチャがログしたメッセージ・メタデータのロギングを確認できます。

    さらに、ADF診断ログは、必要に応じてデバッグにも使用できます。

    1. 「ECID」フィールドを使用して、対応するADFサービス・ロギングをこれを呼び出したSOAコンポジット・アプリケーションと相関付けて追跡します。

    2. Oracle Enterprise Manager Fusion Middleware Controlでログを表示する際に、「広範囲のターゲット・スコープ」ドロップダウン・リストをクリックして、「farm_name」/「domain_name」(Oracle WebLogicドメイン)を選択し、ドメイン全体のメッセージを表示します。

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

    4. 実行コンテンツID (ECID)のログ・レコードを検索および表示して、問題をメモします。

      1つのECIDについて、いくつかのルート・インスタンス(最上位クライアント)があります。適切なインスタンスにドリルダウンして、具体的なフォルトを探す必要があります。

    5. コンポーネントが正常に完了したか、またはエラーが発生して終了したかどうかを観察します。『Oracle Fusion Middleware管理者ガイド』のログ・ファイルの表示と検索に関する項を参照してください。

トランザクションとメッセージをリカバリする様々な方法については、次の章を参照してください。

B.5 ヒューマン・ワークフローのトラブルシューティング

この項では、ヒューマン・ワークフローの問題をトラブルシューティングする方法について説明します。

B.5.1 タスクの割当て、ルーティングおよびエスカレーションの問題

表B-2に、タスクの割当て、ルーティングおよびエスカレーションの問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-2 タスクの割当て、ルーティングおよびエスカレーションの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

割当てが行われずにタスクが完了します。

最も多い問題は、タスクの割当て先の指定にXPath式を使用していて、その式で該当するノードが算出されないことです。その他には、参加者のスキップ条件が正しくないなどの問題が考えられます。

  1. XPath式に関するすべての問題を修正します。

  2. 指定されたデータのXPath式で結果が取得できることを確認します。

  3. ヒューマン・タスク・エディタで、タスクの参加者の「スキップ・ルールの指定」チェック・ボックスで指定されているスキップ条件を確認します。

ビジネス・ルールでリスト・ビルダーが返されていません。

タスクの参加者の指定にビジネス・ルールを使用する場合は、ビジネス・ルールによって最低1つのリスト・ビルダーが返されることを想定しています。ビジネス・ルールで参加者が不要であることを決定する場合は、ignoreParticipant(...)関数を使用する必要があります。正しいモデルに修正しても、このエラーが表示される場合は、ルールが起動されていない可能性があります。この表の「複数のルールを定義している場合にヒューマン・ワークフロー・タスクで正しくないユーザーが選択されたり、次のメッセージのエラーが発生します」のタイトルの症状を参照してください。

  1. ignoreParticipant(..)関数を使用して、ルールのモデルを作成します。

  2. 最低1つのルールが起動されるように、ルールのモデルが正しく作成されていることを確認します。

ビジネス・ルールで別のタイプのリスト・ビルダーが返されています。

タスクの参加者の指定にビジネス・ルールを使用する場合は、ビジネス・ルールによって同じタイプのリスト・ビルダーが返されることを想定しています。

ルールを修正します。

複数のルールを定義している場合にヒューマン・ワークフロー・タスクで正しくないユーザーが選択されたり、次のメッセージのエラーが発生します。

Ruleset returned lists with
different list builder

ヒューマン・ワークフロー・タスクでは、実行時にユーザーのリストのフェッチを試行したときに、次のエラーが発生することがあります。

Ruleset returned lists with different list builder

このエラーは、タスク詳細コメント・フィールドに表示されます。また、タスクにより正しくないまたは想定されていないユーザーや承認者が選択されている可能性があります。これは主に、重複するルールの設定が原因で発生します。タスクの参加者の指定にビジネス・ルールを使用する場合は、ビジネス・ルールによって同じタイプのリスト・ビルダーが返されることを想定しています。

また、ルールセット内のルールは、トランザクションに対して1つのみが該当する必要があります。複数のルールが該当する場合は、最も高い優先度のルールに関連付けられているアクションが実行されます。該当する複数のルールの優先度が同じ場合は、リスト内の最初のルールが選択され、そのアクションが実行されます。

重複するルールを記述しないようにします。各リスト・ビルダーからの制約は、異なるものとし、混在させることはできません。異なるリスト・ビルダーによって複数のルールがトリガーされると、このエラーが発生します。また、1つの制約セットのみが適用されます。

ルールセット内のすべてのルールで、同じトランザクションに対して同じ優先度の複数のルールが該当しないように、優先度が定義されていることを確認してください。

詳細は、『Oracle Fusion Middleware Oracle Business Process Managementモデリングおよび実装ガイド』を参照してください。

パラレル完了基準が満たされていても、パラレル割当て先がタスクの承認または拒否を行う必要があります。

パラレル参加者のための「参加者タイプの追加」ダイアログでは、すべてのパラレル参加者が完了するまで待機するか、または基準が満たされたら完了するように、実行時のヒューマン・タスクを構成できます。

「参加者タイプの追加」ダイアログで、完了について正しい選択を行います。

グループまたはロール内の各ユーザーに個別に割り当てられるものと想定していたタスクが、グループまたはロールに割り当てられます。

タスクの割当て先にグループまたはロールが使用された場合、すぐにタスクがそのグループまたはロールに割り当てられます。タスクの実行時に、個別に割り当てられるわけではありません。グループまたはロール内のいずれかのユーザーが、そのタスクを申告して処理する必要があります。パラレル参加者またはシリアル参加者とあわせて使用した場合に、このユーザーの解決は自動的に行われるものと考えられることが多いようですが、実際はそうではありません。

グループまたはロールのメンバーに個別に割り当てるには、XPath関数のids:getUsersInGroupおよびids:getUsersInAppRoleを使用します。

タスクでルーティング・ルールまたはルールベースの参加者を評価するデシジョン・サービスを呼び出したときに、エラーが発生します。

SOAインフラストラクチャ・インスタンスで、ペイロードの検証が有効になっています。

インスタンスの「ペイロードの検証」チェック・ボックスの選択を解除します。詳細は、第3.1項「SOAインフラストラクチャ・プロパティの構成」を参照してください。


B.5.2 タスク・アクションの問題

表B-3に、タスク・アクションの問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-3 タスク・アクションの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

ユーザーがタスクのアクションを実行できません。

最も多い問題は、その時点でそのタスクのそのアクションを実行する権限をユーザーが持っていないことです。

ユーザーがタスクの割当て先、所有者または作成者のいずれかであるか、または管理者であるかどうかを確認します。ユーザーがアクションの実行を許可されている場合は、サーバー・ログ・ファイルで、タスクの状態やタスクの割当て先、タスクを取得していたユーザー、許可されていたアクション、指定のタスクでそのユーザーが担当していた役割などの情報を含む、詳細なログ・メッセージを確認します。

タスクがロックされており、Oracle BPM Worklistで更新できません。ORA-30279エラーが表示されます(基礎となるORA SQL例外のORA-20001も表示されます)。

2人のユーザーが同じタスクを同時に更新しようとしています。

他のユーザーが終了するまで待機します。


B.5.3 通知の問題

表B-4に、通知の問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-4 通知の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

タスクの電子メール通知が送信されません。

Oracle Enterprise Manager Fusion Middleware Controlの「ワークフロー通知プロパティ」ページで、「通知モード」「なし」に設定されています。

この設定を「電子メール」または「すべて」に変更します。詳細は、第21.1項「ヒューマン・ワークフロー通知プロパティの構成」を参照してください。

電子メール通知が送信されません。

電子メール・ドライバの構成で使用されている送信サーバーの設定が正しくありません。

簡易メール転送プロトコル(SMTP)ポート、SMTPホスト、ユーザー名、パスワード、電子メールの値をチェックします。

ヒント: 値を検証するには、任意の電子メール・クライアントでこれらの値を使用してSMTPサーバーに接続します。

次の手順を実行して、Oracle Enterprise Manager Fusion Middleware Controlの設定を確認します。

  1. ナビゲータで、「ユーザー・メッセージング・サービス」を右クリックします。

  2. 「usermessagingdriver-email」「電子メール・ドライバ・プロパティ」の順に選択します。

  3. 設定を確認します。

通知は送信されますが、アクション可能ではありません。

アクション可能なアドレス・フィールドが構成されていません。

Oracle Enterprise Manager Fusion Middleware Controlで、アクション可能なアドレス・フィールドに有効な電子メール・アドレスを構成します。詳細は、第21.1項「ヒューマン・ワークフロー通知プロパティの構成」を参照してください。

Oracle User Messaging Serverの電子メール・ドライバで受信サーバー設定を構成したときと同じ電子メール・アドレスが使用されていることを確認します。詳細は、第21.1項「ヒューマン・ワークフロー通知プロパティの構成」を参照してください。

通知は送信されますが、アクション可能ではありません。

ヒューマン・ワークフロー・タスクがアクション可能な通知を送信するように設定されていません。

ヒューマン・タスク・エディタで(このエディタは、Oracle JDeveloperの.taskファイルをダブルクリックして起動できます)、「通知」セクションを展開し、「詳細」タブをクリックして、「通知をアクション可能にする」チェック・ボックスを選択します。

アクション可能な通知が送信されますが、応答してもアクションは実行されません。

アクション可能なアドレス・フィールドが正しくありません。

IMAPおよびPOP3のサーバーとポートの値を確認します。電子メール・ドライバの構成で、アクション可能なアドレス・フィールドが使用されていることを確認します。

ヒント: 値を検証するには、任意の電子メール・クライアントでこれらの値を使用して、IMAPサーバーまたはPOP3サーバーに接続します。

アクション可能な通知が送信されますが、応答してもアクションは実行されません。

デフォルト以外の電子メール・クライアントが通知受信用に構成されています。

ユーザーが承認リンクをクリックすると、デフォルトのメール・クライアント・ページが開き、このページで別の電子メール・サーバーに電子メールを送信できます。デフォルトの電子メール・クライアントを、アクション可能な通知を受信するように構成します。

「ワークフロー・タスク・サービス・プロパティ」ページの「アクション可能な電子メール・アカウント」フィールドに、アクション可能な受信電子メール・アカウントとして使用する正しい値を入力します。デフォルトのアカウント名は、「Default」です。

詳細は、第21.3項「ヒューマン・ワークフロー・タスク・サービス・プロパティの構成」を参照してください。

アクション可能な通知が送信されますが、応答してもアクションは実行されません。

電子メール・クライアントに、電子メール・ドライバで使用されるアカウントと同じアカウントが構成されています。

ヒューマン・ワークフローの通知サービスがメールをダウンロードして処理する前に、電子メール・クライアントによってメールがダウンロードされて既読にマークされたり、削除されている可能性があります。電子メール・クライアントから、そのアカウントを削除します。

電子メール通知でOracle BPM Worklistリンクが表示されます。

これがデフォルトの動作です。デフォルトでは、電子メール通知にはOracle BPM Worklistが表示されます。

次の手順を実行してください。

  1. ヒューマン・タスク・エディタの「通知」セクションで、「詳細」タブをクリックします。

  2. 「ワークリストURLを通知に表示」チェック・ボックスの選択を解除します。

グループ通知のパフォーマンスが遅いです。

グループ通知のパフォーマンスは、グループ内のメンバーの数(グループのサイズ)によって決まります。

  1. LDAPでグループ用の電子メールIDを設定します。この場合、ヒューマン・ワークフローは、各グループ・メンバーに対して個別の電子メールを送信するのではなく、グループの電子メールIDに1通の電子メールを送信します。

  2. ヒューマン・タスク・エディタの「通知」セクションで、「詳細」タブをクリックします。

  3. すべてのグループ・メンバーに対して1通の電子メールを送信する場合は、「グループ通知構成」 リストから「すべてのユーザー・アドレスを含む電子メールを送信」を選択します。このアクションによって、すべてのメンバーが宛先リストを確認できるようになり、すべてのメンバーに同じ内容が送信されます(ロケールなどは考慮されません)。

  4. 個別に電子メールを送信するが、内容を複数のメンバーで再利用する場合は、「グループ通知構成」リストから「電子メールを個別に送信」(デフォルトの選択)を選択し、「ロケールに基づいて個別のタスク・フォームを使用」の選択を解除します。このアクションによって、グループ・メンバーは、各自のロケールで個別のメールを受信できます。通知内容を作成するために生成されるタスク・フォームは、同じロケールのメンバーで再利用されます。

次のエラー・メッセージが表示される場合があります。

[2012-07-05T09:13:05.246-04:
00] [soa_server1] [ERROR] []
[oracle.soa.services.workflow
.common] [tid:
[ACTIVE].ExecuteThread: '6'
for queue:
'weblogic.kernel.Default
(self-tuning)'] [userId:
<anonymous>] [ecid:
dc2ff0568380b04f:23824bc7:13
8570a4e67:-8000-000000000000
1716,0] [APP: soa-infra] <.>
[[ORABPEL-0
at
oracle.bpel.services.workflo
w.task.notification.TaskNoti
fications.notifyForTask(Task
Notifications.java:481)
. . .
. . .

電子メール通知メッセージの本文にアポストロフィがあるかどうかをチェックします。

<%string('À titre de responsable fonctionnel, une demande d'approbation 
. . .

文字列にダブル・アポストロフィを追加することで、それぞれのアポストロフィをエスケープします。たとえば、メッセージに'dが含まれている場合は、次のようにこれをエスケープします。

<%string('d'd')%>

これを次のように変更します。

<%string('d''d')%>

B.5.4 タスク・ビューの問題

表B-5に、タスク・ビューの問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-5 タスク・ビューの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

カスタム(マップ済属性)列のビューへの表示

属性マッピングは、特定のタスク・タイプに対して作成されます。マップ済属性を使用するには、ビューを1つ以上のタスク・タイプに関連付ける必要があります。

Oracle BPM Worklist (表示、作成または編集UI)の「定義」タブで、ビューに対してタスク・タイプを指定します。そのタスク・タイプのマッピングで使用されている属性ラベルが、ビューで使用可能な列として「表示」タブで使用できるようになります。

1つのビューは複数のタスク・タイプと関連付けることができます。「タスク・タイプ」ブラウザから、複数のタスク・タイプを選択できます。複数のタスク・タイプを選択した場合は、それらのすべてのタスク・タイプの属性ラベルが、そのビューで使用できるようになります。

ビューの権限受領者が、ビューの所有者に属するタスクを表示したり編集できます。

ビューがデータとして共有されています。この共有タイプでは、権限受領者が、まるでビューの所有者であるかのようにビューを使用できるため、ビューの所有者のタスクを表示して操作できます。

Oracle BPM Worklist (表示または編集UI)の「定義」タブで、「ビューの共有」「定義のみ」に設定され、権限受領者がビューを自分のタスクに対して使用できるようになっていることを確認します。「ビューの共有」「データ」に設定すると、権限受領者は、ビューをそのビューの所有者のデータに対して使用できるようになります。

新規標準ビューの作成

標準ビューは、管理権限を持つユーザーのみが作成できます。

  1. ログインしているユーザーが管理権限を持っていることを確認します。

  2. 通常どおり、Oracle BPM Worklist (作成または編集UI)を使用して、ビューを定義します。

  3. 「標準ビューに追加」チェック・ボックスを選択します。

    ビューが、標準ビューとして作成されます。

標準ビュー名の国際化

標準ビューの名前フィールドに指定した値をリソース・キーとして使用して、WorkflowLabelsリソース・バンドルから表示名を参照できます。

WorkflowLabelsリソース・バンドルに新規リソース・キーを追加します。このキーは、STD_VIEW.の接頭辞が付く、ビューに使用した名前です。(接頭辞の末尾にはピリオドが必要です。)

リソース・バンドルの詳細は、Oracle SOA Suiteサンプルで入手可能なワークフロー・サンプルworkflow-110-workflowCustomizationsを参照してください。

あるインスタンスで作成したビューと標準ビューの別のSOAサーバーへの移行

テストから本番への移行ユーティリティを使用する必要があります。

テストから本番への移行ユーティリティを使用すると、ユーザー・ビューと標準ビューをXMLファイルにエクスポートして、そのXMLファイルのビューを別のインスタンスにインポートできます。このユーティリティの詳細は、第23.6項「ヒューマン・ワークフロー・データのテスト環境から本番環境への移動」を参照してください。


B.5.5 タスクの属性マッピングの問題

表B-6に、タスクの属性マッピングの問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-6 タスクの属性マッピングの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

Oracle BPM Worklistで、パブリック属性へのマッピングにペイロード属性を使用できません。

Oracle BPM Worklistは、単純なペイロード属性へのマッピングの作成のみをサポートしています。Oracle BPM Worklistでのマッピングの作成では、タスク・ペイロードの単純な属性のみが表示されます。

  • ペイロードに単純な属性を追加します。

  • デザインタイムで保護付きのマッピングを作成します。Oracle JDeveloperのデザインタイムで、保護付きの属性マッピングにXPath式を使用することで、複雑なペイロード属性へのマッピングを作成できます。

  • RuntimeConfigServiceのAPIを使用して、XPath式を使用したパブリック・マッピングを作成します。

Oracle BPM Worklistで、保護付きの属性ラベルへのマッピングを作成できません。

保護付きのマッピングは、デザインタイムのタスク定義の中でのみ作成できます。実行時にOracle BPM WorklistやRuntimeConfigServiceのAPIを使用して、保護付きのマッピングを作成したり更新することはできません。

  • マッピングにパブリック属性ラベルを使用します。

  • デザインタイムのタスク定義で、保護付きの属性ラベルへのマッピングを作成します。

Oracle JDeveloperで、マッピングの作成に使用する属性ラベルが表示されません。

デザインタイムのマッピングは、保護付きの属性ラベルに対してのみ作成できます。接続先のSOAインスタンスに保護付きの属性ラベルが作成されていることを確認してください。

  1. Oracle BPM Worklistに管理者としてログインします。

  2. 「管理」「保護フレックス・フィールド」の順に移動します。

  3. その保護付きの属性ラベルが存在することを確認します。

  4. 必要に応じて、保護付きの属性ラベルを作成します。

属性ラベルの名前の国際化

属性ラベル名をリソース・キーとして使用して、WorkflowLabelsリソース・バンドルから表示名を参照できます。

WorkflowLabelsリソース・バンドルに新規リソース・キーを追加します。このキーは、FLEX_LABEL.の接頭辞が付く、ラベルに使用した名前です(接頭辞の末尾のピリオドに注意してください)。

リソース・バンドルの詳細は、Oracle SOA Suiteサンプルで入手可能なワークフロー・サンプルworkflow-110-workflowCustomizationsを参照してください。

あるサーバーから別のサーバーへの属性ラベルとマッピングの移行

テストから本番への移行ユーティリティを使用します。

テストから本番への移行ユーティリティを使用すると、パブリック属性ラベル、パブリック属性マッピング、および保護付きの属性ラベルをXMLファイルにエクスポートして、そのXMLファイルのラベルとマッピングを別のインスタンスにインポートできます。

詳細は、第23.6項「ヒューマン・ワークフロー・データのテスト環境から本番環境への移動」を参照してください。


B.5.6 タスク・レポートの問題

表B-7に、タスク・レポートの問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-7 タスク・レポートの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

次のエラー・メッセージが表示される場合です。

Null Pointer Exception when
running Task Productivity
Report

これは、ワークリストのクライアントのロケールとサーバーのデフォルト・ロケールが異なる場合に、日付の処理に関する問題が原因で発生します。

回避策としては、ワークリストのクライアントのロケールをサーバーと同じロケールに変更するか、日付を指定しないでレポートを実行します。


B.5.7 タスク履歴の問題

表B-8に、タスク履歴の問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-8 タスク履歴の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

「参加者の追加」ボタンが無効になっています。

履歴表で、現在または過去の参加者が選択されています。

これは、設計されているとおりの動作です。現在または過去の参加者に対して、非定型参加者を追加することはできません。現在の参加者とは、その時点でタスクが割り当てられている参加者を意味します。

ページをリフレッシュすると、追加したすべての非定型参加者が消えてしまいます。

履歴表への変更が保存されていない可能性があります。

変更を保存してください。そうしない場合、すべての変更は失われます。変更を保存したはずであるのに失われている場合は、バグとして報告してください。

履歴表に予定承認者が表示されません。

予定承認者チェック・ボックスが選択されていない可能性があります。

Oracle BPM Worklist (タスク順序の表の構成)で、予定承認者チェック・ボックスを選択します。

履歴表に相関IDが渡されていないことを示すメッセージ、または相関IDに関連する例外が表示されます。

タスクが開始されていない場合、相関IDが渡されていない可能性があります。

開始されていないタスクに相関IDを渡していることを確認してください。

編集ツールバーが無効になっているか、または表示されません。

ユーザーが参加者を編集する権限を持っていない可能性があります。

  1. ヒューマン・タスク・エディタの「割当て」タブで、右上隅にある「タスクは開始参加者から最終参加者へ移行します」アイコンをクリックします。

    「割当ての構成」ダイアログが表示されます。

  2. 「参加者による新規参加者の編集を許可」チェック・ボックスと「起案者による参加者の追加を許可」チェック・ボックスを選択します。

次のエラー・メッセージが表示される場合です。

<Warning>
<oracle.adf.controller.intern
al.metadata.MetadataService>
 <BEA-000000><ADFc:
 /META-INF/adfc-config.xml: > 
  <Warning>
<oracle.adf.controller.intern
al.metadata.MetadataService><
ADFC-52024> <ADFc: Duplicate
 managed bean definition for
 'aleCompBindings' detected.> 

共有ライブラリoracle.soa.worklist.webappweblogic.xmlで参照され、JARファイルのadflibWorklistComponents.jaradflibTasklistTaskflow.jarがWebアプリケーション内にパッケージ化されています。

原則的には、これらのJARはWebアプリケーション内にパッケージ化すべきではありません。これらは、共有ライブラリとして参照のみ行います。これらのJARをWebアプリケーション内にパッケージ化しないでください。

次のエラー・メッセージが表示される場合です。

<Error> <Deployer>
 <BEA-149265> <Failure
 occurred in the execution of
 deployment request with ID
 '1297964056778' for task
 '3'. Error is:
 'weblogic.management.Deployme
ntException:
[J2EE:160149]Error while
processing library
references. Unresolved
application library
references, defined in
weblogic-application.xml:
[Extension-Name:
oracle.soa.workflow.wc,
exact-match: false].'
weblogic.management.Deploymen
tException:
[J2EE:160149]Error while
processing library
references. Unresolved
application library
references, defined in
weblogic-application.xml:
[Extension-Name:
oracle.soa.workflow.wc,
exact-match: false].

共有ライブラリoracle.soa.workflow.wcweblogic.xmlで参照されていますが、サーバー上でこの共有ライブラリを使用できません。

アプリケーションをデプロイしようとしているサーバーに、この共有ライブラリがデプロイされていることを確認します。共有ライブラリがデプロイされていても、ターゲットがそのサーバーでない可能性があります。

次のエラー・メッセージが表示される場合です。

java.lang.IllegalStateExcepti
on: Attempt to validate an
already invalid RegionSite: 

これは、サーバー・ログ(たとえば、AdminServer.log)に時々表示される汎用的な例外です。

診断ログ(たとえば、AdminServer-diagnostic.log)で実際の例外を確認して、その例外とバグの内容を報告してください。

次のエラー・メッセージが表示される場合です。

[AdminServer] [NOTIFICATION]
 [J2EE JSP-00008]
 [oracle.j2ee.jsp] [tid:
 [ACTIVE].ExecuteThread: '15'
 for queue:
 'weblogic.kernel.Default
 (self-tuning)'] [userId:
 weblogic] [ecid:
17011f2a001d6b0e:7e22d6ce:12e
3444eb1b:-8000-0000000000002f
0a,0] [APP: FederatedApp_
application1] unable to
 dispatch JSP page: The
 following exception
 occurred:.[[
java.lang.RuntimeException:
 Cannot find FacesContext
        at
javax.faces.webapp.UIComponen
tClassicTagBase.getFacesConte
xt(UIComponentClassicTagBase.
java:2122) 

これは、よくある間違いですが、使用しているコンポーネントとは関係ありません。URLへのfacesの入力を忘れています。例:

http://server:port/FederatedApp
/test.jspx

次のように、URLにfacesを入力します。

http://server:port/FederatedApp/fac
es/test.jspx

B.5.8 タスク・フォームおよびタスク・アクションの問題

表B-9に、タスク・フォームおよびタスク・アクションの問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-9 タスク・フォームおよびタスク・アクションの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

タスク・フォーム・アプリケーションに空のJSPXページがありません。

N/A

現在は、タスク・フォームはADFタスク・フローを使用して呼び出され、タスク・フローが完了すると、タスク・フォームのタスク・フローを開始したモジュールに制御が戻されるようになっています。そのため、空のJSPXは必要ありません。

タスク・フォームがMicrosoft Internet Explorerにロードされません。

Microsoft Internet Explorerでは、URLの長さに制限があります。

タスク・フォームのURLが長すぎます。

デプロイがclass not found例外で失敗します。

共有ライブラリのエントリがweblogic.xmlに存在しません。

次のエラーが表示される場合があります。

Caused By:
 java.lang.ClassNotFoundException:
oracle.bpel.services.datacontrol.ty
pes.Number 

タスク・フォームのデプロイ時に、共有ライブラリがweblogic.xmlに存在しないことが原因である可能性があります。weblogic.xmlに次の要素を追加します。

<library-ref>
 <library-name>oracle.soa.worklist.w
 ebapp</library-name>
 <specification-version>11.1.1</spec
 ification-version>
</library-ref> 

ホスト名を使用した場合に、タスク・フォームのデプロイおよびアクセスが失敗します。

DNSエントリが存在しません。

DHCPを設定したサーバーを使用している場合は、そのホストのDNSエントリが存在しない可能性があります。そのため、IPアドレスを使用したデプロイやアクセスは成功しても、ホスト名を使用したデプロイやアクセスは失敗することがあります。手動でホストとIPアドレスを追加して、クライアント・コンピュータを更新します。

  • Windowsオペレーティング・システムの場合、通常、これは%windir%\drivers\etc\lmhostsにあります。

  • LinuxまたはUNIXの場合、通常、これは/etc/hostsにあります。

タスク・フォームのURLプロトコル(HTTPまたはHTTPS)

HTTPSまたはHTTP経由でタスク・フォームにアクセスできません。

  • DefaultToDoTaskForm: ワークリストは、ランタイム構成サービスからgetServerInfoのAPIによって返されたポートとプロトコルを使用して、デフォルトのTo-Doタスク・フォームにアクセスします。このAPIは、クラスタ・サーバーまたは管理対象サーバーのフロントエンド・ホスト設定を使用します。HTTPSプロトコルが有効になっている場合は、このプロトコルが優先されます。これは動的な設定で、他のカスタム・タスク・フォームと同様に、Oracle Enterprise Manager Fusion Middleware Controlを使用して、デフォルトのTo-Doタスクの設定を変更できます。

  • CustomTaskForm: カスタム・タスク・フォームは、その設定からHTTPおよびHTTPSの情報を取得します。情報の取得には、JRFのAPIを使用します。これは、クラスタからフロントエンド・ホスト情報を取得し、さらにクラスタのフロントエンド・ホストが設定されていない場合は、管理対象サーバーから情報を取得します。管理対象サーバーのフロントエンド・ホストが設定されていない場合は、通常のポートを使用します。デプロイ時にユーザーがHTTPSポートを有効にした場合は、タスク・フォームによって、この情報がデータベースに保存されます。この発生以降に、ユーザーがOracle WebLogic Server管理コンソールを使用してHTTPSポートを無効にした場合、ユーザーはOracle Enterprise Manager Fusion Middleware Controlを使用して、タスク・フォームのHTTPSポートを削除する必要があります。



注意:

複数タスク・フォームのデプロイ時にjava.lang.OutOfMemoryError: PermGen spaceエラーが表示された場合は、PermGenメモリーを増やすことが必要な場合があります。詳細は、第7.1.1項「複数のADFタスク・フォーム・デプロイメントのPermGenメモリー要件」を参照してください。


B.5.9 タスク・コメントと添付ファイルの問題

表B-10に、タスク・コメントと添付ファイルの問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-10 タスク・コメントと添付ファイルの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

ファイルがアップロードされません。

ファイルが大きすぎます

デフォルトでは、ADFには、各リクエストにつき、2000 KBのサイズ制限があります。次のパラメータをweb.xmlに追加して、アップロードするファイルのファイル・サイズと一時記憶域を調整します。

<context-param>
  <!-- Maximum memory per request
(in bytes) -->
<param-name>oracle.adf.view.faces.U
PLOAD_MAX_MEMORY</param-name>
  <!-- Use 500K -->
  <param-value>512000</param-value>
</context-param>
<context-param>
  <!-- Maximum disk space per
 request (in bytes) -->
<param-name>oracle.adf.view.faces.U
PLOAD_MAX_DISK_SPACE</param-name>
  <!-- Use 5,000K -->
 <param-value>5120000</param-value>
</context-param>
<context-param>
  <!-- directory to store temporary
 files -->
<param-name>oracle.adf.view.faces.U
PLOAD_TEMP_DIR</param-name>
  <!-- Use an ADFUploads
 subdirectory of /tmp -->
<param-value>/tmp/ADFUploads/</para
m-value>
</context-param>

タスク詳細アプリケーションにアップロードしたファイルが、同じタスク・フローに表示されません。

ファイルのアップロード後は、タスク・フォームに生成されている添付ファイルのリンクは無効になります。このリンクをクリックすると、空のストリームが返されます。

ファイルをアップロードする際には、表に添付ファイルのリンクが表示されます。ただし、このリンクは機能しません。タスク詳細をリロードして、ファイルを表示する必要があります。

ファイルの添付を追加すると新規タスク・バージョンが作成されますが、URLの添付を追加しても新規バージョンが作成されません。

URLの添付とファイルの添付では、動作が一致しません。

ファイルがアップロードされた場合、ファイルは永続的な記憶域にアップロードされるため、タスクが保存されます。これにより、新規タスク・バージョンが作成されます。URLの添付では、ユーザー・インタフェース・アプリケーションのローカル・タスク・オブジェクトのみが更新されます。そのため、タスク・バージョンは作成されません。


B.5.10 実行時のデザインタイムの問題

表B-11に、実行時のデザインタイムの問題に関する症状と考えられる原因、考えられる解決策を示します。次の2つの実行時のデザインタイム・ツールを使用できます。

  • Oracle SOA Composer

  • Oracle BPM Worklistの「タスク構成」タブ

表B-11 実行時のデザインタイムUIの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

実行時のデザインタイム・ツールでタスクに行った変更が、そのタスクに表示されません。

実行時のデザインタイム・ツールを使用して、実際にタスクを編集したときよりも前に、そのタスクはインスタンス化されています。

実行時のデザインタイムの更新は、変更後に作成されたインスタンスにのみ反映され、変更前にすでに作成されていたインスタンスには反映されません。

そのため、実行時のデザインタイム・ツールを使用してタスクを編集した場合は、新しいタスクをインスタンス化して、行った変更を新しいタスク・インスタンスに反映します。

実行時のデザインタイム・ツールでタスクに行った変更が、そのタスクに表示されません。

行った変更が、MDSリポジトリにコミットされていない可能性があります。

「保存」ボタンでは、実行時のデザインタイム・ツールで行った変更がサンドボックスにのみ保存されます。これらの変更を操作中に表示するには、「コミット」をクリックして、変更内容をMDSリポジトリに送信します。


B.5.11 ヒューマン・ワークフローAPI (SOAPおよびEJBを含む)の使用の問題

表B-12に、ヒューマン・ワークフローAPI (SOAPおよびEJBを含む)の使用の問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-12 ヒューマン・ワークフローAPIの使用の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

ヒューマン・ワークフローAPIのJavaDocの場所

N/A

ドキュメント・ライブラリで入手可能なOracle Fusion Middleware Oracle SOA Suiteワークフロー・サービスJava APIリファレンスを参照してください。

APIの使用方法の理解

N/A

  1. APIのドキュメントを参照してください。

  2. Oracle SOA Suiteサンプルで入手可能なサンプルworkflow-118-JavaSamplesを参照してください。

.netを使用したAPIへのアクセス

N/A

SOAP WebサービスのAPIにアクセスする.netクライアントを記述できます。Oracle SOA Suiteサンプルで入手可能なサンプルworkflow-119-DotNetSampleを参照してください。

Java APIクライアントを使用しようとすると、Class not foundのエラーが表示されます。

クライアント・クラスパスに、すべての必要なJARファイルが存在しません。

Oracle SOA Suiteサンプルで入手可能である、build.xml antファイルのclient.classpathworkflow-118-JavaSamples定義を参照してください。サンプルには、すべての必要なJARファイルが含まれています。

単純な承認タスクとあわせて使用したり、タスクの開始時にタスクを動的にルーティングするための、単純なパターン用のルーティング・スリップの作成

N/A

oracle.bpel.services.workflow.task.impl.SimpleApprovalTaskUtilを参照してください。


B.5.12 Oracle JDeveloperのデータ・コントロールとフォームの生成の問題

表B-13に、Oracle JDeveloperのデータ・コントロールとフォームの生成の問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-13 Oracle JDeveloperのデータ・コントロールとフォームの生成の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

タスク・フォームの作成時に、Empty1.jspxが生成されません。

XSD要素に基づいてイニシエータ・タスクを作成し、タスク・フォームを自動生成しようとしました。

このファイルは、BPMのイニシエータ・タスク以外では必要ありません。この問題が発生した場合は、adfc-config.xmlで参照しているディレクトリと同じディレクトリにEmpty1.jspxファイルを作成し、このファイルに次の内容を入力します。

<?xml version='1.0'
 encoding='UTF-8'?><jsp:root
xmlns:jsp="http://java.sun.com/JSP/
Page" version="2.1"xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/a
df/faces/rich">  <jsp:directive.page
contentType="text/html;charset=UTF-8"/>
  <f:view>
    <af:document id="d1">
      <af:form id="f1"></af:form>
    </af:document>
  </f:view>
</jsp:root>

B.5.13 ヒューマン・ワークフロー・サービスとシステムMBeanブラウザの問題

表B-14に、ヒューマン・ワークフロー・サービスとシステムMBeanブラウザの問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-14 ヒューマン・ワークフロー・サービスとシステムMBeanブラウザの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

よく使用するヒューマン・ワークフロー構成パラメータの設定

N/A

Oracle Enterprise Manager Fusion Middleware Controlの「ワークフロー・タスク・サービス」ページおよびワークフロー通知ページを使用します。

  1. ナビゲータで「soa-infra」を右クリックします。

  2. 「SOA管理」「ワークフロー構成」「メーラー」タブの順に選択して、通知プロパティにアクセスします。

  3. 「SOA管理」「ワークフロー構成」「タスク」タブの順に選択して、タスク・サービス・プロパティにアクセスします。

詳細は、第21.1項「ヒューマン・ワークフロー通知プロパティの構成」第21.3項「ヒューマン・ワークフロー・タスク・サービス・プロパティの構成」を参照してください。

Oracle Enterprise Manager Fusion Middleware Controlのプロパティ・ページで使用できないヒューマン・ワークフロー構成パラメータの設定

N/A

Oracle Enterprise Manager Fusion Middleware ControlのシステムMBeanブラウザを使用します。

  1. ナビゲータで「soa-infra」を右クリックします。

  2. 「SOAインフラストラクチャ」「管理」「システムMBeanブラウザ」の順に選択します。

  3. 「アプリケーション定義のMBean」「oracle.as.soainfra.config」「サーバー」「WorkflowConfig」「human-workflow」の順に選択します。

  4. 単純なパラメータを設定するには、「属性」タブで適切なフィールドを編集して、「適用」をクリックします。

  5. 複雑なパラメータを変更するには(たとえば、新しいロケールの追加など)、「操作」タブに切り替えて、適切な操作を選択し、必須フィールドを入力して、「呼出し」をクリックします。

ヒューマン・ワークフロー構成MBeansを編集した後に、システムMBeanブラウザに変更が反映されません。

システムMBeanブラウザには、前にキャッシュされたバージョンのBeanが表示されています。

システムMBeanブラウザの「キャッシュされたツリー・データのリフレッシュ」ボタンをクリックします。

ワークフローのカスタマイズのクラスパスURLにあるリソース・バンドルまたはクラスが、ヒューマン・ワークフロー・サービスで見つかりません。

URLでプロトコルが指定されていないか、URLに末尾のスラッシュ(/)がありません。

構成されているURLが正しい形式で指定され、プロトコルを指定していることを確認します。クラスパスで(JARファイルでなく)ディレクトリを指定する場合は、URLの末尾にスラッシュ文字が必要です。例:

file:///home/wstallar/wfcustomizati
ons/

特定のタスク・コンポーネントのタスク詳細の表示に使用するURLの手動設定

N/A

そのヒューマン・タスク・サービス・コンポーネントに対して、Oracle Enterprise Manager Fusion Middleware Controlの「管理」ページを使用します。

手順については、第23.3項「ヒューマン・タスク・サービス・コンポーネントのタスク詳細アプリケーションのURI管理」を参照してください。

既存のタスク表示URLエントリを編集または削除したり、新規エントリを追加できます。Oracle BPM Worklistから使用するタスク表示URLの場合は、アプリケーション名を「worklist」に設定する必要があります。


B.5.14 AMX拡張の問題

表B-15に、AMX拡張の問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-15 AMX拡張の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

動的承認グループ・クラスが見つかりません。

Oracle SOA Suiteのクラスパスで、このクラス・ファイルにアクセスできません。

動的承認グループ・クラスへのアクセスを可能にするには、次のディレクトリにクラス・ファイルを配置する必要があります。

$FMW_HOME/SOA_HOME/soa/modules/ora
cle.soa.ext_11.1.1/classes

このディレクトリは、SOAクラスパスの一部です。

Oracle WebLogic Serverを再起動する必要があります。

実行時のデザインタイム中に、承認グループ・リスト・ビルダーに基づいてルールを定義しているときに、グループが存在しないことを示すメッセージが継続して表示されます。

承認グループの名前が引用符(" ")で囲まれていません。

名前を引用符で囲みます(たとえば、"Sample Approval Group Name")。

ルールセット内で、定義されている複数のルールがトランザクションに該当します。正しい制約が適用されていないように思われます。その結果、生成された承認者リストが正しくありません。

ルールセット内のルールは、トランザクションに対して1つのみが該当する必要があります。

複数のルールが該当する場合は、最も高い優先度のルールに関連付けられているアクションが実行されます。

該当する複数のルールの優先度が同じ場合は、リスト内の最初のルールが選択され、そのアクションが実行されます。

ルールセット内のすべてのルールで、同じトランザクションに対して同じ優先度の複数のルールが該当しないように、優先度が定義されていることを確認してください。


B.5.15 Oracle BPM Worklistとタスク領域の問題

表B-16に、Oracle BPM Worklistとタスク領域の問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-16 Oracle BPM Worklistとタスク領域の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

次の例外メッセージがログに表示されます。

<Warning>
<oracle.adf.controller.internal.
metadata.MetadataService>
<BEA-000000><ADFc:
/META-INF/adfc-config.xml: >
<Warning>
<oracle.adf.controller.internal.
metadata.MetadataService><ADFC-5
2024> <ADFc: Duplicate managed
bean definition for
'aleCompBindings' detected.> 

共有ライブラリoracle.soa.worklist.webappweblogic.xmlファイルで参照されるとともに、JARファイルのadflibWorklistComponents.jaradflibTasklistTaskflow.jarがWebアプリケーション内にパッケージ化されています。

これらのJARはWebアプリケーション内にパッケージ化しないでください。これらは、共有ライブラリとして参照のみ行います。これらのJARをWebアプリケーション内にパッケージ化しないでください。

次の例外メッセージがログに表示されます。

Duplicate default server in
client configuration.
Configuration needs to have only
one default server in client
configuration.
Specify one default server in
client configuration. 

クライアント構成ファイル、またはタスク・フローに渡されたJAXBオブジェクトで、2つのデフォルト・サーバーが指定されています。

クライアント構成ファイルまたは渡されるJAXBオブジェクトで、1つのサーバーのみをデフォルトとしてマークします。

次の例外メッセージがログに表示されます。

The default server is not
specified 

クライアント構成ファイル、またはタスク・フローに渡されたJAXBオブジェクトで、デフォルト・サーバーが指定されていません。

クライアント構成ファイルまたはJAXBオブジェクトで、デフォルト・サーバーがマークされていることを確認します。

次の例外メッセージがログに表示されます。

Invalid display column.
The display column COLUMN NAME
is not a valid Task column.
Specify a valid column name.

タスク・フロー・パラメータdisplayColumnsListに渡された列名が正しくありません。

タスク・フロー・パラメータに正しい列名を渡していることを確認します。

次の例外メッセージがログに表示されます。

java.lang.IllegalStateException:
Attempt to validate an already
invalid RegionSite: 

これは、サーバー・ログ(たとえば、AdminServer.log)に時々表示される汎用的な例外です。

診断ログ(たとえば、AdminServer-diagnostic.log)の実際の例外を確認して、その例外とバグの内容を報告してください。

次の例外メッセージがログに表示されます。

Caused by:
oracle.adf.controller.Controller
Exception: ADFC-02001: The ADF
Controller cannot find
'/WEB-INF/taskList-task-flow-def
inition.xml'

Oracle BPM WorklistのJARは、共有ライブラリoracle.soa.worklist.webappを参照するか、これらをWebアプリケーション内にパッケージ化することによりクラスパスで指定しますが、いずれの方法でも指定されていません。

JARが、共有ライブラリによって参照されているか、アプリケーション内にパッケージ化されていることを確認します。

タスク・リストをリフレッシュすると、タスク・リストのフィルタが削除されます。

受信ボックスは永続的なビューではないため、受信ボックスに設定されているフィルタは、ページの再レンダリング時やタスク・リストのリフレッシュ時に削除されます。

タスク・リストにフィルタを設定するかわりに、必要なフィルタ・セットを設定したユーザー・ビューを作成し、そのビューのviewIdをパラメータViewFilterの値として渡します。これにより、そのビューがタスク・リストのデフォルト・ビューになります。

taskTypesFilterListパラメータを設定しましたが、割り当てたタスクではなく、すべてのタスクが表示されます。

taskTypesFilterListパラメータを指定している場合は、attributesFilterListパラメータの指定を忘れています。

両方のパラメータとAND演算子を使用する必要があります。例:

<parameter
id="taskTypesFilterList"
value="http://xmlns.oracle.com/H
elpDeskRequestSOAApp/HelpDeskReq
uestComposite/HelpDeskRequestHum
anTask,[
http://xmlns.oracle.com/Vacation
RequestApp/VacationRequest/Vacat
ionRequestTask]"/>

<parameter id=
"attributesFilterOperator"
value="and"/>
 <parameter id= "attributesFilterList"
 value="state=ASSIGNED"/>

次の例外メッセージがログに表示されます。

[AdminServer] [NOTIFICATION]
 [J2EE JSP-00008]
 [oracle.j2ee.jsp] [tid:
 [ACTIVE].ExecuteThread: '15'
 for queue:
 'weblogic.kernel.Default
 (self-tuning)'] [userId:
 weblogic] [ecid:
17011f2a001d6b0e:7e22d6ce:12e344
4eb1b:-8000-0000000000002f0a,0]
 [APP: FederatedApp_
application1] unable to dispatch
 JSP page: The following
 exception occurred:.[[
java.lang.RuntimeException:
 Cannot find FacesContext 
at
javax.faces.webapp.UIComponentCl
assicTagBase.getFacesContext(UIC
omponentClassicTagBase.java:2122)

これは、その性質から一般的によくある間違いですが、使用しているコンポーネントとは関係ありません。URLへのfacesの入力を忘れています。例:

http://server:port/FederatedApp/test.jspx

次のように、URLにfacesを入力します。

http://server:port/FederatedApp/
faces/test.jspx

次の例外メッセージがログに表示されます。

[AdminServer] [TRACE] [] []
[tid: [ACTIVE].ExecuteThread:
'5' for queue:
'weblogic.kernel.Default
(self-tuning)'] [userId:
weblogic] [ecid:
17011f2a001d6b0e:7e22d6ce:12e344
4eb1b:-8000-0000000000001d39,0]
[SRC_CLASS:
oracle.bpel.services.workflow.cl
ient.config.ClientConfigurationU
til] [APP: FederatedApp_
application1] [SRC_METHOD:
getClientConfiguration]
WorkflowServiceClientContext:
Cannot find client
configuration file: wf_client_
config.xml 

この問題には、次の3つの原因が考えられます。

  1. クライアント構成ファイルがクラスパスに指定されていません。

  2. JAXBオブジェクトがタスク・フローに渡されていません。

  3. 前述のいずれかを指定している場合は、リモート・クライアントまたはSOAPクライアントのポート番号が正しくありません。

クラスパスでクライアント構成ファイルwf_client_config.xmlが指定されているか、またはJAXBオブジェクトがタスク・フローに渡されていることを確認します。すでに行っている場合は、ポート番号でSOAサーバーが指定されていることを確認します。

次の例外メッセージがログに表示されます。

<Error> <Deployer> <BEA-149265>
<Failure occurred in the
execution of deployment request
with ID '1297964056778' for
task '3'. Error is:
'weblogic.management.DeploymentE
xception: [J2EE:160149]Error
while processing library
references. Unresolved
application library references,
defined in
weblogic-application.xml:
[Extension-Name:
oracle.soa.workflow.wc,
exact-match: false].'
weblogic.management.DeploymentEx
ception: [J2EE:160149]Error
while processing library
references. Unresolved
application library references,
defined in
weblogic-application.xml:
[Extension-Name:
oracle.soa.workflow.wc,
exact-match: false]. 

共有ライブラリoracle.soa.workflow.wcweblogic.xmlで参照されていますが、サーバー上でこの共有ライブラリを使用できません。

アプリケーションをデプロイしようとしているサーバーに、この共有ライブラリがデプロイされていることを確認します。共有ライブラリがデプロイされていても、ターゲットがそのサーバーでない可能性があります。

列にマップされているマップ済属性が表示されません。

注意: リリース11g R1 (11.1.1.4)から、Oracle BPM Worklistフレックス・フィールドはマップ済属性と呼ばれるようになりました。

正しいパラメータのセットが、タスク・リストのタスク・フローに渡されていません。

正しいパラメータのセットを渡す方法は、次のとおりです。

<parameter id= "displayColumnsList"
value="assignees,creator,
assignedDate,state,
textAttribute1,textAttribute2"/>

textAttribute1,textAttribute2は、列名に値を渡すための正しい方法です。これらの値に関連付けられている'label name'(マッピングの名前)を指定しても、機能しません。

パラメータtaskTypesFilterListには、完全修飾の値を具体的に渡す必要があります。そうしない場合、列の作成は機能しません。

例:

<parameter
 id="taskTypesFilterList"
value="http://xmlns.oracle.com/Hel
pDeskRequestSOAApp/HelpDeskRequest
Composite/HelpDeskRequestHumanTask
"/>

B.5.16 テストから本番への移行の問題

表B-17から表B-20に、テストから本番への移行の問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-17 テストから本番への移行の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

SOAサーバーのデフォルトのレルム名の検索

N/A

defaultRealmNameは、アイデンティティ構成サービスから取得できます。これは、SOAPサービスのテスト・ページから取得できます。

  1. ブラウザから、次のURLにアクセスします。

    http:host:port/integration/servic
    es/IdentityService/configuration
    
  2. 「操作」ドロップダウン・メニューから、「getDefaultRealmName」を選択します。

  3. 「起動」ボタンをクリックします。

これにより、デフォルトのレルム名が取得されます。次に、起動に対するサンプルの応答を示します。

<env:Envelope
xmlns:env="http://schemas.xmlsoap.org/soap
/envelope/">
 <env:Header/>
 <env:Body>
  <realmName
xmlns="http://xmlns.oracle.com/bpel/servi
ces/IdentityService">jazn.com</realmName>
 </env:Body>
</env:Envelope>

表B-18 テストから本番への移行の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

次のユーザー認証エラー(次の例では、ユーザーはFMW_USERID、アイデンティティ・コンテキストはjazn.com)が表示されます。

[java] Error in workflow service Web
service operation invocation. The
error is ORA-30501:Error in
authenticating user.
[java] Error in authenticating and
creating a workflow context for
user jazn.com/FMW_USERID. [java]
Verify that the user credentials
and identity service configurations
are correct.

これは、指定されたユーザーがシードされておらず、LDAPプロバイダで使用できない場合に発生します。

ユーザーが適切にシードされているかどうかを識別するには、ブラウザからそのユーザーでOracle BPM Worklistにログインしてみます。そのユーザーでOracle BPM Worklistにログインできれば、ユーザーはシードされています。

Oracle Internet Directoryやその他のLDAPプロバイダを使用している場合は、LDAPプロバイダの構成が正しく完了していることを確認します。そうでない場合、このエラーは解決できません。

ターゲットSOAサーバーにタスク・ペイロード・マップ済属性マッピング(以前のフレックス・フィールド)をインポートしているときに、次のエラーがコンソール・ログに表示されることがあります。

[java] Caused by:
java.sql.SQLIntegrityConstrain
tViolationException: ORA-02291:
integrity constraint (UAT_
SOAINFRA.SYS_C0018364) violated -
parent key not found* * 

ターゲットSOAサーバーへのタスク・ペイロード・マップ済属性マッピングのインポートは、2つのステップの処理で構成されます。

ターゲットSOAサーバーへのタスク・ペイロード・マップ済属性マッピングのインポート操作を行う前に、実行が必要な前提条件のステップがあります。これは、ターゲットSOAサーバーへの属性ラベルのインポート操作です。

正常に完了するためには、ヒューマン・ワークフローのテストから本番への移行ツールを使用して、(正しい順序で)次の操作を実行します。

  1. ターゲットSOAサーバーに属性ラベルをインポートします。

  2. ターゲットSOAサーバーにペイロード・マッピングをインポートします。

詳細は、第23.6項「ヒューマン・ワークフロー・データのテスト環境から本番環境への移動」を参照してください。


表B-19 テストから本番への移行の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

ルールの移行時に、次のエラーが発生したと仮定します。

[java]  Error encountered during
migration. [java] Exception in thread
"main"[java] 
UserConfigDataMigrationException:[java]
faultString:Invalid parameters for RULE.
[java] Invalid user and group: both
parameters can not have null
values.[java] To migrate User Rules,
provide the 'user' parameter only.
[java]  To migrate Group Rules, provide
the 'group' parameter only.[java]
oracle.bpel.services.workflow.util.
tools.wfUserConfigDataMigrator.
UserConfigDataMigrationE xception [java]
at oracle.bpel.services.workflow.
util.tools.wfUserConfigDataMigrator.
implhwfMigrator.parseParametersNode

migration.propertiesファイル内に、このエラーに関連する2つのプロパティがあります。

  • user

  • group

ルールの移行(エクスポートまたはインポート)操作時には、これらのいずれか(userまたはgroup)に値を設定する必要があります。つまり、usergroupの両方に、nullまたは空の値を設定することはできません。

これらのいずれかに値を設定します。ユーザー・ルールの移行を実行するには、userパラメータのみを設定します。グループ・ルールの移行を実行するには、groupパラメータのみを設定します。

ルールの移行時に、次のエラーが発生したと仮定します。

[java]  Error encountered during
migration.[java] Exception in
thread "main"[java] 
UserConfigDataMigrationExcepti
on: [java]  faultString:
Invalid parameters for RULE.
[java]  Invalid user and group: both
 parameters can not have values.
[java]  To migrate User Rules,
 provide the 'user'parameter only. 
[java]  To migrate Group Rules,
 provide the 'group' parameter only.
[java]  oracle.bpel.services. workflow.util.tools.wfUserConfigData
Migrator.UserConfigDataMigrationE
xception 

これはこの表の前述の説明と似ています。

ルールの移行(エクスポートまたはインポート)操作時に、usergroupの両方のパラメータに値を設定することはできません。

これらのいずれかに値を指定します。


表B-20 テストから本番への移行の問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

インストール後のサーバーのヘルスのテスト

N/A

テストから本番への移行を実行する前に、サーバーのヘルスをテストすることは有用です。

ブラウザから、いくつかのSOAPサービスをテストできます。次に、ヒューマン・ワークフロー・サービスのサブセットとOracle BPM Worklistを示します。

http://host:port/integration/worklistapp/

http://host:port/integration/services
/TaskQueryService/TaskQueryService

http://host:port/integration/services/IdentityService/configuration

http://host:port/integration/services/IdentityService/identity

http://host:port/integration/services/RuntimeConfigService/RuntimeConfigService

これらのサービスで任意の操作をテストして、その操作によって発生する結果を確認できます。同様に、Oracle BPM Worklistにユーザーとしてログインして、問題がないかどうかを確認できます。


テストから本番への移行の問題の詳細は、第23.6項「ヒューマン・ワークフロー・データのテスト環境から本番環境への移動」を参照してください。

B.5.17 アイデンティティ・サービスの問題

表B-21表B-22に、アイデンティティ・サービスの問題に関する症状と考えられる原因、考えられる解決策を示します。

表B-21 アイデンティティ・サービスの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

クラスタ環境で、Oracle BPM Worklistの承認タスクを操作しようとすると、次のエラーが表示される場合があります。

Token Decryption Failed

LDAPベースのリポジトリではなく、ファイルベースのリポジトリを使用しています。これにより、アプリケーション・ロールがノード全体で同期されなくなっています。

クラスタ環境のリポジトリ構成については、『Oracle Fusion Middleware Oracle SOA Suiteエンタープライズ・デプロイメント・ガイド』の「エンタープライズ・デプロイメントとOracle Identity Managementの統合」に関する章の指示に従ってください。

LDAPの一部のユーザーのみ、Oracle BPM Worklistにログインできます。

ユーザー・ベースDNが正しく構成されていません。

すべてのシード済グループにユーザー・ベースを指定します。これは、次の2つの方法で行うことができます。

すべての必要なシード済グループにベースDNを追加します。たとえば、次のようにユーザーがシードされている場合、

UserDN 1 : cn=users1,dc=us,dc=oracle,dc=com
UserDN 2 : cn=users2,dc=us,dc=oracle,dc=com
UserDN 3 : cn=users3,dc=us,dc=oracle,dc=com

グループ・ベースDNを次のように指定します。

dc=us,dc=oracle,dc=com

これは、共通のDNです。一部のユーザーDNのみが必要な場合は(たとえば、UserDN1UserDN2)、$DOMAIN_HOME/config/fmwconfig/jps-config.xmlファイル内の名前がidstore.ldapserviceInstanceに、次のプロパティを追加する必要があります。

<serviceInstance name="idstore.ldap"
 provider="idstore.ldap.provider">
 <property name="idstore.config.provider" 
value="oracle.security.jps.wls.internal.idstore.WlsLd
apIdStoreConfigProvider"/>
 <property name="CONNECTION_POOL_CLASS"
value="oracle.security.idm.providers.stdldap.JNDIPool"/>
 <extendedProperty>
   <name>user.search.bases</name>
   <values>
      <value>cn=users1,dc=us,dc=oracle,dc=com</value>
      <value>cn=users2,dc=us,dc=oracle,dc=com</value>
   </values>
 </extendedProperty>
</serviceInstance>

最初のオーセンティケータにシードされているユーザーとグループのみは表示されますが、他のオーセンティケータからは表示されません。

デフォルトでは、最初のオーセンティケータからのユーザーとグループが認可されます。

11.1.1.4以降では、複数のオーセンティケータからのユーザーとグループを認可できます。$DOMAIN_HOME/config/fmwconfig/jps-config.xmlファイル内のidstoreインスタンスに、次のプロパティを追加します。

<serviceInstance name="idstore.ldap"
  provider="idstore.ldap.provider">
   ............................
   <property name="virtualize" value="true"/>
   ..............................
</serviceInstance> 

表B-22 アイデンティティ・サービスの問題のトラブルシューティング

症状 考えられる原因 考えられる解決策

アイデンティティ・サービスのAPIに、アイデンティティ・コンテキストへのパラメータとしてmyrealm (Oracle WebLogic Server管理コンソールの構成のデフォルト・レルム)を渡すと、次の例外が表示されます。

Exception seen :
 Service"
Unknown macro: {0}
"in configuration" 
Unknown macro: {1}
" could not be
initialized. Error
in initializing
service
"Authentication"
in configuration
"myrealm".

ヒューマン・ワークフローのアイデンティティ・サービスでは、Oracle WebLogic Serverの構成ではなく、WorkflowIdentityConfigファイルに設定されているアイデンティティ・コンテキスト(デフォルトでは、jazn.com)が使用されます。したがって、カスタム・コード内で、jazn.comがアイデンティティ・コンテキストとして渡されている場合は、認証APIは問題なく機能します。

レルム名を変更するために、Oracle Enterprise Manager Fusion Middleware ControlのシステムMBeanブラウザで、WorkflowIdentityConfigファイルを編集できます。

  1. ナビゲータで「soa-infra」を右クリックします。

  2. 「SOAインフラストラクチャ」「管理」「システムMBeanブラウザ」の順に選択します。

  3. 「アプリケーション定義のMBean」「oracle.as.soainfra.config」「サーバー」「WorkflowIdentityConfig」「human-workflow」「WorkflowIdentityConfig.ConfigurationType」の順に選択します。

  4. setRealmNameの操作を呼び出して、構成を選択し、名前を変更します。この変更では、サーバーの再起動が必要です。

Oracle WebLogic ServerでLDAPを構成すると、Oracle WebLogic Server管理コンソールにユーザーは表示されますが、次のエラーがスローされます。

No Role found
matching the
criteria

グループのベースDNが正しく構成されていません。参照されているグループが、LDAPに存在しないか、LDAPの構成時に設定されたグループ・ベースDNの外部にシードされている可能性があります。

すべてのシード済グループにグループ・ベースを指定します。これは、次の2つの方法で行うことができます。

すべての必要なシード済グループにベースDNを追加します。たとえば、次のようにグループがシードされている場合、

GroupDN 1 : cn=groups1,dc=us,dc=oracle,dc=com
GroupDN 2 : cn=groups2,dc=us,dc=oracle,dc=com
GroupDN 3 : cn=groups3,dc=us,dc=oracle,dc=com

グループ・ベースDNを次のように指定します。

dc=us,dc=oracle,dc=com

これは、共通のDNです。一部のグループDNのみが必要な場合は(たとえば、GroupDN1GroupDN2)、$DOMAIN_HOME/config/fmwconfig/jps-config.xmlファイル内の名前がidstore.ldapserviceInstanceに、次のプロパティを追加する必要があります。

<serviceInstance name="idstore.ldap"
 provider="idstore.ldap.provider">
   <property name="idstore.config.provider"
value="oracle.security.jps.wls.internal.idstore.WlsL
dapIdStoreConfigProvider"/>
 <property name="CONNECTION_POOL_CLASS"
value="oracle.security.idm.providers.stdldap.JNDIPool"/>
  extendedProperty>
  <name>group.search.bases</name>
  <values>
    <value>cn=groups1,dc=us,dc=oracle,dc=com</value>
    <value>cn=groups2,dc=us,dc=oracle,dc=com</value>
  </values>
 </extendedProperty>
</serviceInstance>

B.6 EDNのトラブルシューティング

この項では、EDNの問題をトラブルシューティングする方法について説明します。

B.6.1 EDNイベント・バスと配信のチューニング

システムMBeanブラウザで次のEDNプロパティをカスタマイズできます。

  1. 「soa-infra」を右クリックします。

  2. 「SOAインフラストラクチャ」「管理」「システムMBeanブラウザ」の順に選択します。

  3. 「アプリケーション定義のMBean」「oracle.as.soainfra.config」「Server: soa_server-x」「EDNConfig」「edn」の順に開きます。

  4. 属性をダブルクリックします。

    プロパティ タイプ 詳細

    NumberOfThreads

    int

    デフォルトは、EDN-DB実装の場合は3、EDN-JMS実装の場合は2になります。このプロパティを0に設定するのは、EDN-DBの2またはEDN-JMSの1と事実上同じです。

    EDN-DBおよびEDN-JMSの詳細は、第35.1項「イベント配信ネットワークの概要」を参照してください。

    Paused

    boolean

    値はtrueまたはfalseです。trueの場合は、EDNリスナー・スレッドは0に減少し、イベントの配信は事実上停止します。これはEDN-DBとEDN-JMSに適用されます。

    NumberOfRetrys

    int

    イベントをエラー・ホスピタルに移動するまでのEDNによる配信と再配信の最大数。このパラメータはone-and-only-one配信にのみ有効で、保証付き配信には機能しません。許可される最大値は5です。5より小さな値に設定すると、事実上5と同じになります。

    NumberOfRetrysを様々な値に設定した場合の動作は、次のようになります。

    • >= 2の場合は、EDNはイベントを一度配信し、XAが失敗した場合は最大(NumberOfRetrys -1)の回数だけ再配信を試行します。

    • = 1の場合は、EDNはイベントを一度だけ配信します。XAが失敗した場合も、再試行は行われません。

    • = 0の場合は、= 1と同じになります(つまり、EDNはイベントを一度だけ配信します)。XAが失敗した場合も、再試行は行われません。

    • > 5の場合、これは事実上NumberOfRetrys = 5と同じになります。


  5. 値を入力して、「適用」をクリックします。

B.6.2 ロールバックされたOne-and-Only-Oneイベント配信メッセージがログ・ファイルに表示される

Javaデバッグ・レベルを「TRACE:16 (FINER)」以下の値に設定している場合は、次のようなログ・メッセージが表示される場合があります。

Began XA for OAOO
Rolled back XA for OAOO

これらは、配信待機中のイベントがない場合のOAOO (one-and-only-one)イベント配信の通常メッセージです。これらはエラー状態ではありません。Javaロギング・レベルを「TRACE:1 (FINE)」以上の値に設定することによって、これらのメッセージが表示されないようにできます。

B.6.3 イベントが同じコンポジットの複数リビジョンによって使用される

設計によって、異なるコンポジットで同じイベントをサブスクライブできます。ただし、同じコンポジットの複数のリビジョンで同じイベントをサブスクライブする場合はエラーです。これが発生するのは、コンポジットのアクティブ・バージョンが複数ある場合で、これはパッチ失敗の結果の可能性があります。

次の手順を実行して、同じコンポジットの複数のアクティブ・リビジョンが存在するかどうかを判別し、アクティブである必要のないコンポジット・リビジョンをリタイアさせます。

  1. Oracle Enterprise Manager Fusion Middleware Controlに移動します。

  2. 「SOA」「soa-infra」の順にクリックします。

    「ダッシュボード」タブの「デプロイ済コンポジット」セクションに、デプロイ済コンポジットの名前、リビジョンおよびモード(例: アクティブ)のリストが表示されます。

  3. 同じ名前でアクティブ・モードであるが、リビジョンが異なるコンポジットを識別します。

  4. アクティブである必要のないコンポジット・リビジョンをクリックします。

  5. 「リタイア」ボタンをクリックします。

B.6.4 ビジネス・イベントがSOAサーバーによって2回(以上)取得される

ビジネス・イベントがJ2EEアプリケーションから発生し、複数回取得される場合があります。予期される動作は、それらが1回のみ取得されることです。

パッチが失敗すると、特定のコンポジットの2つのバージョンがアクティブになる可能性があります(つまり、古い方のバージョンがリタイアされていません)。コンポジットの複数のバージョンがアクティブである場合、これらはすべてサブスクライバになり、イベントが複数回取得されます。これは通常のシナリオでは発生しないようにする必要があります。パッチを再適用し、デプロイ済コンポジットのアクティブ・バージョンが1つのみであることを確認します。

B.6.5 EDNとコンポジットまたはクラスタ全体のコンポジット間でメッセージが一部失われる

メッセージは主に、次の理由で失われます。

  1. EDNメッセージが配信されなかった。

  2. ターゲットの非同期サービスが応答しなかった。

  3. メッセージがロールバックされた(メッセージは失われなかったが、引き続きOracle Enterprise Manager Fusion Middleware Controlに表示される)。

この問題では通常、メッセージの宛先を識別し、パスを診断する必要があります。

  • Oracle WSM Policy Managerセキュリティ構成を使用して、クライアントがSOAコンポジットを起動できるかどうかを調べます。

  • トランザクションが一時(非永続)でないことを確認します。

    Oracle BPEL Process Managerは、非同期コールバックの待機中、デハイドレーション・ストア・データベースを使用して、長期間にわたる非同期プロセスとその現在の状態の情報をデータベースに保持します。データベースにプロセスを格納することにより、プロセスを維持し、システムの停止やネットワークの問題が発生した場合の状態や信頼性の低下を防ぎます。Oracle BPEL Process Managerには、2つのタイプのプロセスがあります。これらのプロセスは、デハイドレーション・ストア・データベースに様々な方法で影響を与えます。

    • 一時プロセス: このプロセス・タイプでは、プロセス実行時に中間デハイドレーション・ポイントは発生しません。未処理のフォルトがある場合、またはプロセス実行時にシステム停止時間がある場合、一時プロセスのインスタンスはトレースをシステムに残しません。一時プロセスのインスタンスは、(正常終了または異常終了に関係なく)処理中に保存できません。一時プロセスは通常、短期間のリクエスト/レスポンス形式のプロセスです。Oracle JDeveloperで設計する同期プロセスは、一時プロセスの例です。

    • 永続プロセス: このプロセス・タイプでは、次のアクティビティのために、実行時にデータベースで1つ以上のデハイドレーション・ポイントが発生します。

      • receiveアクティビティ

      • pickアクティビティのOnMessageブランチ

      • pickアクティビティのOnAlarmブランチ

      • waitアクティビティ

      永続プロセスのインスタンスは、(正常終了または異常終了に関係なく)処理中に保存できます。これらのプロセスは通常長期間存続し、一方向呼出しを介して開始されます。メモリー不足およびシステム停止時間の問題があるため、永続プロセスはメモリーについて最適化できません。

  • コンポジット・インスタンスがOracle Enterprise Manager Fusion Middleware Controlに表示されず、SOAインフラストラクチャが実行中の場合は、「SOAインフラストラクチャの共通プロパティ」ページで、「監査レベル」「オフ」に設定されていないことを確認します。これは、Oracle Enterprise Manager Fusion Middleware Controlで確認できます。

    1. 「soa-infra」(SOA_cluster_name)を右クリックします。

    2. 「SOA管理」「共通プロパティ」の順に選択します。

  • コンポジット・インスタンスが使用可能な場合は、oneWayDeliveryPolicy BPELプロパティの値を確認します。値をOracle Enterprise Manager Fusion Middleware Controlで確認できます。

    1. ナビゲーション・ペインで、「soa-infra」(SOA_cluster_name)を展開します。

    2. パーティションを展開し、コンポジットを選択します。

      コンポジットに対する「ダッシュボード」ページが表示されます。

    3. 右上隅にある「XML定義の表示」アイコンをクリックします。

      そのコンポジットに対するcomposite.xmlの内容が表示されます。

    これがasync.cacheに設定されている場合は、メッセージが失われる可能性があります。信頼性の高いメッセージのためには、async.persistに設定します。これは通常、composite.xmlファイルのBPELプロセス・サービス・コンポーネントのセクションで指定します。したがって、これはカスタム・コンポジットに設定できます。値がcomposite.xmlに設定されていない場合は、Oracle Enterprise Manager Fusion Middleware ControlのシステムMBeanブラウザのoneWayDeliveryPolicyの値が使用されます。次の値を指定できます。

    • async.persist: メッセージは、データベース・ハッシュ・マップに保持されます。

    • async.cache: メッセージはメモリーに格納されます。

    • sync: 同じスレッドで直接起動が発生します。

    これらの設定の詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の「デプロイメント・ディスクリプタのプロパティ」の付録および「BPELプロセスでのトランザクションおよびフォルト伝播のセマンティクス」の章を参照してください。

    システムMBeanブラウザにおけるoneWayDeliveryPolicyプロパティの設定の詳細は、第13.1項「BPELプロセス・サービス・エンジン・プロパティの構成」を参照してください。

    トランザクションによって、応答が返されないターゲット非同期サービスが起動されている可能性もあります。この場合、コンポジット・インスタンス・フローには、ターゲット非同期サービスへのコールが表示されます。

  • インスタンスがロールバックされ、メッセージがリカバリ中であることを確認します。

    1. Oracle Enterprise Manager Fusion Middleware Controlにログインします。

    2. 「soa-infra」(SOA_cluster_name)を右クリックし、「サービス・エンジン」「BPEL」の順に選択します。

    3. 「リカバリ」タブをクリックします。

    これは、メッセージを受信する外部参照にアクセスできない場合に発生する可能性があります(たとえば、外部Webサービス、Siebelなどのエンタープライズ・アプリケーションなど)。

B.6.6 EDNの全体的なイベント配信を低速化する不良なコンポジットがSOAドメインに存在するかどうかのチェック

EDNはすべてのビジネス・イベントに対して、2つのアドバンスト・キューイング(AQ)キューをシリアル処理方式で内部的に使用します。特定タイプのイベントを使用できない不良なSOAコンポジット・アプリケーションが1つ以上存在すると、他のすべてのイベント・タイプのEDN配信が低速化して、AQキューでイベント・バックログが発生する可能性があります。

  1. EDNロギングを有効にしたSOAサーバー・ログで、不良なSOAコンポジット・アプリケーションから繰返しエラーが発生しているかどうかをチェックします。たとえ対象のイベント・タイプとは無関係のまったく別個のSOAコンポジット・アプリケーションにエラーが存在する場合であっても、ターゲットSOAコンポジット・アプリケーションへの対象イベントの全般的な配信遅延の原因となる可能性があります。

  2. 手順4の説明に従ってイベント・バックログの数をチェックします(イベントはアドバンスト・キューでスタックしています)。次のSQL問合せを実行して、この数を取得します(SOAINFRA-SCHEMA-USERをスキーマの所有者で置き換えます)。

    SELECT COUNT(*) FROM SOAINFRA-SCHEMA-USER.EDN_OAOO_DELIVERY_TABLE; 
    SELECT COUNT(*) FROM SOAINFRA-SCHEMA-USER.EDN_EVENT_QUEUE_TABLE;
    

    手順1で不良なコンポジットが見つかり、手順2でバックログされたイベントが大量に発生していた場合は、3に進みます。

  3. 手順1で識別された不良なコンポジットを停止します。これはOracle Enterprise Manager Fusion Middleware ControlまたはWLSTコマンドライン・ユーティリティから行うことができます。

  4. EDNスレッドの数を一時的に増やして(たとえば、3から5または7へ)、バックログされたイベントをより速やかにクリアします。

    Oracle Enterprise Manager Fusion Middleware ControlのEDNConfig MBeanの構成を使用してEDNスレッドの数を変更する手順は次のとおりです。

    1. ナビゲーション・ペインに移動します。

    2. 「soa-infra」を右クリックします。

    3. 「SOAインフラストラクチャ」「管理」「システムMBeanブラウザ」の順に選択します。

    4. 「アプリケーション定義のMBean」「oracle.as.soainfra.config」「Server: soa_server-x」「EDNConfig」「edn」の順に開きます。

    5. NumberOfThreads属性の値を変更して、「適用」をクリックします。

      バックログ・イベント処理を重視しない場合は、バックアップされたイベントをAQで直接パージできます。パージ・スクリプトは次のとおりです。

      DECLARE
        purge_options dbms_aqadm.aq$_purge_options_t;
      BEGIN
        purge_options.block := FALSE;
        DBMS_AQADM.PURGE_QUEUE_TABLE(
          queue_table     => '&edn_user..edn_event_queue_table',
          purge_condition => NULL,
          purge_options   => purge_options);
        DBMS_AQADM.PURGE_QUEUE_TABLE(
          queue_table     => '&edn_user..edn_oaoo_delivery_table',
          purge_condition => NULL,
          purge_options   => purge_options);
      END;
      /
      commit;
      
  5. EDNバックログ数を定期的に監視して(手順2を参照)、その数が減少していることを確認します。クリアするスピードが非常に低速な場合は、EDNスレッド数をさらに増やすことができます(手順4を参照)。

  6. 一定期間にわたり継続してEDNバックログ数を監視します。また、Oracle Enterprise Manager Fusion Middleware Controlで最近のインスタンスとフォルトを監視して、コンポジット・インスタンスが作成されているのか、または新しいフォルトが全体(つまりSOAインフラストラクチャ・レベルで)および対象のコンポジットの両方で出現しているのかをチェックします。

  7. バックログがクリアされたら、EDNスレッドの数を前の設定または適切な数に戻します。

  8. 対象のビジネス・イベントを公開して、予想されるインスタンスの作成によってターゲット・コンポジットがトリガーされることを確認します。

B.7 パフォーマンスのトラブルシューティング

この項では、パフォーマンスの問題をトラブルシューティングする方法について説明します。

B.7.1 インスタンスおよびフォルトのメトリックのあるページのロードの最適化

本番システムには、多数のコンポジット・インスタンスおよびフォルトが含まれることがあり、情報の取得が比較的遅くなると、Oracle Enterprise Manager Fusion Middleware Controlの各ページでタイムアウトが発生する可能性があります。SOAインフラストラクチャ、SOAコンポジット・アプリケーション、サービス・コンポーネントおよびサービス・エンジンの「ダッシュボード」ページ、SOAインフラストラクチャおよびサービス・エンジンの「デプロイ済コンポジット」ページ、およびパーティションのホーム・ページのロード・パフォーマンスを最適化するために、「SOAインフラストラクチャの共通プロパティ」ページで、次の処理を実行する2つのプロパティ設定を有効にできます。

  • ページをロードする際にすべてのメトリック情報のロードを無効にします。インスタンスとフォルトのメトリックは、サーバーから必要に応じて取得できます。


    注意:

    この設定によって、フォルト、インスタンスおよび数のメトリックが無効になり、DMSメトリックは無効になりません。


  • インスタンス、フォルトおよび数の取得を指定した期間(デフォルトの選択)に制限します。

インスタンスおよびフォルトのメトリックのあるページのロードを最適化する手順は、次のとおりです。

  1. ナビゲータで「soa-infra」をクリックします。

  2. 値が表示されるのは、「最新のコンポジット・インスタンス」セクションの「実行中」フィールドと「合計」フィールド、および「デプロイ済コンポジット」セクションの「インスタンス」列と「失敗したインスタンス」列です。これらの値が大きいと、このページや類似した情報を持つ他のページをロードするときに、時間がかかる場合があります。

    soaadmin_fetch1.gifの説明が続きます
    図版soaadmin_fetch1.gifの説明

  3. 「SOAインフラストラクチャ」メニューから、「SOA管理」「共通プロパティ」の順に選択します。

  4. 「データ表示オプション」セクションで、インスタンス数とフォルト数のメトリックのフェッチの無効化チェック・ボックスを選択します。

  5. 「適用」をクリックします。

  6. 「SOAインフラストラクチャ」の「ダッシュボード」ページに戻ります。

  7. 以前に表示されていた値がリンクに置き換えられています。

  8. 「デプロイ済コンポジット」セクションで、特定のSOAコンポジット・アプリケーションのリンクをクリックして、インスタンス数に関する詳細を表示します。選択したリンクの値が計算されます。

    soaadmin_fetch7.gifの説明が続きます
    図版soaadmin_fetch7.gifの説明

  9. 「OK」をクリックします。

  10. 「インスタンス数」をクリックします。

    soaadmin_fetch6.gifの説明が続きます
    図版soaadmin_fetch6.gifの説明

    メッセージに、SOAインフラストラクチャの実行中インスタンスおよび合計インスタンスの数が表示されます。

  11. 「OK」をクリックします。

  12. 「SOAインフラストラクチャの共通プロパティ」ページに戻ります。

  13. 「データ表示オプション」セクションで、「インスタンスとフォルトの表示を次に制限: 過去time_periodチェック・ボックスが選択されていない場合は選択します。デフォルトで、このチェック・ボックスは選択済で、期間は24時間(1日)に設定されています。

  14. 最新のインスタンス、フォルトおよび数のメトリックを表示用に取得する期間を指定します(例: 10分)。

  15. 「適用」をクリックします。

  16. 「SOAインフラストラクチャ」の「ダッシュボード」ページに戻ります。

  17. ページの右上のセクションに次のメッセージが表示されることに注意してください。

    Recent Instances and Faults for the last 10 minutes
    
  18. 「インスタンス数」をクリックします。

    期間に指定した値は、メッセージ・タイトルに表示されます。その期間の実行中メッセージおよび合計メッセージの数も表示されます。

    soaadmin_fetch8.gifの説明が続きます
    図版soaadmin_fetch8.gifの説明

  19. 「OK」をクリックします。

  20. 「デプロイ済コンポジット」セクションで、リンクをクリックします。

    soaadmin_fetch2.gifの説明が続きます
    図版soaadmin_fetch2.gifの説明

    期間に指定した値は、メッセージ・タイトルに表示されます。選択したSOAコンポジット・アプリケーションに対するその期間の実行中メッセージおよび合計メッセージの数も表示されます。

    soaadmin_fetch3.gifの説明が続きます
    図版soaadmin_fetch3.gifの説明

これらのプロパティの設定方法については、第3.1項「SOAインフラストラクチャ・プロパティの構成」を参照してください。


注意:

  • インスタンス数とフォルト数のメトリックを取得するリンクをクリックするとOracle Enterprise Manager Fusion Middleware Controlがタイムアウトする場合は、トランザクション・タイムアウト・プロパティの値を増やします。詳細は、B.3.1項「接続タイムアウトの解決」を参照してください。

  • 「再計算」をクリックすると、再計算がすぐに実行されますが、進行状況インジケータは表示されません。ただし、データに対する更新は画面に反映されます。


B.7.2 開いているファイルが多すぎることが原因で発生したメッセージの失敗の解決

使用中のJARファイル数、またはJDK 6/JREによるファイル記述子の使用(あるいはその両方)によっては、実行時またはコンパイル時に、次のエラーが発生する可能性があります。

Message send failed: Too many open files 

このエラーを解決するには、ファイル記述子の数を少なくとも4096に増やします。

  1. descriptorsの値を識別するには、limitコマンド(C shellの場合)またはulimitコマンド(Bash shellの場合)を使用します。通常、1024の値は低すぎます(特にJDK 6の場合)。

    % limit
    
    cputime      unlimited
    filesize     unlimited
    datasize     unlimited
    stacksize    10240 kbytes
    coredumpsize unlimited
    memoryuse    unlimited
    vmemoryuse   unlimited
    descriptors  1024
    memorylocked 500000 kbytes
    maxproc      46720
    
  2. rootユーザーでオペレーティング・システムにログインします。

  3. /etc/security/limits.confファイルを編集してdescriptorsの値を大きくします。

    この例の場合、すべてのユーザーについて制限を4096に増やすと、limits.confファイルは、次のようになります。

    #<domain>      <type>  <item>         <value>
    #
    
    #*               soft    core            0
    #*               hard    rss             10000
    #@student        hard    nproc           20
    #@faculty        soft    nproc           20
    #@faculty        hard    nproc           50
    #ftp             hard    nproc           0
    #@student        -       maxlogins       4
    
    # End of file
    @svrgroup    soft    memlock         500000
    @svrgroup    hard    memlock         500000
    *           soft    nofile          4096
    *           hard    nofile          4096
    
  4. 端末を閉じてから再度開き、変更内容を有効にします。システムの再起動は不要です。

B.7.3 ペイロードが大きいことによって発生するMaxMessageSizeExceededExceptionエラーの解決

デプロイ済のSOAコンポジット・アプリケーションに大きなペイロード(たとえば、12 MB)を指定し、そのペイロードを表示するために、監査証跡で「XML文書の表示」をクリックすると、MaxMessageSizeExceededExceptionエラーが発生することがあります。このエラーは、次のJVMパラメータを設定することによって解決できます。

  1. 次のファイルを開きます。

    • UNIXオペレーティング・システムでは、$MIDDLEWARE_HOME/user_projects/domains/domain_name/bin/setDomainEnv.shを開きます。

    • Windowsオペレーティング・システムでは、MIDDLEWARE_HOME\user_projects\domains\domain_name\bin\setDomainEnv.batを開きます。

  2. 次の値を指定してweblogic.MaxMessageSizeプロパティを追加します。

    EXTRA_JAVA_PROPERTIES="${EXTRA_JAVA_PROPERTIES}
    -Dweblogic.MaxMessageSize=20000000"
    export EXTRA_JAVA_PROPERTIES 
    
  3. サーバーを再起動します。

B.7.4 表領域の拡張による実行時の問題の回避

データベース表領域が拡張されていない場合は、実行時処理に影響を与える可能性があります。メッセージが処理または保持されず、例B-3のような例外エラーがログ・ファイルに表示される可能性があります。これは、Oracle BPEL Process Managerではインスタンス・データの格納をデータベースに依存しているためです。データベースが使用可能でない場合は、実行時処理に影響を与えます。

例B-3 例外エラー

INFO: MediatorServiceEngine returning after processing the request for 
operation = processResponse 

[EL Warning]: 2009.01.14 11:46:16.783--UnitOfWork(32372128)--Exception 
[EclipseLink-4002] (Eclipse Persistence Services - 1.1 (Build 
SNAPSHOT-20081007)): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.BatchUpdateException: ORA-01691: unable to 
extend lob segment SH_SOAINFRA.SYS_LOB0000145067C00007$$ by 1024 in 
tablespace SH_SOAINFRA 

Error Code: 1691 
Query: InsertObjectQuery(com.collaxa.cube.persistence.dto.AuditTrail@199b33d) 
[EL Warning]: 2009.01.14 11:46:16.782--UnitOfWork(32372128)--Exception 
[EclipseLink-4002] (Eclipse Persistence Services - 1.1 (Build 
SNAPSHOT-20081007)): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.BatchUpdateException: ORA-01691: unable to 
extend lob segment SH_SOAINFRA.SYS_LOB0000145067C00007$$ by 1024 in 
tablespace SH_SOAINFRA 
. . .
. . .

表領域は、サイズ制限に達したときに、それ自体が指定のサイズだけ拡張するように設定してください。自動拡張を有効にしない場合は、表領域がクリティカルまたは警告のしきい値サイズに達したことを示すアラートが生成されたときに、必ず対応してください。サイズ・アラートには、表領域サイズを手動で大きくすることで対応できます。

B.7.5 大量のトランザクションによるデータベース増大の問題の解決

Oracle SOA Suiteトランザクションが失敗して、データベースの領域不足がログに示されている場合は、大量のトランザクションによってデハイドレーション・ストアまたはMDSストアの領域が不足している可能性があります。後者の場合は、次のようなエラーが表示されます。

java.sql.SQLException: ORA-01653: unable to extend table SH_MDS.CUBE_INSTANCE by
16 in tablespace FUSION_TS_TOOLS 

これは、表領域が満杯で、データベースがこれを拡張できないことを示します。

次のタスクを実行します。

  1. 適切なレコード保存ポリシーを考慮して、アプリケーションがランタイム・データに依存していないことを確認しながら、デハイドレーション・ストア表を定期的にパージします。

    パージの後で、領域を結合するコマンドを実行する必要があります。パージ戦略を機能させるためには、どれくらいの期間データをデータベースに保持する必要があるかを理解することが重要です。保存ポリシーは、次のような要因から決定されます。

    • 法律的な要件

    • ライン・オブ・ビジネスの要件

    • データの保存に関する全般的な会社のポリシー

    保存ポリシーが長くなるほど、格納する必要があるデータの量が増加し、それに応じて必要なディスク容量も多くなります。

    パージ戦略の作成の詳細は、第9章「Developing a Database Growth Management Strategy」および第10章「データベース増分の管理」を参照してください。

  2. パーティション化するために表を構成する前に、Oracleデータベースのパーティション化の需要に対処するための十分なリソースがデータベース・ハードウェアにあることを確認します。

    デハイドレーション・ストアに対しては、レンジ・パーティション化とハッシュ・パーティション化を使用するデータベース・パーティション化が最適なソリューションです。パーティション化は、複数の表にデータを格納することで大きなデータ・セットをより小さく管理しやすいデータ・セットにすることと定義されます。パーティション化戦略は、メンテナンス・オーバーヘッド(パーティションの削除とプルーニング)を軽減してパフォーマンスを改善するうえで大きな役割を担います。パーティション化は、少なくとも、アクティビティが活発な表について行う必要があります。これは、ディスクI/Oを分散させてホット・ディスクを防止するうえで大きな役割を果たします。パーティション化のために表を構成する前に対応することが必要な重要な要件は、Oracleデータベースのパーティション化の需要に対処するための十分なリソースがデータベース・ハードウェアにあることを確認することです。本番前のテストでインストールが大規模であると示された場合は、パーティション化機能を利用するために環境(CPU、メモリーおよびディスク領域)を正しくサイズ調整していることが期待されます。

  3. 最大限のパフォーマンスが得られるように、メモリー、表領域およびパーティションに対してデータベース・パラメータを調整します。詳細は、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』の、「データベース・パラメータのチューニング」に関する項を参照してください。

  4. 領域不足の他の表領域について、次の問合せを使用して空き表領域をチェックします。

    SELECT TOTAL.TABLESPACE_NAME "TABLESPACE NAME", FREE_SPACE, (TOTAL_SPACE-FREE_
    SPACE) USED_SPACE, TOTAL_SPACE, ROUND((FREE_SPACE*100/TOTAL_SPACE),2) "FREE %"
    FROM (SELECT TABLESPACE_NAME, SUM(BYTES/1024/1024) FREE_SPACE FROM SYS.DBA_
    FREE_SPACE GROUP BY TABLESPACE_NAME) FREE,
    (SELECT TABLESPACE_NAME, SUM(BYTES/1024/1024) TOTAL_SPACE FROM SYS.DBA_DATA_
    FILES GROUP BY TABLESPACE_NAME) TOTAL
    WHERE FREE.TABLESPACE_NAME = TOTAL.TABLESPACE_NAME AND TOTAL.TABLESPACE_NAME =
     '<TABLESPACENAME>'
    ORDER BY 5;
    
  5. 表領域設定を増やすには、管理者アカウントを使用します。例:

    ALTER TABLESPACE TABLESPACE_NAME ADD DATAFILE 'DATAFILE_NAME' SIZE 500M
    AUTOEXTEND ON;
    

詳細は、第B.7.2項「開いているファイルが多すぎることが原因で発生したメッセージの失敗の解決」を参照してください。

B.7.6 ページ表示やトランザクション終了に長時間かかるといったアプリケーションの低速パフォーマンスの観察

ときによって、低速なアプリケーション・パフォーマンスやメモリー・トラッシュが観察される場合があります。たとえば、ページのロードと表示やコンポジット・トランザクションの完了に時間がかかる場合があります。レスポンスが通常より遅く感じられる場合があります。

低速パフォーマンスは様々な原因で発生します。たとえば、多数のサーバーが同じホスト上で実行されている状況や、多数のレコード、セッションまたはロックがデータベースに存在する状況が、原因として考えられます。スレッド競合もパフォーマンス不良の原因になる可能性があります。


注意:

この問題が発生すると、Oracle Enterprise Manager Fusion Middleware Controlでの構成の変更は一切できなくなる可能性があります。


この問題を診断する手順は次のとおりです。

  1. CPU使用率をチェックして、CPU容量に対して負荷やプロセスが過大または過多なためにCPUが飽和していないかどうかを調べます。

    通常の負荷でCPU使用率が100%の場合(目標は70-80%)、ピーク負荷を処理する容量はなく、ハードウェア・リソースは不十分です。追加の負荷を処理できるようにスケールアウト・サーバーを追加してください。

  2. パフォーマンスについてレポートするOracle Enterprise Manager Fusion Middleware Controlを使用してアプリケーションをチェックします。BPELプロセスの監査証跡で、サービス、起動時間およびレスポンス時間のパフォーマンスをチェックします。

  3. パフォーマンスを最大化するために、ロギング・レベルをデフォルトの「INFO」レベルより高く設定しないことをお薦めします。

    デバッグを行う場合は、ロギング・レベルをFINESTレベルに設定する必要があります。ただし、問題が解決されたら、最善のパフォーマンスを得るために、ロギング・レベルをデフォルト・レベルにリセットしてください。また、「SOAインフラストラクチャの共通プロパティ」ページで「監査レベル」「本番」に設定することもお薦めします。これはOracle Enterprise Manager Fusion Middleware Controlで次のように設定できます。

    1. 「soa-infra」(SOA_cluster_name)を右クリックします。

    2. 「SOA管理」「共通プロパティ」の順に選択します。

    3. 「監査レベル」「本番」に設定します。

  4. サービス・レベル合意(SLA)を維持するために、保存要件に基づいて定期的にパージします。

    データの増加によってパフォーマンスの問題が発生する可能性がある表を識別するには、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』のインスタンス・データ増加の影響を受ける表の識別に関する項を参照してください。

    パージ・スクリプトの使用の詳細は、第10章「データベース増分の管理」を参照してください。

  5. TopやGlanceなどのモニタリング・ツールを使用して、メモリー、IO、ページング、スワッピング、CPU使用率の負荷の統計をチェックします。

  6. フル・ガベージ・コレクションまたはメモリー不足エラーを避けるために、JVMを最適化します。

    頻繁なガベージ・コレクションは、高いメモリー使用率またはメモリー・リークのいずれかが原因で発生する可能性があります。

    1. オペレーティング・システム・レベルのページング・アクティビティを回避するために、システムで実行されている全JVMの最大ヒープ・サイズの合計が、使用可能な物理RAMの量を超えないようにします。

    2. JRockit Mission Controlメモリー・プロファイリング・ツールを使用して、スレッド・ ダンプとメモリー・スナップショットを取得します。これはOracleサポート・サービスがコードの問題をデバッグする一助となります。スレッド・ ダンプの詳細は、第12章「SOAコンポジット・アプリケーションに関する問題の診断」を参照してください。

  7. 競合を回避するためにスレッドを最適化します。調査のためのスレッド・ダンプを取得して、Oracleサポート・サービスにこれを送信します。

  8. JVMとスレッド・ ダンプでデータベースの起動方法をチェックして、データベースのパフォーマンスがボトルネックになっているかどうかを識別します。

  9. データベースAWRスナップショットを実行して、データベース・パフォーマンスの問題の原因を識別します。

  10. データベースの統計が定期的に更新されていることと、メモリー、表領域およびパーティションのチューニング可能な他のパラメータが最大限のパフォーマンスが得られるように効果的に使用されていることを確認します。

    チューニング上の一般的な推奨事項を次に示します。詳細は、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』のデータベース・パラメータのチューニングに関する項を参照してください。

    • 可能であれば、物理的に別個のディスク領域に索引と表を配置します。

    • ロールバック・セグメントは、データ・セグメントや索引セグメントと一緒に配置しないでください。

    • 非常にアクティブな表や索引は、各自の表領域に分離します。

    • ディスクI/Oを分散させてホット・ディスクを防止するために、非常にアクティブな表や索引をパーティション化します。

    • データベース表の統計を定期的に生成するためのプロセスを配備します。

  11. 大きなオブジェクトの高水位標(HWM)競合を抑制するために、データベース表をチューニングします。HWM競合を抑制し、AQのメッセージを生成および使用する際に一貫したパフォーマンスを確保できるように、データベース・アドバンスト・キュー(AQ)をチューニングします。

    知っておく必要があるEDN AQ名は、EDN_EVENT_QUEUE_TABLEEDN_OAOO_DELIVERY_TABLEです。

  12. 最適な設定を確保できるように、BPELプロセスおよびEDNスレッド数をチューニングします(たとえば、Oracle Enterprise Manager Fusion Middleware Controlの「BPELサービス・エンジン・プロパティ」ページの「ディスパッチャ呼出しスレッド」および「ディスパッチャ・エンジン・スレッド」プロパティ)。スレッド構成が大きすぎると、サーバーはメモリー不足になります。小さすぎると、メッセージのバックアップが開始されます。

  13. オーバーヘッドを削減するようにBPELプロセス・プロパティをチューニングします(たとえば、不要な場合は、Oracle Enterprise Manager Fusion Middleware Controlの「BPELサービス・エンジン・プロパティ」ページの「ValidateXML」および「StatsLastN」(バッチ・サイズを収集する統計)プロパティを無効にします)。

  14. パッケージ化されたアプリケーション(Siebelなど)と統合している場合は、レガシー・アプリケーションに問題がないかどうかをチェックします。

様々なコンポーネントのパフォーマンスのチューニングの詳細は、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』の「トップ・パフォーマンス領域」に関する章とSOA Suiteコンポーネントに関する項を参照してください。

「BPELサービス・エンジン・プロパティ」ページでのプロパティの設定の詳細は、第13章「BPELプロセスのサービス・コンポーネントとエンジンの構成」を参照してください。

B.7.7 送信メッセージ速度を超える受信メッセージ速度の観察

メッセージの受信速度がメッセージの処理速度(送信速度)を超えると、例B-4のような警告メッセージが表示されます。

例B-4 受信メッセージ速度が処理メッセージ速度を超えた場合の警告メッセージ

[2012-04-09T16:49:40.342-04:00] [Soa_server1] [WARNING] []
 [oracle.soa.bpel.engine.dispatch] [tid:
 weblogic.work.j2ee.J2EEWorkManager$WorkWithListener@e3d0e3d
] [userId: <anonymous>] [ecid: 0000JSnNKVTBh4Z5ln1FiZ1Fdnmd001gWL,0] [APP:
soa-infra] BPEL service engine is overloaded, the inflow is higher than the
outflow, there are "100000" invoke messages pending in the dispatcher in-memory
cache, the configured threshold is "102",the new incoming invoke messages will not
be dispatched or processed immediately, they are going to be persisted in the
dehydration store and can be recovered later using recovery.

この問題を解決するには、処理速度を上げるか、受信速度を下げます(受信を絞ります)。受信速度より処理速度が低速な状態は、次の1つまたは全部の問題が原因となって発生する可能性があります。

  • 呼出しスレッドが不足している

  • JVM容量が不足している

  • BPELプロセスがコールしている外部パートナが拡張できないため、BPELプロセスでメッセージのバックアップが実行されている

正確な原因を識別してそれらを解決するには、次の手順を実行します。

  1. composite.xmlファイルのoneWayDeliveryPolicyプロパティ値をチェックします。これはasync.persistasync.cacheまたはsyncに設定されていますか。このプロパティの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の「デプロイメント・ディスクリプタのプロパティ」に関する付録を参照してください。

  2. BPELプロセスから外部サービスへの送信呼出しが、外部サービスのスケーラビリティが低いためにバックアップされていないことを確認します。外部サービスにボトルネックがある場合は、Oracle SOA Suiteで実行するチューニング(つまり、手順34)はまったく効果がありません。最初にこのボトルネックを解決することが必要です。

  3. JVMガベージ・コレクション(GC)を監視します。GCが頻繁に通常以上になってJVMがほぼ容量満杯になっている場合は、JVMヒープ・サイズを大きくします。JVMに十分な容量がない場合、手順4で実行するチューニングによって事態は悪化します。

  4. 受信メッセージ処理用のサーバーのスレッドを増やすために、「BPELサービス・エンジン・プロパティ」ページでディスパッチャ呼出しスレッドとディスパッチャ・エンジン・スレッドの値を大きくします。詳細は、第13.1項「BPELプロセス・サービス・エンジン・プロパティの構成」を参照してください。

B.8 サーバーのトラブルシューティング

この項では、サーバーの問題をトラブルシューティングする方法について説明します。

サーバー起動の問題の詳細は、第3.2項「管理対象サーバーとSOAインフラストラクチャの停止と起動」を参照してください。

B.8.1 管理対象サーバーの起動および停止のベスト・プラクティス

次の(両方ではなく)いずれかの方法で管理対象サーバーを起動および停止することをベスト・プラクティスとしてお薦めします。管理対象サーバーをコマンドラインから起動して、Oracle Enterprise Manager Fusion Middleware Controlから停止する(または、その逆)など、これらの方法を組み合せないでください。

  • Oracle Enterprise Manager Fusion Middleware Control

    この方法を使用する場合は、ノード・マネージャが起動され実行中である必要があります。Oracle Enterprise Manager Fusion Middleware Controlから実行される管理対象サーバーのすべての起動および停止は、ノード・マネージャによって追跡されます。この方法では、サーバーの状態は問題にはなりません。

  • コマンドライン

    この方法を使用する場合、サーバーの状態はノード・マネージャによって追跡されません。このため、サーバーをコマンドラインから起動し、Oracle Enterprise Manager Fusion Middleware Controlから停止すると、Oracle WebLogic管理サーバーはステータスを判断するためにノード・マネージャにアクセスしますが、「不明」という状態が返されます。

Oracle Enterprise Manager Fusion Middleware Controlからサーバーを停止および起動する手順は、次のとおりです。

  1. 「WebLogicドメイン」を展開します。

  2. 管理対象サーバー(例: soa_server1という名前のサーバー)を選択します。

  3. 「制御」「停止」の順に選択します。

  4. 「制御」「起動」の順に選択します。

コマンドラインからの管理対象サーバーの起動および停止の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suiteインストレーション・ガイド』を参照してください。

B.8.2 SOAサーバー起動の問題の診断

SOAサーバー(soa_infra)が起動しない場合、サーバー起動の問題には様々な原因が考えられます。検出によるアプローチを使用して根本原因を見つける必要があります。問題を診断する最初の試みとして、サーバーと診断ログをチェックします。さらに、次をチェックしてください。

サーバー起動の問題を診断する手順は次のとおりです。

  1. データベースが使用できないかどうか、または使用可能な接続が不足しているかどうかをチェックします。Oracle SOA Suite実行時の一部の障害は、データベースの停止や接続の問題によって発生します。次の手順を実行してください。

    1. Oracle WebLogic Server管理コンソールにログインします。

    2. 「ドメイン構造」で、「サービス」「データ・ソース」「SOADatasource」「監視」「テスト」の順に選択してデータ・ソースをテストして、ステータスを表示します。これはSQLプロンプトからもチェックできます。

  2. ポートの競合がないかどうか、使用されているポートのリストをチェックします。

  3. MDSリポジトリが共有ドキュメントをロードできないかどうかをチェックします(不正なMDS構成またはMDSスキーマを保持するデータベースが到達不可能)。

  4. Oracle SOA Suiteクラスタを使用している場合は(ユニキャストまたはマルチキャストの使用)、Oracle Coherenceの構成をチェックします。

    この問題はプロビジョニングの完了後のみ適用されます。ポートの競合がある場合(Oracle Coherenceによって使用されている場合)、SOAサーバーのクラスタリングは失敗する場合があります。たとえば、一方のSOAサーバーがデプロイメントを取得できても、もう一方のサーバーが取得できない可能性があります。ときによって、これは次のエラーのみを示す場合があります。

    [soa_server1] [ERROR] [] [Coherence] [tid: Logger@352821903 3.6.0.4] 
    [ecid: 46f620208907e045:63f295ec:12dd091ec2e:-8000-0000000000000003,1:27187] 
    [APP: soa-infra] 2011-01-28 23:06:19.463/414.816 Oracle Coherence GE 3.6.0.4 
    <Error> (thread=[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default
     (self-tuning)', member=n/a): 
    Error while starting cluster: com.tangosol.net.RequestTimeoutException: Timeout
     during service start: ServiceInfo(Id=0, Name=Cluster, Type=Cluster[[...
    

    この例では、Oracle Coherenceタイムアウトが重要な役割を果たしています。ただし、次のように無関係のエラーを示す場合もあります。

    Error creating bean with name 'SensorManager' defined in ServletContext
    resource
    

    この根本原因も、主としてOracle Coherenceの構成に関係しています。

  5. 管理サーバーと管理対象サーバーの両方のポートがオープンでアクセス可能であるかどうかをチェックします。

  6. 管理サーバーに到達できないために管理対象サーバーの起動が失敗したかどうかをチェックします。

  7. ネットワークの問題をチェックします(たとえば、問題の原因となっている可能性があるIPルーティングのフィルタやルール)。

  8. Oracle WebLogic Server LDAPセキュリティの破損をチェックします。

    管理対象サーバーは、アプリケーションのシステムMBeanブラウザのポリシーがすでに存在しているかどうかをレポートする場合があります。

詳細は、『Oracle Fusion Middleware Oracle SOA Suiteエンタープライズ・デプロイメント・ガイド』の管理コンソール用フロントエンドURLの設定とリダイレクト・プリファレンスの設定に関する項とフロントエンドHTTPホストおよびポートの設定に関する項を参照してください。

B.8.3 プロキシ・サーバーの指定

システム・プロパティを使用してプロキシ・サーバーを指定するには、クライアント・アプリケーションを通常の方法で記述し、クライアント・アプリケーションを実行するとき、Javaシステム・プロパティを指定します。例B-5に詳細を示します。

例B-5 プロキシ・サーバーの指定

setenv PROXY_SETTINGS "-DproxySet=true
-Dhttp.proxyHost=www-myproxy.us.mycompany.com -Dhttp.proxyPort=80
 -Dhttp.nonProxyHosts=localhost|*.us.mycompany.com
  |0:0:0:0:0:0:0:1|fe80:0:0:0:250:56ff:fe31"

注意:

http.proxyHostおよびhttp.proxyPortなどのプロキシ・プロパティの値を指定する場合は、http.nonProxyHostsプロパティも指定します。


B.8.4 一部のローエンドのホストで、フロー・ダイアグラムが初回に表示されない

Oracle Enterprise Manager Fusion Middleware Controlで、一部のローエンドのホストにおいて、デプロイ済のSOAコンポジット・アプリケーションのインスタンスIDのフロー・ダイアグラムが、初回に表示されない場合があります。かわりに、リソースのロードに失敗しましたというメッセージを受信します。

このことを回避するには、フローのトレース・ページを閉じ、インスタンスIDをクリックして、フローのトレース・ページに戻ります。

B.8.5 IPv4とIPv6をサポートするデュアル・スタック・ホスト上のOracle Enterprise Manager Fusion Middleware Controlへのアクセス

IPv4とIPv6の両方がサポートされているデュアル・スタック・ホスト上でOracle SOA Suiteを実行する場合は、Oracle Enterprise Manager Fusion Middleware ControlのIPv6のURLにIPv4クライアントがアクセスするには、表B-23に示されているようにetc/hostsファイルを更新する必要があります。

表B-23 etc/hostsファイルのIPv4とIPv6の設定

クライアント etc/hostsファイルを次のように編集します

IPv4クライアント上で:

xx.xxx.xxx.xxx myhost10-ipv6 

ここで、xx.xxx.xxx.xxxはIPv6のIPアドレスです。

IPv6クライアント上で:

2001:0db8:db0a::0:1  myhost10-ipv6 myhost10-ipv6.us.example.com

注意: 2001:0db8:db0a::0:1は、使用するホスト環境に適した値に置き換えます。


B.9 ブラウザのトラブルシューティング

この項では、ブラウザの問題をトラブルシューティングする方法について説明します。

B.9.1 Safariブラウザを使用してWSDLファイルの内容を表示する場合の制限

Safariブラウザを使用する場合は、Oracle Enterprise Manager Fusion Middleware ControlでのWSDLファイルの内容の表示に関する、次の制限と回避策に留意してください。Mozilla Firefoxは正常に動作するため、この回避策は必要ありません。

  1. SOAコンポジット・アプリケーションのホーム・ページに移動します。

  2. ページの上部にある「WSDLおよびエンドポイントURIの表示」リンクをクリックします。

  3. 表示されている「WSDL」リンクをクリックします。

    選択したWSDLの内容が表示されていない空白ページが開きます。

    回避策として、次の追加の手順を実行します。

  4. このページの右上隅にある現在のページのメニューを表示するアイコンをクリックします。

  5. 表示されたメニューから「ソースの表示」を選択します。

    これにより、選択したWSDLの内容が別のページに表示されます。

B.10 その他のトラブルシューティングのドキュメント

表B-24に、その他のトラブルシューティングの問題について参照するドキュメントを示します。

表B-24 その他のトラブルシューティングのドキュメント

参照内容 参照先

SOAインフラストラクチャの起動とシャットダウンの問題

第3.2項「管理対象サーバーとSOAインフラストラクチャの停止と起動」


WebLogic診断フレームワーク(WLDF)および診断フレームワーク(DFW)を使用した、Oracle SOA Suiteの問題の診断

第12章「SOAコンポジット・アプリケーションに関する問題の診断」


大規模ドキュメントとメタデータの管理、および多数のインスタンスを含む環境の管理

『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の「大規模ドキュメントおよび多数のインスタンスの管理」の章

デプロイメント・エラーとコンパイル・エラー

『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』のテストおよびトラブルシューティングに関する項

Oracle WSM Policy Managerエラー

『Oracle Fusion Middleware Webサービスのためのセキュリティおよび管理者ガイド』の「問題の診断」の章

Oracle Business Activity Monitoring (BAM)

『Oracle Fusion Middleware Oracle Business Activity Monitoringユーザーズ・ガイド』の「トラブルシューティング」に関する付録

Oracle Business Rules


『Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド』の「Oracle Business Rulesのトラブルシューティング」に関する付録

Oracle User Messaging Service

第27.7項「Oracle User Messaging Serviceのトラブルシューティング」