Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 運用と操作


3.3.2 トランザクションの強制決着

trnlsコマンドでトランザクションの状態を表示したときに,トランザクション第1状態,第2状態,および第3状態がREADY(p,n)状態となり,その状態が長く続く場合は,グローバルトランザクションを構成している各トランザクションブランチが,何らかの要因(通信障害など)でトランザクションを決着できない状態になったと考えられます。この場合,OpenTP1がリトライしてトランザクションを決着させます。OpenTP1のリトライを待てない場合は,ユーザが運用コマンドを入力して,該当するトランザクションブランチを強制決着(ヒューリスティック決定)できます。ルートトランザクションブランチがコミットしている場合,trncmtコマンドを実行してトランザクションブランチをコミットします。ルートトランザクションブランチがロールバックしている場合,trnrbkコマンドを実行してトランザクションブランチをロールバックします。ルートトランザクションブランチがコミットしているか,ロールバックしているかは,trnlsコマンドでトランザクションの状態を表示するか,またはlogcatコマンドでメッセージログファイルを参照して確認してください。

同一グローバルトランザクション内でトランザクションブランチが別計算機上に分散している場合でも,運用コマンドは計算機ごとに入力する必要があります。その場合,すべてのトランザクションブランチを同一の方法(コミットするか,ロールバックするか)で決着させてください。

trncmtコマンドを実行すると,trnlsコマンドで表示したトランザクション第1状態はHEURISTIC_COMMIT状態になります。trnrbkコマンドを実行すると,HEURISTIC_ROLLBACK状態になります。その後,trncmtコマンド,またはtrnrbkコマンドによる処理が終了するまでの一時的な経過状態として,HEURISTIC_FORGETTING状態になります。