CData Sync で Oracle マルチテナント環境から CDC を利用する方法



Oracle マルチテナントは、Oracle Database をコンテナデータベース(CDB)として機能させる仕組みです。CDB は複数のプラガブルデータベース(PDB)を統合します。PDB は、スキーマ、スキーマオブジェクト、および非スキーマオブジェクトの移植可能なコレクションです。オンプレミスでもクラウドでも、Oracle マルチテナントを使用すれば、アプリケーションは自己完結型の PDB 内でそのまま実行され、リソース利用率、管理性、セキュリティ全体が向上します。

CDC(変更データキャプチャ)とは、データベース内のデータに加えられた変更を特定・キャプチャし、それらの変更をリアルタイムでダウンストリームのプロセスやシステムに配信するプロセスを指します。

Oracle コンテナデータベース(CDB)内のプラガブルデータベース(PDB)から変更データをキャプチャするには、PDB が開いていることを確認し、CDB が ARCHIVELOG モードで実行されていることを確認し、PDB サービス名を含む PDB エントリを tnsnames.ora ファイルに追加する必要があります(このエントリがまだ存在しない場合)。

Oracle マルチテナントインスタンスでの Oracle CDC サポートにより、CData Sync は CDB レベルで LogMiner とやり取りしながら、PDB レベルでスキーマとテーブルを参照できます。この機能により、Oracle マルチテナント実装で期待される高可用性とスケーラビリティを活用しながら、運用系または トランザクション系の Oracle データベースから分析用データベースやデータウェアハウスへデータをレプリケートできます。

この記事では、Oracle Database の CDC(変更データキャプチャ)をセットアップし、CData Sync でソースとして Oracle マルチテナントインスタンスに、同期先として Snowflake データウェアハウスに接続する方法を説明します。

Oracle をソースとして設定する

最初のステップは、CData Sync で Oracle データベースをソースとして設定することです。

  1. CData Sync にログインし、[Connections]タブに移動します。[+Add Connection]をクリックし、[Sources]を選択して、Oracle を検索して選択します。(Oracle ソースコネクタがまだインストールされていない場合は、「Installed Only」をオフにしてコネクタをダウンロードし、CData Sync が再起動してから続行してください。)
  2. Connection Type、Server、Service Name、User、Password、Port など、Oracle データベースインスタンスの認証情報を入力します。[Save and Test]をクリックします。

Snowflake を同期先として設定する

Oracle 接続をテストして保存した後、同期先(この場合は Snowflake)に接続する必要があります。

  1. [Connections]タブをクリックし、[Destinations]を選択して、Snowflake を選びます。
  2. Warehouse、URL、Auth Scheme、User、Password、Database、Schema などの Snowflake 認証情報を入力し、[Save and Test]をクリックします。

Oracle の CDC(変更データキャプチャ)を設定する

Oracle LogMiner を有効にする

Oracle LogMiner は redo ログの変更を追跡し、Sync がそれらのログを読み取って特定のテーブルへの変更を判断できるようにします。Oracle Flashback との主な違いは、Sync がソーステーブルと直接やり取りしないことです。代わりに、Sync はログから直接読み取るため、ソースデータベースへの影響が少なくなります。

次に、インスタンスがホストされているサービスで特定のコマンドを実行して、Oracle インスタンスを CDC 用に構成する必要があります。Oracle インスタンスが存在する場所(ここでは AWS を示しています)にログインし、クエリを実行できる場所に移動します。

  1. まだ有効になっていない場合は、データベースで Archivelog を有効にします。これにはデータベースの再起動が必要です。
    --ArchiveLog が既に有効かどうかを確認
    SELECT LOG_MODE FROM V$DATABASE
    
    --LOG_MODE が ARCHIVELOG でない場合
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE ARCHIVELOG;
    ALTER DATABASE OPEN;
  2. データベースがバックアップとアーカイブログを24時間保持するようにします(CData では7日間を推奨しています)。
    RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
  3. データベースレベルまたはテーブルレベルで補足ロギングを有効にします。どちらか1つのみ必要です。
    --データベースレベル
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
    
    --テーブルレベル
    ALTER TABLE <schema_name>.<table_name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
  4. ユーザーが LogMiner を表示するための適切な権限を持っていることを確認します。
次に、Sync でジョブを作成し、[Use Change Data Capture]オプションを選択します。

Sync で Oracle マルチテナントデータを Snowflake にレプリケートするジョブを作成する

ソースと同期先を構成したら、レプリケーションジョブを作成する準備が整いました。

  1. [Jobs]タブをクリックし、[+Add Job]をクリックします。
  2. ジョブに名前を付け、ソースとして Oracle 接続を、同期先として Snowflake 接続を選択し、Type として Change Data Capture を選びます。
  3. 最後に、[Add Job]をクリックします。
レプリケーションジョブを作成したら、タスクを選択して Oracle テーブルを同期先にレプリケートできます。[+Add Tasks]をクリックし、ウィザードに従って Snowflake にレプリケートする Oracle テーブルを選択します。

無料トライアルと詳細情報

これで、Oracle マルチテナントデータベースインスタンスの CDC を構成し、CData Sync で Oracle インスタンスをソースとして設定できました。CData Sync の30日間無料トライアルをお試しいただき、CDC を使用して Oracle データをあらゆる一般的なデータベース、データレイク、またはデータウェアハウスにレプリケートしてみてください。