不要になった差分ログの破棄や、最新の差分ログの複写など、差分ログを操作したい場合があります。
ここでは、以下の場合での差分ログの操作方法について説明します。
全複写を行った場合の差分ログの操作
最新の差分ログを複写先データベースに複写する場合の操作
これらの操作は、以下の差分ログの操作機能を利用して実現されます。
差分ログの追出し
差分ログの破棄
差分ログの追出しとは、通常は自動的に行われるトランザクションログファイルまたはトランザクションログデータベースから差分ログファイルへの差分ログの転送処理(振分け)に対する機能であり、“差分ログの追出しコマンド”で行います。
“差分ログの追出しコマンド”は、Symfoware抽出レプリケーションの場合とOracle抽出レプリケーションの場合とでは、仕様が異なります。
Symfoware抽出レプリケーションの場合
本コマンドは、RDBシステム単位に実行します。
本コマンドは、トランザクションログファイルから差分ログファイルへの差分ログ転送処理に対しコマンド同期をとります。
(本コマンドは、本コマンドを実行した時点で完了しているトランザクションの差分ログが、トランザクションログファイルから差分ログファイルに転送完了されるのを待ちます)
Oracle抽出レプリケーションの場合
本コマンドは、Oracleシステム単位に実行します。
本コマンドは、トランザクションログデータベースから完了しているトランザクションの差分ログを差分ログファイルに強制的に追い出します。
差分ログの追出しは、以下のような場合に使用します。なお、使用する際は、複写元データベースを更新するアプリケーションを事前に停止することを推奨します。
日中オンライン業務と夜間バッチ業務との切替え時に、複写元データベースと複写先データベースの同期を保証したい
全複写によってレプリケーションシステムを復旧する前に、不要になった差分ログを差分ログファイルから破棄したい
差分ログの破棄とは、差分ログファイル中の差分ログを削除する機能です。“差分ログの破棄コマンド”で行います。
ただし、Oracle抽出レプリケーションにおける差分ログの破棄コマンドでは、以下に格納されている差分ログを破棄することはできません。
トランザクションログデータベース内の差分ログ
抽出データ格納ファイル内の差分ログ
この場合は、以下の方法で差分ログを破棄します。
差分ログの格納場所 | 差分ログの破棄の方法 |
---|---|
トランザクションログデータベース | “差分ログの追出しコマンド”を実行し、差分ログを差分ログファイルに移動させてから、“差分ログの破棄コマンド”を実行します。 |
抽出データ格納ファイル | “業務確定コマンド”を実行し、抽出データ格納ファイルを削除します。業務確定コマンドについては、“6.32 lxrpocmtコマンド”を参照してください。 |
Windows版Linkexpress Replication optionでは、差分ログの破棄コマンドで、以下に格納されている差分ログを破棄することはできません。
トランザクションログファイル内の差分ログ
抽出データ格納ファイル内の差分ログ
この場合は、以下の方法で差分ログを破棄します。
差分ログの格納場所 | 差分ログの破棄の方法 |
---|---|
トランザクションログファイル | “差分ログの追出しコマンド”を実行し、差分ログを差分ログファイルに移動させてから、“差分ログの破棄コマンド”を実行します。 |
抽出データ格納ファイル | “業務確定コマンド”を実行し、抽出データ格納ファイルを削除します。業務確定コマンドについては、“6.15 lxcmtdbコマンド”を参照してください。 |
差分ログを取得した状態で全複写を行った場合、トランザクションログファイルまたはトランザクションログデータベースと差分ログファイルに取得済みの差分ログは不要になります。この場合は、“差分ログの追出しコマンド”と“差分ログの破棄コマンド”を実行して、不要になった差分ログを削除する必要があります。
説明1
全複写を行った時点で、複写先データベースの内容は最新になるため、すでに取得済みの差分ログは不要になります。
以下の図は、差分ログを取得した状態で、全複写を実施した場合に、トランザクションログファイル(トランザクションログデータベース)と差分ログファイル内、抽出データ格納ファイルに不要になった差分ログが存在している状態を表しています。
説明2
不要になった差分ログを“差分ログの追出しコマンド”と“差分ログの破棄コマンド”により、削除します。
以下の図は“差分ログの追出しコマンド”と“差分ログの破棄コマンド”を実行することで、トランザクションログファイル(トランザクションログデータベース)と差分ログファイル内の不要な差分ログを破棄する状態を表しています。
トランザクションログファイルまたはトランザクションログデータベースから差分ログファイルへの差分ログの振り分けは、トランザクションと同期して行われません。このため、一括差分複写時に最新の差分データが複写されるとは限りません。
最新の差分ログを複写する場合には、一括差分複写の前に、“差分ログの追出しコマンド”により、トランザクションログファイルまたはトランザクションログデータベース中の差分ログを差分ログファイルに追い出しておく必要があります。
説明1
下図では、1、2、3の順番で発生した3つの差分ログのうち2つの差分ログが4、5の順番で差分ログファイルに振り分けられています。この状態で、6の一括差分複写を行うと2つの差分ログしか複写されません。
残りの1つの差分ログは、次回の一括差分複写時に複写されます。
説明2
下図では、6で差分ログの追出しコマンドにより、トランザクションログファイルまたはトランザクションログデータベースの差分ログを差分ログファイルに追い出しています。この状態で、7の一括差分複写を行うことによって、すべての差分ログを複写することができます。