Cosminexus V9 アプリケーションサーバ 機能解説 互換編

[目次][用語][索引][前へ][次へ]

4.6.7 データベースと接続中にトラブルが発生した場合

データベースとの接続中に,アプリケーションサーバの構成ソフトウェアであるDABroker Libraryでトラブルが発生した場合,DABroker Libraryによってデータベースとの接続は切り離されます。また,DABroker Libraryを強制終了した場合も同様です。

このとき,次の処理が実行されます。

トラブルへの対応後,必要に応じてデータベースに再接続してください。

また,データベースアクセス,DABroker LibraryまたはJDBCドライバでエラーが発生した場合,例外としてSQLExceptionがスローされます。このSQLExceptionオブジェクトのreasonには,次の項目が設定されています。トラブルへの対処に利用してください。

なお,次のエラーが発生した場合は,SQLExceptionはスローされません。

この場合は,JDBCインタフェースの仕様で決まっている処理が実行されます。

なお,データベースとしてHiRDB,またはOracleを利用している場合,性能解析トレースファイルに出力されたコネクションIDと,DABroker LibraryやHiRDBクライアント,またはOracleクライアントのログファイルやトレースファイルに出力されたコネクションIDを突き合わせて確認することで,トラブルが発生したコネクションを確認できます。確認方法については,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「付録B データベースと接続中にトラブルが発生したコネクションの特定」を参照してください。

注意
07-01以前のバージョンのHiRDBに接続していて,グローバルトランザクションとローカルトランザクションが混在している場合,性能解析トレースに出力されるコネクションIDと実際の接続状態に不整合が生じます。
例えば,コネクションの障害検知機能を無効にして,次のようなグローバルトランザクションとローカルトランザクションが混在している処理を実行する場合,6.〜8.および9.〜13.の処理で性能解析トレースに出力される情報と実際の接続状態に不整合が生じます。
[図データ]
  • 6.〜8.の処理では,ローカルトランザクションのコネクションIDは出力されずに,グローバルトランザクションのコネクションIDが出力されます。
  • 9.〜13.の処理では,グローバルトランザクションのコネクションIDは出力されずに,ローカルトランザクションのコネクションIDが出力されます。
このように,ローカルトランザクションのコネクションIDや,ローカルトランザクション実行後のグローバルトランザクションのコネクションIDを追跡することはできません。なお,7.のローカルトランザクションの処理で,コネクションが切り替わりますが,アプリケーションサーバには通知されません。
グローバルトランザクションとローカルトランザクションの混在は,使用するDBConnectorのトランザクションサポートレベルがXATransactionの場合に,トランザクションを開始する前にコネクションを取得してSQLを実行したときにも発生します。