ついに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を使用]をチェックしてください。
動作確認
差分更新機能を試してみます。
ジョブを作成したあと、最初の同期では全レコード(10件)がレプリケートされます。
続いてOracle のPRODUCTS テーブルに1件だけレコードを新規追加し、Sync で同じジョブを実行してみます。
すると、以下のように追加した1件だけがレプリケートされたことが確認できました。
おわりに
今回はCData Sync V21 の新機能としてOracleの差分更新機能について紹介しました。
是非この機会に 新しい CData Sync をお試しください。
www.cdata.com
関連コンテンツ