Oracle 9i 以降では、指定したSCNの時点によるデータベースのExportを取得ができます。
ソース側テーブルが随時更新がある際、このExportとReconcile コマンドと組み合わせて、ターゲット側のテーブルと同期させることができます。
注意事項として、対象のテーブルは、専用の名前付きPostキューによって複製されている必要があります。
なお、そのPostキューは、他テーブルのデータを保持しないでください。
理由として Reconcileでは、指定された SCN 以前のすべてのキューメッセージを削除する(複製のデータが削除される)ためです。
手順
1. 対象テーブルは専用の名前付きポストキューを経由して複製され、そのキューが他のテーブルのデータを保持していないことを確認してください。
Configの例
splex.test_src splex.test_dest tgtserver:mypstqname@o.tnsalias
2. ソースSharePlex環境から ターゲットSharePlex に対して Flush を実行します。
ソースSharePlex側にて
sp_ctrl> flush o.srcorclsid queue mypstqname
これによりターゲット側ではキュー mypstqname を処理するPostプロセスが停止します。
(sp_ctrl> status にて Stopped - due to flush が表示)
3. ソースのテーブルに対してエクスポートコマンドをOracle表モードかつFLASHBACK_SCNオプション付きで実行します。
4. ソース環境でエクスポートファイル作成後 、SharePlexの flush コマンドによってターゲット側ではShrarePlex Postプロセスが停止した後、ソース環境とターゲット環境で同じテーブル構造になっているかどうかをチェックしてください。
5. ターゲット側テーブルにデータをインポートします。
6. ターゲット側テーブル上の全てのトリガおよび制約(主キーおよび一意制約は除く)を無効にします。
7. post キューに対し、reconcile コマンドを scn オプションで実行します。
ターゲット側 SharePlexにて
sp_ctrl> reconcile queue mypstqname for o.srcorclsid-o.tnsalias scn 値+1
- SCNの値は、ステップ3 で指定した値+1 を指定します。
- キュー名およびデータソース指定はターゲットでのsp_ctrl> qstatusコマンドで確認できます
8. ターゲット環境で、postプロセスを起動します。
ターゲット側 SharePlexにて
sp_ctrl> start post queue mypstqname