データベースとの接続中に,アプリケーションサーバの構成ソフトウェアであるDABroker Libraryでトラブルが発生した場合,DABroker Libraryによってデータベースとの接続は切り離されます。また,DABroker Libraryを強制終了した場合も同様です。
このとき,次の処理が実行されます。
- DABroker Libraryが異常終了した場合
データベースで実行中の処理はロールバックされます。
- DBMSが異常終了した場合
データベースで実行中の処理は,DBMSの制御に従って処理されます。
トラブルへの対応後,必要に応じてデータベースに再接続してください。
また,データベースアクセス,DABroker LibraryまたはJDBCドライバでエラーが発生した場合,例外としてSQLExceptionがスローされます。このSQLExceptionオブジェクトのreasonには,次の項目が設定されています。トラブルへの対処に利用してください。
- JDBCドライバのメッセージ
- エラーを検知したクラス名称とメソッド名称
- DABroker Libraryからのメッセージ(メッセージがある場合)
なお,次のエラーが発生した場合は,SQLExceptionはスローされません。
- Driver.connectionメソッドでデータベースに接続できない場合
- URL指定でnullが返却される場合
DABroker Libraryで対象にしていないURLが指定された場合などが該当します。
この場合は,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を実行したときにも発生します。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.