XDBは,XTCと連携して,実行系のデータベースの更新内容を待機系のデータベースに逐次反映しています。これによって,系の切り替えに掛かる時間を短縮します。
実行系のデータベースが更新された場合,実行系のXDBは更新ログを生成します。この更新ログが待機系に転送され,更新ログを入力情報にして待機系のXDBがデータベースを更新します。
待機系のデータベースへの追い付き反映処理の概要を次の図に示します。
図2-12 待機系のデータベースへの追い付き反映処理の概要
各処理について次に説明します。
TP1/EEからコミット処理の命令を受け付けると,XDBは割り当てられた領域に更新ログを格納し,更新バッファの内容をデータベースに反映します。
更新ログは,トランザクションをコミットする(データベースを更新する)ごとに生成されます。更新ログはファイルに保存されません。TP1/EEが管理するヒープ領域で生成されて,待機系への転送が完了したあとに消滅します。
更新ログは,生成されたときに,コミット通番が付与されます。待機系では,このコミット通番の順番に従って更新ログをデータベースに反映します。
生成された更新ログは,XTCの機能によって待機系に逐次転送されます。詳細については,マニュアル「TP1/EE/Extended Transaction Controller 使用の手引」の「CL連携による系切り替え機能」を参照してください。
転送された更新ログを入力情報にして待機系のデータベースを更新します。このとき,実行系で付与されたコミット通番の順番に従ってデータベースを更新します。
なお,インデクスの更新データは更新ログに含まれません。更新ログには,表の更新データだけが格納されます。このため,待機系では,インデクスの定義情報と表の更新データを基に,インデクスデータを更新します。インデクスの更新データを更新ログに含めないのは,次に示す性能上の理由によります。
また,待機系のデータベースの更新処理中にエラーが発生した場合,待機系がプロセスダウンします。実行系が待機系のプロセスダウンを検知した時点で,該当する待機系をCLサーバから切り離します。
マシンの性能および実行環境の違いによって,実行系で発生しないエラーが待機系で発生し,追い付き反映処理が失敗することがあります。例えば,次に示すようなエラーが発生することがあります。この場合,待機系がプロセスダウンします。