外部サーバで障害が発生したときの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はUAPにエラーリターンします。 | 外部サーバの障害要因を取り除いたあと, UAPを再実行してください。 |
外部サーバの暗黙的ロールバック | 現在のトランザクションをロールバックし,UAPに対してエラーリターンします。 この障害は,外部サーバがHiRDBの場合に発生します。 | 出力されたHiRDBのエラーメッセージに従って対策を行ってください。 |
分散デッドロック | 分散デッドロックとは,複数の外部サーバにわたって発生したデッドロックです。 HiRDBは外部サーバに対する問い合わせのタイムアウトとしてこれを検知します。そのあと,現在のトランザクションをロールバックし,UAPに対してエラーリターンします。 ただし,分散デッドロックは,単一DBMS内で発生したデッドロックと異なり,タイムアウトの要因が分散デッドロックによるものかどうかを知ることはできません。 | タイムアウトの要因を取り除いたあと,UAPを再実行してください。 |