データ・アクセスの問題

WebSphere® Application Server 診断ツールは、データベース接続に関する問題のトラブルシューティングに役立つサービスを提供しています。 さらに、IBM® Web サイトには、データベース固有の接続の問題に対する文書化された解決策を見つけるための柔軟な検索機能が用意されています。

注: このトピックでは、 1 つ以上のアプリケーション・サーバー・ログ・ファイルを参照します。推奨される代替案として、分散システムや IBM i システムの SystemOut.logSystemErr.logtrace.logactivity.log ファイルではなく、High Performance Extensible Logging (HPEL) ログおよびトレース・インフラストラクチャーを使用するようにサーバーを構成できます。また HPEL は、ネイティブ z/OS® ロギング機能と連携させて使用することができます。HPEL を使用する場合、LogViewer コマンド・ライン・ツールを サーバー・プロファイルの bin ディレクトリーから使用して、すべてのログ・ファイルにアクセスし、 情報をトレースできます。HPEL の使用について詳しくは、HPEL を使用してのアプリケーションの トラブルシューティングに関する情報を参照してください。

以下の手順は、接続に関する問題を迅速に切り分けるのに役立ちます。

  1. このアプリケーション・サーバーのログ・ファイルをブラウズして、手掛かりを探します。

    [z/OS]トピック『エラー・ログのセットアップ』を参照してください。

    [AIX Solaris HP-UX Linux Windows][IBM i]トピック『JVM ログの表示』を参照してください。デフォルトでは、これらのファイルは app_server_root/server_name/SystemErr.log および SystemOut.log です。
    注: このトピックでは、 1 つ以上のアプリケーション・サーバー・ログ・ファイルを参照します。推奨される代替案として、分散システムや IBM i システムの SystemOut.logSystemErr.logtrace.logactivity.log ファイルではなく、High Performance Extensible Logging (HPEL) ログおよびトレース・インフラストラクチャーを使用するようにサーバーを構成できます。また HPEL は、ネイティブ z/OS ロギング機能と連携させて使用することができます。HPEL を使用する場合、LogViewer コマンド・ライン・ツールを サーバー・プロファイルの bin ディレクトリーから使用して、すべてのログ・ファイルにアクセスし、 情報をトレースできます。HPEL の使用について詳しくは、HPEL を使用してのアプリケーションの トラブルシューティングに関する情報を参照してください。
  2. データ・ソースの helper クラスのプロパティーをブラウズして、 それが正しいプロパティーで、WebSphere Application Server のクラスパス上にあることを確認します。 不可解なエラーまたは振る舞いが発生する場合は、helper クラス名の欠落や命名の誤りが原因である可能性があります。 WebSphere Application Server は、指定されたクラスをロードできない場合にはデフォルトの helper クラスを使用しますが、これはデータベース・マネージャーで正しく機能しない場合があります。
  3. データ・ソースの Java™ Naming and Directory Interface (JNDI) 名が、 そのデータ・ソースへのアクセスを試みているクライアントが使用する名前と一致することを検査します。 エラー・メッセージに、問題がネーミングに関連している可能性があると示される場合、つまり、メッセージ内で name server または naming service について言及されるか、あるいは NMSV で始まるエラー ID が含まれている場合は、『ネーミング関連の問題』および『ネーミング・サービス・コンポーネントのトラブルシューティング』トピックを参照してください。
  4. トレース指定 RRA=all=enabled を使用して、リソース・アダプター用のトレースを使用可能にします。 指示に従ってトレース出力をダンプしてブラウズし、問題の原因をしぼりこみます。 トピック『トレースの使用可能化』を参照してください。

データベース固有のトラブルシューティングに関するヒントの包括的なリストについては、WebSphere Application Server 製品サポート・ページを参照してください。(この項目の終わりにあるリンクをご覧ください。) 「Search Support」フィールドに、検索語の 1 つとしてデータベース・ベンダー名を入力します。 「Solve a problem」を選択して、次に「検索」をクリックします。

サポート参照は、常にこのインフォメーション・センターのトピック『IBM からのトラブルシューティングのヘルプ』で見つけることができます。

現在、このインフォメーション・センターでは、以下のデータベースに関するトラブルシューティングのヒントの提供は限定されています。

一般的なデータ・アクセス問題

IllegalConnectionUseException

このエラーは 、WAS40DataSource から取得した接続が複数のスレッド上で使用されている場合に生じることがあります。 このような使用法は、J2EE 1.3 プログラミング・モデルに違反しているため、 サーバー上で検出されると例外が生成されます。この問題は、 サーブレットまたは Bean 管理パーシスタンス (BMP) タイプのエンタープライズ Beans を通じてデータ・ソースにアクセスするユーザーに関して生じます。

この問題を判別するには、接続共有のコードを調べます。 コードは、プログラミング・モデルの推奨に従わないことで、意図せずに共有を発生させる可能性があります。 例えば、サーブレットのインスタンス変数内に接続を保管することによって、 複数のスレッド上で同時に接続が使用される可能性があります。

WTRN0062E: 1 フェーズ可能なリソースを複数取得しようとする不正な試みが行われました。

このエラーが発生する理由としては、 次のようなものが考えられます。
  • 1 フェーズ接続を共有しようとしたが、各 getConnection 呼び出しで使用されている接続プロパティー (AccessIntent プロパティーなど) が同じではなかった。
  • データ・ソースが XA リソースでないときに、グローバル・トランザクションに複数の共有不可能な接続を参加させようとした。
  • XA リソースまたは別の 1 フェーズ・リソースが既にグローバル・トランザクションで使用されているときに、このグローバル・トランザクションで 1 フェーズ・リソースを使用しようとした。エラー状態が発生した原因を特定する際に、以下の情報が役立つことがあります。
    • 非 XA データ・ソースを使用しており、接続を共有しようとしている場合は、関連するすべての resource-ref を shareable に設定してください。 resource-ref を使用しない場合は、デフォルトで共有不可能な接続 (unshareable) に設定されます。
    • 各接続要求で同じ接続プロパティー (IsolationLevel または AccessIntent など) を使用しない場合、接続は共有されません。
    • 異なる AccessIntent 設定を使用している可能性がある CMP Bean を使用している場合、接続が共有されないことがあります。 非 CMP コンポーネントとの接続を共有する CMP Bean について詳しくは、『データ・アクセス API に対する拡張機能』を参照してください。
このエラーを解決するには、以下のようにします。
  • getConnection 要求とともにクライアント・コードが渡すものを検査し、それらが相互に整合性があることを確認します。
  • アセンブリー・ツールを使用して、リソース・バインディングから接続の共有有効範囲を検査します。トピック『アセンブリー・ツール』を参照してください。
    • 共有不可能な接続有効範囲を実行している場合は、 データ・ソースが XA データ・ソースであることを確認します。
    • 共有可能な接続有効範囲を実行している場合は、AccessIntent を含むすべての接続プロパティーが共有可能であることを確認します。
  • 管理コンソールの「Manage JDBC resource」パネルで、JDBC プロバイダーの実装クラス が XA タイプのトランザクションをサポートするクラスであることを確認します。

データ・ソースまたはリソース・アダプターへのアクセス中の ConnectionWaitTimeoutException

アプリケーションが、 WebSphere Application Server データ・ソースまたは JCA 準拠のリソース・アダプターにアクセスしようとしているときに、com.ibm.websphere.ce.cm.ConnectionWaitTimeoutException または com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutException のような例外を受け取る場合、 考えられる原因は以下のとおりです。
  • 特定のプールの接続の最大数が非常に低く設定されている。接続のコンカレント使用要求が、接続プール用に構成された最大値を超えています。 CPU 使用率が高くないにもかかわらずこれらの例外を定期的に受け取る場合は、これが問題の原因です。 この例外は、使用中のサーバーに、スレッドを保持するために使用できる接続がほとんどないことを示しています。
  • 接続待ち時間が非常に低く設定されている。接続に対するCurrent®の要求が高すぎて、短時間有効な接続が存在しない 状態になることがあります。接続待ちタイムアウト値が非常に低い場合、 ユーザーが接続をプールに戻す直前にタイムアウトになることがあります。 これは、接続待ち時間を調整することである程度緩和できます。 延長期間中に最大に近い接続を使用しており、定期的にこのエラーを受け取る場合は、これが問題の原因です。
  • いくつかの接続をクローズしていない、または接続をプールに返す速度が遅い。 この状況が発生するのは、共有不能な接続を使用している、接続をクローズし忘れた、または接続を使用し終えて長時間経過した後にクローズしたなどというときに、接続が再使用のためにプールに戻されなかった場合です。プールは空になり、すべてのアプリケーションが ConnectionWaitTimeoutExceptions を入手します。 この問題が発生すると、接続プール内の接続が使い尽くされ、 ほとんどの要求に対してエラーを受け取ることになります。
  • サーバーまたはバックエンド・システムが処理するリソースを保持するよりも、多くのロードを駆動している。この場合、より必要なリソースを判別し、ニーズに対応するために構成またはハードウェアをアップグレードする必要があります。 この問題の 1 つの兆候として、アプリケーション・サーバーやデータベース・サーバーのプロセッサーがほぼ 100 % 使用中になります。
これらの問題を解決するには、以下のいずれかを行います。
  • 使用する接続数を少なくするようにアプリケーションを変更します。
  • 接続を適宜クローズします。
  • MaxConnections または ConnnectionWaitTimeout のプール設定を変更します。
  • リソースとその構成を調整します。

com.ibm.websphere.ce.cm.StaleConnectionException: [IBM][CLI Driver] SQL1013N データベース別名またはデータベース名「NULL」が見つかりませんでした

com.ibm.websphere.ce.cm.StaleConnectionException: [IBM][CLI Driver] SQL1013N データベース別名またはデータベース名 "NULL" が見つかりませんでした。SQLSTATE=42705。このエラーは、データ・ソースが定義されているにもかかわらず、databaseName 属性とそれに対応する値が「カスタム・プロパティー」パネルに追加されていない場合に生じます。

databaseName プロパティーを追加するには、以下のようにします。
  1. 管理コンソールで「リソース」 > 「JDBC プロバイダーの管理」の順にリンクをクリックする。
  2. 問題のあるデータ・ソースをサポートする JDBC_provider を選択する。
  3. データ・ソース」を選択してから、問題のあるデータ・ソースを選択する。
  4. 追加プロパティー」の下の「カスタム・プロパティー」をクリックする。
  5. databaseName」プロパティーを選択 (存在しない場合には追加) して、実際のデータベース名を値として入力する。
  6. 適用」または「OK」をクリックし、アクション・バーの「保存」をクリックする。
  7. 再びデータ・ソースにアクセスする。

java.sql.SQLException: java.lang.UnsatisfiedLinkError

このエラーは、データベースをサポートするバイナリー・ライブラリーを含むディレクトリーが 、WebSphere Application Server が開始された環境の LIBPATH 環境変数に含まれていないことを示します。

DBM ベンダーのライブラリーを含むパスは、dbm によって変わります。それらを検索する方法の 1 つは、 エラー・メッセージに指定された欠落ライブラリーをスキャンすることです。次に、WebSphere Application Server が開始されたアカウントの .profile の中で、 またはこれから startServer プログラムを開始する .sh ファイルにステートメントを追加することによって、欠落しているディレクトリーを LIBPATH 変数に含めるように訂正できます。

[z/OS]Java の LIBPATH (java.library.path) プロパティーを domain_region_libpath 環境変数で、control_region_libpath、server_region_libpath、adjunct_region_libpath のように構成します。領域ライブラリー・パス変数の設定方法については、トピック『BBOM0001I メッセージで参照される変数の値の変更』を参照してください。

エラー J2CA0030E がエラー WTRN0063E でラップされた

トランザクションを実行しようとしているときに、"J2CA0030E: Method enlist caught java.lang.IllegalStateException"が、"WTRN0063E: 既存の 2 フェーズ可能リソースがあり、1 フェーズ可能リソースを取得しようとする不正な試みが行われました。"というエラーにラップされた。このエラーは、Last Participant Support が欠落しているか使用不可の場合に生じることがあります。 Last Participant Support は、1 フェーズ対応リソースと 2 フェーズ対応リソースを、同じトランザクション内で活用する機能をサポートします。

最終参加者サポートは、以下が true の場合のみ使用できます。
  • WebSphere Application Server Programming Model Extensions (PME) がインストールされている。 PME は、Application Server Integration Server 製品に含まれています。
  • PME のインストール時に、追加の Integration Server 拡張機能オプションが使用可能になっている。 この機能は、標準インストールを実行すると、デフォルトで使用可能になります。カスタム・インストールを実行する場合は、 この機能を使用不可にすることができます。この場合、Last Participant Support は使用不可になります。
  • 1 フェーズ・リソースをリストしているアプリケーションが、 「Accept heuristic hazard」オプションを使用可能にしてデプロイされている。このデプロイメントは、アセンブリー・ツールを使用して実行されます。

データベース操作を行おうとすると、"J2CA0114W: No container-managed authentication alias found for connection factory or data source datasource" というメッセージが表示される

このエラーは、JACL スクリプトを使用してデータ・ソースを作成した後で、アプリケーションを実行してその データ・ソースにアクセスする場合に、SystemOut.log ファイルで発生することがあります。

このようなエラー・メッセージが出るのは、JACL スクリプトによって 、CMP 接続ファクトリーでコンテナー管理認証別名が設定されなかったためです。 そのため、この JACL には次の行が欠落しています。
$AdminConfig create MappingModule $cmpConnectorFactory  "{mappingConfigAlias 
DefaultPrincipalMapping} {authDataAlias $authDataAlias}

この問題を解決するためには、欠落した行を JACL スクリプトに追加して、 もう一度スクリプトを実行します。サンプルの JACL スクリプトについては、トピック『Java Management Extensions API およびスクリプト・ツールを使用した JDBC プロバイダーおよびデータ・ソースの作成』を参照してください。

ws_ant コマンドを使用して HP プラットフォームで SQLJ 用にデータベース・カスタマイズを実行すると、エラーが発生する

ws_ant コマンドを使用して、 HP プラットフォーム上で Structured Query Language in Java (SQLJ) 用にデータベース・カスタマイズを実行すると、次のようなエラーが表示されることがあります。
[java] [ibm][db2][jcc][sqlj]
[java] [ibm][db2][jcc][sqlj] Begin customization
[java] [ibm][db2][jcc][sqlj] encoding not supported!!
このエラーは、 HP のデフォルト文字セットを使用してデータベースを作成したことが原因で発生した可能性があります。 Java Common Client (JCC) ドライバーは、Software Development Kit (SDK) を使用して、コード・ページの変換を実行します。しかし本製品に付属の SDK は HP のデフォルトのコード・ページに対応していません。
データベースを作成する前に、LANG を ISO ロケールに設定します。次のように指定します。
export LANG=en_US.iso88591
情報管理ソフトウェアの IBM サポート・サイトを参照して、DB2 の最新技術情報にアクセスしてください。

コンテナー管理パーシスタンス (CMP) で、定義されたとおりにデータベース・アクセス機能を正常に取得できない

WebSphere Application Server が、接続ファクトリー上のデータベースでアクセスされる特定の生成済みコードをキャッシングしていて、Java アーカイブ (JAR) ファイルにおける変更によりデータベース・アクセスの再生成が必要になった場合、これらの変更はサーバーを停止して再始動するまで有効になりません。

これらの障害が発生する可能性のある例を以下に挙げます。
  • エンタープライズ Bean カスタム finder メソッドを追加した場合。NullPointerException 例外が作成されます。
  • エンタープライズ Bean カスタム finder メソッドを更新した場合。新しい SQL ステートメントが実行されません。
  • スキーマ・マッピングを変更した場合。新しい SQL ステートメントが実行されません。

要約すると、カスタム finder メソッドを含むエンタープライズ Bean を追加または更新した場合は、サーバーを停止して再始動する必要があります。


トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_dsaccess
ファイル名:rtrb_dsaccess.html