Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


11.1.2 プロセスの回復

TP1/EEがプロセスダウンした場合は,ステータスファイルの情報を基にプロセスを回復します。仕掛り中のすべてのトランザクションは,プロセスダウン時点のトランザクションの情報を基に回復します。

プロセスの回復には,ディレード回復とアンディレード回復の2種類の処理があります。プロセスの回復の種類は,トランザクション関連定義のtrn_delayed_allrecoverオペランドで指定できます。

〈この項の構成〉

(1) ディレード回復

ディレード回復は,すべての未決着トランザクションについて,回復スレッドに回復処理要求をします。ただし,回復スレッドのトランザクションの決着処理の完了を待たないでオンラインの開始処理をします。このため,初期化トランザクションの起動以降に,前回のオンライン時のトランザクションが決着することがあります。

(2) アンディレード回復

アンディレード回復は,すべての未決着トランザクションについて,回復スレッドに回復処理要求をします。回復スレッドがすべてのトランザクションの決着処理を完了するのを待ってオンラインの開始処理をします。そのため,初期化トランザクションの起動時には,前回のオンライン時のトランザクションはすべて決着しています。

アンディレード回復は,すべてのトランザクションの決着を待ってからオンラインの開始処理をします。回復処理中のトランザクションの件数は,一定時間ごとに表示されます。回復処理中にほかのプロセスとの通信障害またはリソースマネジャの障害が発生すると,回復処理中のトランザクションの決着に時間が掛かることがあります。トランザクションの回復処理を続行するかどうかはユーザが決定します。回復処理を中断させる場合は,eesvstopコマンドを実行してTP1/EEを強制停止してください。この場合は,次回のTP1/EE起動時にプロセスを回復するかどうかを決定する必要があります。

アンディレード回復を実行する場合,トランザクション関連定義のtrn_undelayed_recover_threadオペランドにYを指定すると,回復スレッドと処理スレッドの両方を使用してプロセスを回復させることができます。回復スレッドだけではなく処理スレッドも使用することによって,アンディレード回復処理に掛かる時間を短縮できます。

(3) プロセスの回復中に障害が発生した場合

プロセスの回復中に障害が発生すると,再度プロセスダウンするため,プロセスダウンとプロセスの回復が繰り返し実行されるおそれがあります。そのため,TP1/EE内で単位時間内に3回障害が発生した場合は,プロセスの回復を抑止します。また,UAP内で障害が発生した場合は,トランザクションサービスの閉塞処理をします。この場合,プロセスダウンしたときは,閉塞状態を引き継いで,障害の発生したサービスの異常終了を防ぎます。

(4) 1相最適化の実行中にプロセスダウンしたときのプロセスの回復

トランザクションが1相最適化を実行しているときにプロセスダウンが発生すると,プロセスの回復処理では,ロールバックに決着したメッセージを出力します。しかし,タイミングによってはコミットしている場合があります。