CData Sync のCDC レプリケーションが Oracle Database のCDB 構成をサポート

by 大川智久 | 2023年04月29日

CData Sync はOracle Database を同期元としたCDC に対応していますが、新たにCDB (コンテナ・データベース)構成をサポートしました。本記事では、Logminer を使ったCDC の設定について解説します。なお、非CDB 構成での設定については以下の記事をご参照ください。

CData Sync によるOracle Database のLogMiner を使ったCDC (変更データキャプチャ) レプリケーション | CData Software Blog

対応バージョン

Oracle Database のCDB 構成を同期元として使用するにはV22 以降のCData Sync、および、22.0.8485 以降のOracle OCI コネクタが必要となります。Oracle OCI コネクタのバージョンは、CData Sync の管理画面の「接続」で同期元のOracle コネクタを選択したときに表示されますのでご確認ください。

Oracle OCI コネクタのバージョンが古い場合は更新が必要です。弊社テクニカルサポートへ新しいコネクタをご依頼ください。

接続に使用するユーザおよび権限

Logminer を使ったCDC を使用するためには、接続に使用するユーザがCDB の共通ユーザである必要があります。共通ユーザは通常、「c##」から始まるユーザ名となります(上記のスクリーンショットでは「c##testuser」というユーザ名になっています)。

また、当該ユーザに必要な権限は以下の通りです。

CDB$ROOT 側のユーザに必要な権限

  • SET CONTAINER (CONTAINER=ALL)
  • SELECT ON SYS.V_$ARCHIVED_LOG
  • SELECT ON SYS.V_$LOG
  • SELECT ON SYS.V_$LOGFILE
  • EXECUTE ON SYS.DBMS_LOGMNR
  • SELECT ON SYS.V_$LOGMNR_CONTENTS
  • LOGMINING ロール

PDB 側のユーザに必要な権限

  • CREATE SESSION
  • 同期するテーブルのSELECT
  • SELECT ON DBA_LOG_GROUPS
  • SELECT ON SYS.V_$ARCHIVED_LOG
  • SELECT ON SYS.V_$LOG
  • SELECT ON SYS.V_$LOGFILE
  • SELECT ON SYS.V_$PDBS

実際の設定例

今回は、「testuser.testdatatable」というテーブルをCDC で同期するときに必要な設定およびユーザの作成を行ってみます。

まずDB がアーカイブログモードで動作している必要があります。これについては一般的な設定事項となりますので解説を省略します。

続いて、CDB$ROOT 上で補助ログを有効にし、共通ユーザの作成と必要な権限の付与を行います。

alter database add supplemental log data;
create user c##testuser identified by testuser;
grant set container to c##testuser container=all;
grant select on sys.v_$archived_log to c##testuser;
grant select on sys.v_$log to c##testuser;
grant select on sys.v_$logfile to c##testuser;
grant execute on sys.dbms_logmnr to c##testuser;
grant logmining to c##testuser;
grant select on sys.v_$logmnr_contents to c##testuser;

最後に、PDB 上で同期を行うテーブルに対する補助ログの設定、および必要な権限の付与を行います。

alter table testuser.testdatatable add supplemental log data (all) columns;
grant create session to c##testuser;
grant select on testuser.testdatatable to c##testuser;
grant select on dba_log_groups to c##testuser;
grant select on sys.v_$archived_log to c##testuser;
grant select on sys.v_$log to c##testuser;
grant select on sys.v_$logfile to c##testuser;
grant select on sys.v_$pdbs to c##testuser;

以上で必要な権限の付与は完了です。同期元の接続で上記で作成した「c##testuser」ユーザの接続を作成し、CDC ジョブを作成してください。

さいごに

本記事では、CData Sync のCDC ジョブの同期元としてOracle Database のコンテナ・データベースを使用する方法を解説しました。CData Sync は30日間機能無制限で試用することが可能です。また、試用期間中も弊社テクニカルサポートをご利用いただけます。是非、CData Sync の多彩な同期機能をお試しください。

CData Sync | ノーコードデータレプリケーション / ETL ツール

CData - サポートフォーム

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。