分散トランザクション処理機能 OpenTP1 解説

[目次][用語][索引][前へ][次へ]

5.3.1 OpenTP1システム障害の対策

OpenTP1システムに障害が発生した場合,前回のオンラインの状態を引き継いで,履歴情報を基にOpenTP1システムを障害発生直前の状態に回復できます。この開始モードを再開始リランといいます。OpenTP1は,再開始(リラン)に備えて,ジャーナルファイルに履歴情報を取得しています。

<この項の構成>
(1) 全面回復による再開始(リラン)の手順
(2) OpenTP1システム終了中にシステム停止した場合の全面回復処理時のユーザサーバの状態

(1) 全面回復による再開始(リラン)の手順

OpenTP1は,全面回復によって再開始(リラン)します。再開始(リラン)は,システム回復処理,サービス回復処理,トランザクション回復処理の順で実行されます。

  1. システム回復処理
    ステータスファイルにはシステム制御情報として,システムサービスやUAPの構成情報,システムファイルの情報などが格納されています。まず,システム制御情報を基に,トランザクションの同期点処理と関係のない,システムの状態を回復します。OpenTP1は,システム制御情報を基に,回復に使用するチェックポイントダンプファイルやシステムジャーナルファイルを決定します。
  2. サービス回復処理
    システム制御情報を基に,システムの状態が回復すると,システムサービスの回復を開始します。システムサービスは,チェックポイントダンプファイルとシステムジャーナルファイルに格納したデータを基に回復します。回復は最新世代のチェックポイントダンプと,最新世代のチェックポイントダンプ取得以降に取得したすべての回復用のジャーナルが必要です。最新世代のチェックポイントダンプが使用できないときには,一世代前のチェックポイントダンプを使用して回復を試みます。この場合,一世代前のチェックポイントダンプ取得以降に取得したすべてのジャーナルが必要です。なお,有効保証世代は二世代までです。有効保証世代のチェックポイントダンプ以降に取得したジャーナルが保証されます。ここまでの処理で,OpenTP1はオンライン業務を再開できる状態になります。
  3. トランザクション回復処理
    新たなオンライン処理と並行して,システム障害でOpenTP1が停止したときに実行中だった,UAPのトランザクション処理を回復してロールバックまたはコミットします。トランザクションをロールバックするか,コミットするかはトランザクション処理がどこまで進んでいたかで決まります。トランザクション処理が同期点の1相目以前にあった場合には,OpenTP1がグローバルトランザクションをロールバックします。2相目以降にあった場合には,OpenTP1がルートトランザクションブランチでの決定に従ってグローバルトランザクションをロールバック,またはコミットします。システム停止時にトランザクション処理がどこまで進んでいたのかは,OpenTP1がシステムジャーナルファイルの同期点ジャーナルを基に判断します。
    全面回復によって復元されるトランザクションの状態を,次の図に示します。

    図5-5 全面回復処理によって復元されるトランザクション

    [図データ]

(2) OpenTP1システム終了中にシステム停止した場合の全面回復処理時のユーザサーバの状態

dcstopコマンドを入力してOpenTP1システムを終了しているときにシステム停止した場合,終了処理中にユーザサーバのステータス変化を反映しないでdcstopコマンド入力時の状態に戻すか,ステータス変化を反映して障害発生時の状態に戻すかを,ユーザサービス定義およびユーザサービスデフォルト定義で選択できます。ユーザサービス定義のstatus_change_when_termingオペランドにYを指定したユーザサーバは,最終的なステータスの変化を反映して,システム停止時の状態に戻ります。このオペランドにNを指定したときは,最終的なステータスの変化を反映しないで,dcstopコマンド入力時の状態に戻ります。

OpenTP1システム終了中にシステム停止した場合の全面回復処理時のユーザサーバの状態を次の図に示します。

図5-6 システム終了中にシステム停止した場合の全面回復処理時のユーザサーバの状態

[図データ]