株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

OracleロジカルレプリケーションCDC実装方式の分類

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. 更新伝搬用SQLの作成
  3. SQLの抽出(オプション)
  4. SQLの加工/変換(オプション)
  5. SQLの転送
  6. SQLの実行

上記における、1. 2. をChange Data Capture(CDC)と呼ぶことが多いです。

ただし、CDCという用語の意味は厳格に統一されていない点に注意してください。現場的には、「ここでの"CDC"はどういう意味で使われているのか?」を都度考える必要があります。

CDC実装方式の分類

OracleにおけるCDCの実装方式を分類する方法について、業界で合意されたものはありません。

ここでは以下の5つで分類を試みます。以下の用語は私が独自に定義したものです。

  • a) REDOログファイル直読み
  • b) LogMiner
  • c) GoldenGate統合キャプチャモード
  • d) バイナリリーダー
  • x) フラッシュバッククエリ

a) REDOログファイル直読み

更新処理が記録されたREDOログファイルを、ロジカルレプリケーションソフトウェアが読み出し、解析することで更新SQLを得る方法です。

SharePlexはこのCDC方式を使用しています。また、従来のGoldenGateもこのCDC方式を使用していました(クラシック・キャプチャ)。

以下の特徴があります。

  • Oracleインスタンス外部で動作するため、Oracleインスタンスの動作に影響を与えにくくできます。
  • REDOログを解析する仕組みを、ロジカルレプリケーションソフトウェアに実装する必要があります。これは一般に複雑な処理になりがちですが、逆に実装できさえすれば、制約はなくなります。
  • REDOログを解析する仕組みを適切に実装できれば、CDC動作の負荷を低くできる可能性があります。

b) LogMiner

Oracleが提供するLogMiner機能を使って、更新SQLを得る方法です。

CData SyncはこのCDC方式を使用しています(後述するフラッシュバッククエリも使用可能)。また、従来のQlik Replicate/Attuniy ReplicateもこのCDC方式を使用していました。

以下の特徴があります。

  • CDC性能は、LogMinerの性能に依存します。一般に性能が出しにくいです。
  • Oracleが提供する機能を使うため、Oracleインスタンスの動作へ影響を与える可能性があります。

c) GoldenGate統合キャプチャモード

Oracleが提供するログマイニング サーバー機能を使って、更新SQLに相当するLCRを得る方法です。

GoldenGateはこのCDC方式を使用しています。(GoldenGate以外のロジカルレプリケーションソフトウェアでこのCDC方式を使用しているものは知りません)

以下の特徴があります。

  • LogMinerにくらべて、性能に優れると言われています。
  • Oracleが提供する機能を使うため、Oracleインスタンスの動作へ影響を与える可能性があります。

d) バイナリリーダー

Oracleが提供するOCILobRead APIを使ってREDOログファイルを取得し、取得したREDOログファイルを読み出し、解析することで更新SQLを得る方法です。

最近のQlik ReplicateはこのCDC方式を使用しています(Replicate Log Reader / Binary Reader)。

以下の特徴があります。

  • a) REDOログファイル直読み の特徴に準じます。
  • 場合によっては、ソースOracleを導入したホストとロジカルレプリケーションソフトウェアを導入したホストの間のネットワーク帯域の消費が多くなります。また、このネットワーク帯域が細い場合、CDC性能が落ちる可能性があります。

x) フラッシュバッククエリ

Oracleが提供するフラッシュバッククエリ機能を使って、過去のデータを得る方法です。

CData SyncはこのCDC方式を使用しています(LogMiner方式も使用可能)。

製品とCDC実装方式

  • SharePlex for Oracle → a) REDOログファイル直読み
  • Qlik Replicate → b) LogMiner --or-- d) バイナリリーダー
  • Oracle GoldenGate → a) REDOログファイル直読み --or-- c) GoldenGate統合キャプチャモード
  • CData Sync → b) LogMiner --or-- x) フラッシュバッククエリ

[宣伝] データベースのロジカルレプリケーションでお困りの際はコーソルへ!

ロジカルレプリケーションは非常に複雑な技術です。お客様に最適なロジカルレプリケーション製品をご案内できるよう、コーソルでは複数のロジカルレプリケーション製品を取り扱っています。

これらすべての製品について、製品を熟知したエンジニアが設計・導入作業を担います。 Oracleのロジカルレプリケーションをご検討の際はぜひコーソルにお声がけください。

[参考] ロジカルレプリケーション関係ブログ記事

ロジカルレプリケーションの動作の仕組みから見るOracleレプリケーション3製品のイチオシポイント

Oracle GoldenGateのライセンス費用試算とSE2環境におけるコスト削減策

Oracle 19cへの移行/アップグレードにSharePlexをお勧めする理由

Oracle Databaseレプリケーションとサポート状況/対応製品

ロジカルレプリケーションを用いてDB移行に伴うダウンタイムを最小化する

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ