11.8.2 DBアクセス障害
DBアクセス障害の原因と,それぞれの障害が発生した場合の処理を説明します。
-
メッセージ書き込み時の障害
メッセージ書き込み時に障害が発生した場合,エラーメッセージを出力して,該当するトランザクションをロールバックします。
-
メッセージ読み出し時の障害(AP間通信)
メッセージ読み出し時に障害が発生した場合,エラーメッセージを出力して,該当するDBキューをスケジュール停止状態にします。
-
メッセージ読み出し時の障害(ユーザキューアクセス)
メッセージ読み出し時に障害が発生した場合,該当するDBキューはスケジュール停止状態にしません。APIまたはコマンドで,該当するDBキューを読み出し停止とするか,またはメッセージを読み出すトランザクションを起動させないなどの操作をしてください。
メッセージ読み出し時の障害の例を次に示します。
-
API実行中(メッセージ読み出し,または連鎖モードのコミット)のDB障害
エラーメッセージを出力して,関数をエラーリターンします。エラートランザクション(ERRTRNR)は起動しません。
-
UAP終了時の同期点決着でのDB障害
エラーメッセージを出力して,トランザクションをロールバックします。ロールバック後にエラートランザクション(ERRTRNR)を起動します。
-
-
ほかのDBの障害
ほかのDBで障害が発生した場合,同じトランザクションでDBキューにアクセスしているときは,該当するDBキューに対する書き込み,および読み出しをロールバックします。エラートランザクション(ERRTRNR)は,障害が発生したほかのDBで起動されるため,該当するDBでは起動しません。
AP間通信の場合は,自動読み出し停止機能を使用して自動で読み出しを停止するかどうかを選択できます。ユーザキューアクセスの場合は,APで読み出し停止を制御するため,自動で読み出し停止にはなりません。
-
xa_start関数エラー
読み出し処理をするトランザクションが,複数のリソースマネジャに対してxa_start関数の呼び出しに失敗した場合,読み出し対象のDBキューがあるリソースマネジャに対してxa_start関数の呼び出し結果が成功したかどうかを確認します。
読み出し対象のDBキューがあるリソースマネジャに対するxa_start関数の呼び出しが失敗していた場合は,サービス関数を起動しないでトランザクションを終了します。読み出し対象のDBキューがあるリソースマネジャに対するxa_start関数の呼び出しが成功していた場合は,トランザクション処理を続行します。MNは,リソースマネジャ未接続の情報を付加して起動します。