OracleのFlashback機能による差分更新をサポートしました:CData Sync

by 浦邊信太郎 | 2021年05月28日

ついにOracle OCI データソースで差分更新が可能になりました!

CData Sync の差分更新とは、データの同期時にデータソースで変更があったレコードのみをコピーする機能です。 同期するデータ量が膨大だと一度の同期に長い時間がかかりますが、差分更新機能を使うことで定期的な同期処理を高速化できます。 これまでのCData Sync ではOracle OCI データソースでの差分更新は対応していませんでしたが、今回リリースされるCData Sync V21 ではOracle Flashback Technology を利用することで差分更新を実現しました。 この記事ではCData Sync のOracle OCI コネクタで差分更新を実行するための設定方法を紹介します。

Oracle Flashback Technology

Oracle Flashback Technologyは、データベースを過去の状態を参照したり、状態を戻したりすることができる機能です。

Oracle Flashback Technologyの使用

例えば下記は現在のPRODUCTS テーブルのデータを参照するSQL です。

 SELECT * FROM PRODUCTS;

Flashbackを利用することで、過去の時点のデータを参照することができます。 下記のSQL は2021年5月1日10時時点でのPRODUCTS テーブルのデータを参照します。

SELECT * FROM PRODUCTS AS OF TIMESTAMP TO_TIMESTAMP('2021-05-01 10:00:00','YYYY-MM-DD HH:MI:SS');

下記のSQLはWHERE句で指定されたレコードの、現時点から1時間前のデータを参照します。

SELECT * FROM PRODUCTS AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '1' HOUR) WHERE CODE='P001';

このようにFlashback を使うことで、AS OF 句で過去時点のデータを柔軟に参照することができます。 Sync ではこの技術を利用して差分更新を実現します。

※Flashback 機能が使える Oracle10 から CDataSync では当機能が使用できるようになっています。

Oracle Flashbackの有効化

差分更新機能の設定に先立ち、同期元のテーブルのフラッシュバック・アーカイブを有効化します。 ここではsqlplus での操作例を示します。

フラッシュバック・アーカイブを作成するために必要な権限をユーザに付与します。 ここでは例としてユーザadmin にADMINISTER ロールを付与します。

SQL> GRANT FLASHBACK ARCHIVE ADMINISTER TO admin;

続いてフラッシュバック・アーカイブオブジェクトを作成します。 作成時にはオブジェクト名、テーブルスペース、最大容量、データの保存期間を指定します。 下記の例では「FLASHBACK_ARCHIVE_TEST」というフラッシュバック・アーカイブオブジェクトをテーブルスペース「TS」に作成しています。 同時に、最大容量として100M、データ保存期間を1年に設定しています。

SQL> CREATE FLASHBACK ARCHIVE FLASHBACK_ARCHIVE_TEST TABLESPACE TS QUOTA 100M RETENTION 1 YEAR;

作成したフラッシュバック・アーカイブをユーザーが利用できるようにオブジェクト権限を付与します。 下記の例ではユーザ「testuser」に対して作成したFLASHBACK_ARCHIVE_TEST の利用許可を与えています。

SQL> GRANT FLASHBACK ARCHIVE ON FLASHBACK_ARCHIVE_TEST TO testuser;

以下からは作成したフラッシュバック・アーカイブをテーブル「PRODUCTS」に適用する方法を示します。

フラッシュバック・アーカイブを適用したテーブルを新規作成する場合、CREATE TABLE 文にFLASHBACK ARCHIVE 句を付与します。

SQL> CREATE TABLE PRODUCTS(CODE VARCHAR(50),NAME VARCHAR(100)) FLASHBACK ARCHIVE FLASHBACK_ARCHIVE_TEST;

既存のテーブルにフラッシュバック・アーカイブを適用する場合はALTER TABLE 文を使います。

SQL> ALTER TABLE PRODUCTS FLASHBACK ARCHIVE FLASHBACK_ARCHIVE_TEST;

これでPRODUCTS テーブルでフラッシュバック・アーカイブが利用可能になりました。

Syncの設定

Sync の設定は一点だけです。 Oracle OCI コネクタをデータソースとしたジョブを作成する際、[Oracle Flashbackを使用]をチェックしてください。

f:id:urabe_shintaro:20210528164057p:plain

動作確認

差分更新機能を試してみます。 ジョブを作成したあと、最初の同期では全レコード(10件)がレプリケートされます。

f:id:urabe_shintaro:20210528164108p:plain

続いてOracle のPRODUCTS テーブルに1件だけレコードを新規追加し、Sync で同じジョブを実行してみます。 すると、以下のように追加した1件だけがレプリケートされたことが確認できました。

f:id:urabe_shintaro:20210528164118p:plain

おわりに

今回はCData Sync V21 の新機能としてOracleの差分更新機能について紹介しました。 是非この機会に 新しい CData Sync をお試しください。

www.cdata.com

関連コンテンツ

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

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