XAリソースサービスを使用するには,次に示す機能および製品の使用が前提です。
XAリソースサービスは,TP1/Client/JまたはClient .NETからのトランザクション要求種別に従って,トランザクションの管理を開始したり終了したりします。また,TP1/Client/JまたはClient .NETから渡されるXAリソースサービスで連携するアプリケーションサーバのXID(トランザクション識別子)とOpenTP1が管理しているXIDとを対応づけてトランザクション情報を共用メモリ上で管理します。トランザクション情報は,必要に応じてXARファイルに記録します。トランザクション情報の管理を表5-2および表5-3に,XAリソースサービスの運用を図5-7に示します。
表5-2 トランザクション情報の管理(アプリケーションサーバ連携)
トランザクション 要求種別 | トランザクション情報の管理 | トランザクションの状態変更 (正常ケース) | ||
---|---|---|---|---|
開始 | 終了 | ファイルのI/O | ||
Start() | ○ | - | ○ | なし → Active |
Call() | - | - | - | 変化しない |
End() | - | - | - | Active → Idle |
Prepare() | - | - | - | Idle → Prepared |
○ | - | Idle → なし※1 | ||
Commit() | - | ○ | - | Prepared → なし※2 |
Idle → なし※3 | ||||
Rollback() | - | ○ | - | Prepared → なし※2 |
Idle → なし※3 | ||||
Recover() | - | - | - | 変化しない |
Forget() | - | ○ | - | Heuristically Completed → なし |
表5-3 トランザクション情報の管理(MSDTC連携)
トランザクション 要求種別 | トランザクション情報の管理 | トランザクションの状態変更 (正常ケース) | ||
---|---|---|---|---|
開始 | 終了 | ファイルのI/O | ||
Call() | ○ | - | - | なし → Active※1 |
- | - | - | 変化しない | |
Prepare() | - | - | ○ | Active → Idle → Prepared |
○ | ○ | Active → Idle → なし※2 | ||
Commit() | - | ○ | - | Prepared → なし※3 |
Active → Idle → なし※4 | ||||
Rollback() | - | ○ | - | Prepared → なし※3 |
Active → Idle → なし※4 | ||||
Recover() | - | - | - | 変化しない |
Forget() | - | ○ | - | Heuristically Completed → なし |
図5-7 XAリソースサービスの運用
XAリソースサービスは,必要に応じてトランザクション情報をXARファイルに格納します。
XARファイルは,XAリソースサービスの正常開始処理で初期化されます。
また,次の状態ではXAリソースサービスはトランザクション情報を管理できません。
XAリソースサービスは,オンライン用XARファイルとバックアップ用XARファイルの両方に障害が発生した場合に閉塞します。閉塞を解除するには,[TP1/LiNK XAリソースサービス管理]ダイアログボックスの[サービス閉塞解除(E)]ボタンをクリックしてください。詳細については,「5.4.6(4) XARファイルに障害が発生した場合の運用」を参照してください。
XAリソースサービスが管理するトランザクションの状態を表示するには,[TP1/LiNK XAリソースサービス管理]ダイアログボックスを開いて[最新情報に更新(L)]ボタンをクリックしてください。未決着のトランザクションを決着させるには,[コミット(M)],[ロールバック(R)],または[強制終了(F)]ボタンをクリックしてください。詳細については,「6.4.5 XAリソースサービスの管理」を参照してください。
XAリソースサービスを使用するかどうかは,[システム環境設定]ウィンドウの[XAリソースサービス環境設定]ダイアログボックスの[XAリソースサービスを使用する(X)]チェックボックスで指定します。チェックボックスをオンにした場合,OpenTP1の起動時にXAリソースサービスが開始されます。詳細については,「3.1.6 XAリソースサービス環境の設定」を参照してください。
XAリソースサービスを開始すると,XARファイルは初期化されます。XAリソースサービスの開始に失敗した場合,OpenTP1の起動も失敗します。
XAリソースサービスを再開始するにはOpenTP1を再開始します。前回OpenTP1を正常開始したときのXAリソースサービスの開始状態によって,XAリソースサービスを再開始するかどうかが決定します。
前回のOpenTP1の正常開始時にXAリソースサービスを開始していれば,XAリソースサービスを再開始します。XAリソースサービスを開始していなければ,XAリソースサービスを再開始しません。
XAリソースサービスを再開始すると,XARファイルは初期化されます。XAリソースサービスの再開始に失敗した場合,OpenTP1の再開始も失敗します。
OpenTP1再開始時に,[XAリソースサービス環境設定]ダイアログボックスの次の項目の設定を変更できます。
OpenTP1の再開始時に[オンライン用XARファイルを作成するフォルダ名(O)]または[バックアップ用XARファイルを作成するフォルダ名(B)]の値を変更するのはXARファイルに障害が発生した場合だけです。それ以外の場合に,OpenTP1の再開始時に[オンライン用XARファイルを作成するフォルダ名(O)]または[バックアップ用XARファイルを作成するフォルダ名(B)]の値を変更すると,トランザクションブランチを回復できなくなるので注意してください。XARファイルに障害が発生したときのトランザクションブランチの回復方法については,「5.4.6(4) XARファイルに障害が発生した場合の運用」を参照してください。
XAリソースサービスを再開始すると,XARファイルを使用して前回のトランザクションブランチの状態に戻す処理(トランザクションブランチの回復処理)をします。
バックアップ用XARファイルが使用されている場合,バックアップ用XARファイルからトランザクションブランチを回復します。バックアップ用XARファイルが使用されていない場合,オンライン用XARファイルからトランザクションブランチを回復します。
トランザクションブランチの回復処理では,XARファイルの各レコードに記録されている前回のトランザクション情報を調査します。1相目の状態(Prepared)のまま決着が行われていないトランザクションブランチの場合,再びPrepared状態に戻します。
XARファイルにはトランザクションブランチのXID情報が含まれているため,再びアプリケーションサーバからのトランザクション決着指示を受け付けられるようになります。
Heuristically completed状態のトランザクションブランチの場合,再びHeuristically completed状態に戻し,ヒューリスティックを完了させます。Prepared状態になる前(Active,Idle)のトランザクションブランチの場合,すべてロールバックします。これらのトランザクションブランチのXID情報は削除されるため,アプリケーションサーバからトランザクションブランチの決着要求が来てもコミット決着できません。
また,トランザクション決着済み(コミットまたはロールバック)のトランザクションブランチの場合,トランザクションブランチの回復処理が行われてもトランザクションの決着結果は変わりません。
トランザクションの状態ごとのトランザクションブランチの回復処理を次の表に示します。
表5-4 OpenTP1再開始時のトランザクションブランチ回復処理
トランザクション状態 | 処置 | XID情報 | |
---|---|---|---|
Active | ロールバック | 削除 | |
Idle | ロールバック | 削除 | |
Prepared | OpenTP1のPJ出力前 | トランザクション決着待ち | 残す |
OpenTP1のPJ出力後 | コミット済み | 削除 | |
Rollback only | ロールバック | 削除 | |
Heuristically completed | ヒューリスティック完了 | 残す |
XAリソースサービスは,OpenTP1の終了時に終了します。すべてのアプリケーションサーバからのトランザクションブランチが決着していないとOpenTP1を終了できません。
決着していないトランザクションブランチがある場合,トランザクションブランチの決着を待ちます。OpenTP1の強制停止を実行した場合,トランザクションブランチの決着を待たないで強制的にOpenTP1が終了します。
XAリソースサービスのオンライン中に,XARファイルのI/O障害が発生した場合,オンライン用XARファイルからバックアップ用XARファイルに自動的にスワップします。この機能をスワップ機能といいます。この機能を使用すると,オンライン用XARファイルに障害が発生しても,XAリソースサービスのオンラインを続行できます。
XARファイルのI/O障害発生時にXAリソースサービスのオンラインを再開始する方法は,障害がどのファイルで,またどの時点で発生するかによって異なります。障害発生時点ごとの運用方法を次に示します。
1.および2.の方法は,OpenTP1を停止させることなく,障害が発生したXARファイルを新しいXARファイルに入れ替えます。これらの方法は,共用メモリから障害発生前のトランザクションブランチを回復できます。
1.の方法は,バックアップ用XARファイルに障害が発生する前に対策を実施するので,より確実にXAリソースサービスを運用できます。
3.の方法は,OpenTP1が停止しても,バックアップ用XARファイルの情報から障害発生前のトランザクションブランチを回復できます。
4.の方法はOpenTP1が停止し,さらにオンライン用およびバックアップ用の両方のXARファイルに障害が発生しているため,新しいXARファイルに入れ替えても,障害発生前のトランザクションブランチを回復できません。
それぞれの方法の詳細について説明します。
オンライン用XARファイルに障害が発生すると,XAリソースサービスはバックアップ用XARファイルにスワップして運用を続行します。この時点でオンライン用XARファイルを新しいファイルに入れ替えると,OpenTP1を停止させることなく,障害発生前のトランザクションブランチを回復できます。
XAリソースサービスがバックアップ用XARファイルを使用して運用中の場合,オンライン用XARファイルを入れ替えるには,[TP1/LiNK XAリソースサービス管理]ダイアログボックスの[サービス閉塞(H)]ボタンをクリックしてXAリソースサービスを強制的に閉塞します。XAリソースサービスが閉塞しても,ほかのOpenTP1サービスは実行できます。オンライン用XARファイルに障害が発生した時点での,オンライン用XARファイルの入れ替え方法を次に示します。
オンライン用XARファイルに障害が発生した場合のXARファイルの入れ替え方法を次の図に示します。
図5-8 オンライン用XARファイルに障害が発生した場合のXARファイルの入れ替え方法
オンライン用XARファイルに障害が発生し,バックアップ用XARファイルにスワップしてXAリソースサービスの運用を続行している間に,バックアップ用XARファイルにも障害が発生した場合,XAリソースサービスは閉塞状態になります。XAリソースサービスが閉塞状態になると,XAリソースサービスで連携するアプリケーションサーバからのトランザクション指示に対して,すべてXAER_RMERRを返します。ただし,障害が局所化されているため,OpenTP1は停止しないで,XAリソースサービス以外のOpenTP1サービスは実行できます。また,XARファイルを新しいファイルに入れ替えれば,XAリソースサービスのトランザクションブランチを回復できます。
オンライン用XARファイルとバックアップ用XARファイルの両方に障害が発生してXAリソースサービスが閉塞状態になった場合の,XARファイルの入れ替え方法を次に示します。
バックアップ用XARファイルで障害が発生した場合のXARファイルの入れ替え方法を次の図に示します。
図5-9 バックアップ用XARファイル障害発生時のXARファイルの入れ替え方法
オンライン用XARファイルに障害が発生し,さらにOpenTP1が停止(正常停止/異常停止)すると,XAリソースサービスは閉塞します。XAリソースサービスを再開始するには,新しいXARファイルを作成してからOpenTP1を再開始します。
オンライン用XARファイルに障害が発生し,さらにOpenTP1が停止した場合のXARファイルの入れ替え方法を次に示します。
オンライン用XARファイルに障害が発生し,さらにOpenTP1が停止した場合のXARファイルの入れ替え方法を次の図に示します。
図5-10 オンライン用XARファイル障害発生時およびOpenTP1停止時のXARファイルの入れ替え方法
オンライン用およびバックアップ用の両方のXARファイルに障害が発生し,さらにOpenTP1が停止(正常停止/異常停止)すると,XAリソースサービスは閉塞します。この場合,障害発生前のトランザクションブランチは回復できません。XAリソースサービスを再開始するには,新しいXARファイルを作成してからOpenTP1を強制正常開始します。
オンライン用およびバックアップ用の両方のXARファイルに障害が発生し,OpenTP1が停止した場合のXARファイルの入れ替え方法を次に示します。
オンライン用およびバックアップ用の両方のXARファイルに障害が発生し,OpenTP1が停止した場合のXARファイルの入れ替え方法を次の図に示します。
図5-11 オンライン用およびバックアップ用の両方のXARファイルに障害が発生し,OpenTP1が停止した場合のXARファイルの入れ替え方法