2.3.7 ヒューリスティック発生時の処置
ノード間で通信障害が起こって,トランザクションブランチ間で連絡できなくなった場合,各ノードでコマンドを実行して同期点を取得する必要があります。各ノードで同期点を取得すると,グローバルトランザクションの中で,あるトランザクションブランチがコミット,あるトランザクションブランチがロールバックとなることがあります。このように,ノードごとに同期点を取得することをヒューリスティック決定といいます。ヒューリスティック決定の状態のときは,UAPでグローバルトランザクションの同期点を取得しようとすると,関数がエラーリターンします。ヒューリスティック決定が原因で,関数がエラーリターンする値を次に示します。
-
ヒューリスティック決定の結果が,グローバルトランザクションの同期点の結果と一致しなかった場合
DCTRNER_HEURISTIC(00903)
-
障害のため,ヒューリスティックに完了したトランザクションブランチの同期点の結果が判明しない場合
DCTRNER_HAZARD(00904)
このリターン値が戻る原因になったUAPやリソースマネジャ,およびグローバルトランザクションの同期点の結果は,メッセージログファイルの内容を参照して確認してください。