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

Snowflake を同期先として設定する
Oracle 接続をテストして保存した後、同期先(この場合は Snowflake)に接続する必要があります。
- [Connections]タブをクリックし、[Destinations]を選択して、Snowflake を選びます。
-
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 を示しています)にログインし、クエリを実行できる場所に移動します。

-
まだ有効になっていない場合は、データベースで Archivelog を有効にします。これにはデータベースの再起動が必要です。
--ArchiveLog が既に有効かどうかを確認 SELECT LOG_MODE FROM V$DATABASE --LOG_MODE が ARCHIVELOG でない場合 SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
-
データベースがバックアップとアーカイブログを24時間保持するようにします(CData では7日間を推奨しています)。
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
-
データベースレベルまたはテーブルレベルで補足ロギングを有効にします。どちらか1つのみ必要です。
--データベースレベル ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS --テーブルレベル ALTER TABLE <schema_name>.<table_name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
- ユーザーが LogMiner を表示するための適切な権限を持っていることを確認します。
Sync で Oracle マルチテナントデータを Snowflake にレプリケートするジョブを作成する
ソースと同期先を構成したら、レプリケーションジョブを作成する準備が整いました。
- [Jobs]タブをクリックし、[+Add Job]をクリックします。
- ジョブに名前を付け、ソースとして Oracle 接続を、同期先として Snowflake 接続を選択し、Type として Change Data Capture を選びます。
- 最後に、[Add Job]をクリックします。

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