5.1.1 外部サーバで発生する障害

外部サーバで障害が発生したときのHiRDB管理者の処置について,次の表に示します。

表5-1 外部サーバで障害が発生したときのHiRDB管理者の処置

外部サーバの障害HiRDBの処理HiRDB管理者の処置
外部サーバの異常終了HiRDBは,外部サーバの異常終了を通信障害として検知します。そして,外部サーバに対するSQLの実行をエラーにします。また,対象の SQLを発行したトランザクションをロールバックし,UAPにエラーリターンします外部サーバの障害要因を取り除いたあと,外部サーバを再起動,およびUAPを再実行してください。
HiRDBとの通信障害HiRDBは外部サーバに対するSQLの実行をエラーにします。また,対象のSQLを発行したトランザクションをロールバックし,UAPにエラーリターンします通信障害の要因を取り除いたあと,UAPを再実行してください。
外部サーバの無応答外部サーバに使用しているDBMSで設定したタイムアウト指定値に従い,各DBMSクライアントが処理を中断し,接続を切断します。そのあと,HiRDBは対象のSQLを発行したトランザクションをロールバックし,UAPにエラーリターンします外部サーバが無応答となった要因を取り除いたあと, UAPを再実行してください。
コミット文実行中の障害HiRDB,障害が発生した外部サーバ,障害が発生していない外部サーバで次のように処理されます。
HiRDB
直前の同期点の状態に戻ります。
障害が発生した外部サーバ
外部サーバ側での処理結果に依存します。
障害が発生していない外部サーバ
コミット処理を行います。
 
なお,発生した障害が通信障害の場合,HiRDBはUAPにエラーリターンします。
外部サーバの障害要因を取り除いたあと, UAPを再実行してください。
外部サーバの暗黙的ロールバック現在のトランザクションをロールバックし,UAPに対してエラーリターンします。
この障害は,外部サーバがHiRDBの場合に発生します。
出力されたHiRDBのエラーメッセージに従って対策を行ってください。
分散デッドロック分散デッドロックとは,複数の外部サーバにわたって発生したデッドロックです。
HiRDBは外部サーバに対する問い合わせのタイムアウトとしてこれを検知します。そのあと,現在のトランザクションをロールバックし,UAPに対してエラーリターンします。
ただし,分散デッドロックは,単一DBMS内で発生したデッドロックと異なり,タイムアウトの要因が分散デッドロックによるものかどうかを知ることはできません。
タイムアウトの要因を取り除いたあと,UAPを再実行してください。
注※
外部サーバ上のトランザクションは,外部サーバに使用しているDBMSの仕様に従います。詳細は,各DBMSのマニュアルを参照してください。