Hitachi

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


3.15.3 XAリソースサービスの開始と終了

〈この項の構成〉

(1) XAリソースサービスの開始

XAリソースサービスを開始すると,XARファイルは初期化されます。XAリソースサービスの開始に失敗した場合,OpenTP1の起動も失敗します。

XAリソースサービスを使用するための定義については,「3.15.1(2) 前提となる定義」を参照してください。

(2) XAリソースサービスの再開始

XAリソースサービスを再開始するにはOpenTP1を再開始します。前回OpenTP1を正常開始したときのXAリソースサービスの開始状態によって,XAリソースサービスを再開始するかどうかが決定します。前回のOpenTP1の正常開始時にXAリソースサービスを開始していれば,XAリソースサービスを再開始します。XAリソースサービスを開始していなければ,XAリソースサービスを再開始しません。

XAリソースサービスを再開始すると,XARファイルは初期化されます。

XAリソースサービスの再開始に失敗した場合,OpenTP1の再開始も失敗します。

OpenTP1再開始時に,次の定義オペランドおよび定義コマンドを変更できます。

OpenTP1の再開始時に定義コマンドxarfileの値を変更するのはXARファイルに障害が発生した場合だけです。それ以外の場合,OpenTP1の再開始時に定義コマンドxarfileを変更すると,トランザクションブランチを回復できなくなるので注意してください。XARファイルに障害が発生したときのトランザクションブランチの回復方法については,「3.15.4 XARファイルに障害が発生した場合の運用」を参照してください。

XAリソースサービスを再開始すると,XARファイルを使用して前回のトランザクションブランチの状態に戻す処理(トランザクションブランチの回復処理)をします。バックアップ用XARファイルが使用されている場合,バックアップ用XARファイルからトランザクションブランチを回復します。バックアップ用XARファイルが使用されていない場合,オンライン用XARファイルからトランザクションブランチを回復します。

トランザクションブランチの回復処理では,XARファイルの各レコードに記録されている前回のトランザクション情報を調査します。1相目の状態(Prepared)のまま決着が行われていないトランザクションブランチの場合,再びPrepared状態に戻します。XARファイルにはトランザクションブランチのXID情報が含まれているため,再びXAリソースサービスで連携するアプリケーションサーバからのトランザクション決着指示を受け付けられるようになります。

Heuristically completed状態のトランザクションブランチの場合,再びHeuristically completed状態に戻し,ヒューリスティックを完了させます。

Prepared状態になる前(Active,Idle)のトランザクションブランチの場合,すべてロールバックします。これらのトランザクションブランチのXID情報は削除されるため,XAリソースサービスで連携するアプリケーションサーバからトランザクションブランチの決着要求が来てもコミット決着できません。

また,トランザクション決着済み(コミットまたはロールバック)のトランザクションブランチの場合,トランザクションブランチの回復処理が行われてもトランザクションの決着結果は変わりません。

トランザクションの状態ごとのトランザクションブランチの回復処理を次の表に示します。

表3‒34 OpenTP1再開始時のトランザクションブランチ回復処理

トランザクション状態

処置

XID情報

Active

ロールバック

削除

Idle

ロールバック

削除

Prepared

OpenTP1のPJ出力前

トランザクション決着待ち

残す

OpenTP1のPJ出力後

コミット済み

削除

Rollback only

ロールバック

削除

Heuristically completed

ヒューリスティック完了

残す

(3) XAリソースサービスの終了

XAリソースサービスは,OpenTP1の終了時に終了します。すべてのXAリソースサービスで連携するアプリケーションサーバからのトランザクションブランチが決着していないとOpenTP1を終了できません。決着していないトランザクションブランチがある場合,トランザクションブランチの決着を待ちます。OpenTP1の強制停止コマンドを実行した場合,トランザクションブランチの決着を待たないで強制的にOpenTP1が終了します。