技術ブログ
目次
Oracle ACE Proの渡部です。 Oracleをソースとした論理レプリケーション(ロジカルレプリケーション)を構成する場合、 Oracleに適用された変更を得る必要があります。この「適用された変更を得る」機能を、Change Data Capture(CDC)と呼ぶ場合があります。
しかし、OracleにおけるCDCの実装方式は製品毎に異なります。本ブログでは、これを整理することを試みます。
ロジカルレプリケーションとはデータベース間のデータ複製技術の1つです。 論理レプリケーションと呼ばれることもあります。
データを複製する仕組みを概念的にはシンプルで、 ソースDBで実行された更新SQLと「意味的に等価な」更新SQLをターゲットDBで実行することで、データを複製(同期)します。
ただし、ターゲットDBで実行されたすべてのSQLがソースDBで実行されるわけではありません。未対応のDDLなどソースDBで実行されない=複製の対象にならないものもあります。 また、ターゲットDBで実行されるSQLは、ソースDBで実行されたSQLと完全に同じではありません。これについては後述します。
ロジカルレプリケーションはデータを連携するにはとても役立ちますが、実際に使用するには多くの考慮事項が存在する、厄介な部分もある技術です。
ロジカルレプリケーションのしくみを示したのが以下の図です。
以下の処理が実行されることで、ロジカルレプリケーションが実現されます。
上記における、1. 2. をChange Data Capture(CDC)と呼ぶことが多いです。
ただし、CDCという用語の意味は厳格に統一されていない点に注意してください。現場的には、「ここでの"CDC"はどういう意味で使われているのか?」を都度考える必要があります。
OracleにおけるCDCの実装方式を分類する方法について、業界で合意されたものはありません。
ここでは以下の5つで分類を試みます。以下の用語は私が独自に定義したものです。
更新処理が記録されたREDOログファイルを、ロジカルレプリケーションソフトウェアが読み出し、解析することで更新SQLを得る方法です。
SharePlexはこのCDC方式を使用しています。また、従来のGoldenGateもこのCDC方式を使用していました(クラシック・キャプチャ)。
以下の特徴があります。
Oracleが提供するLogMiner機能を使って、更新SQLを得る方法です。
CData SyncはこのCDC方式を使用しています(後述するフラッシュバッククエリも使用可能)。また、従来のQlik Replicate/Attuniy ReplicateもこのCDC方式を使用していました。
以下の特徴があります。
Oracleが提供するログマイニング サーバー機能を使って、更新SQLに相当するLCRを得る方法です。
GoldenGateはこのCDC方式を使用しています。(GoldenGate以外のロジカルレプリケーションソフトウェアでこのCDC方式を使用しているものは知りません)
以下の特徴があります。
Oracleが提供するOCILobRead APIを使ってREDOログファイルを取得し、取得したREDOログファイルを読み出し、解析することで更新SQLを得る方法です。
最近のQlik ReplicateはこのCDC方式を使用しています(Replicate Log Reader / Binary Reader)。
以下の特徴があります。
Oracleが提供するフラッシュバッククエリ機能を使って、過去のデータを得る方法です。
CData SyncはこのCDC方式を使用しています(LogMiner方式も使用可能)。
ロジカルレプリケーションは非常に複雑な技術です。お客様に最適なロジカルレプリケーション製品をご案内できるよう、コーソルでは複数のロジカルレプリケーション製品を取り扱っています。
これらすべての製品について、製品を熟知したエンジニアが設計・導入作業を担います。 Oracleのロジカルレプリケーションをご検討の際はぜひコーソルにお声がけください。
ロジカルレプリケーションの動作の仕組みから見るOracleレプリケーション3製品のイチオシポイント
Oracle GoldenGateのライセンス費用試算とSE2環境におけるコスト削減策
Oracle 19cへの移行/アップグレードにSharePlexをお勧めする理由
Oracle Databaseレプリケーションとサポート状況/対応製品
ロジカルレプリケーションを用いてDB移行に伴うダウンタイムを最小化する