0

Tungsten Replicatorのドキュメント で概説されている並列抽出方法を使用して、Oracle から MySQL へのレプリケーションをプロビジョニングしようとしています。

  1. Tungsten が提供する setupCDC.sh スクリプトを使用して、Oracle で CDC テーブルをセットアップします。
  2. 前のスクリプトで指定された CDC プロセスの開始 SCN を指定して、並列エクストラクタを開始します。
  3. 並列エクストラクターは、フォームのフラスコバック クエリを使用して既存のすべてのデータを挿入しAS OF SCN ...、データの整合性を備えたポイント イン タイム プロビジョニングを実行します。

問題は、CDC が非同期の場合にのみsetupCDC スクリプトが SCN を出力することです。公式フォーラムのスレッドで、これは「スキーマ スナップショット全体に対して 1 つの位置を取得する」ことであることがほのめかされています。

ライセンスの制限により、同期CDCしか使用できません。all_captureテーブルに記録された SCN を手動で読み取り、プロビジョニングに使用しても安全ですか? データの整合性と最小限のダウンタイムの両方を達成できるオプションは何ですか?

  • を。プロビジョニングの進行中は、マスター データベースへの書き込み操作を無効にします。
    • 私のデータベースには数百ギガバイトのデータが保持されており、おそらく長いダウンタイムが発生するため、これは望ましくありません。
  • b. プロビジョニング中に書き込み操作を許可する: 並列抽出ですべてのテーブルが処理された後、通常のレプリケーションを通じてすべての CDC データを再適用することで、不一致が修正されます。再申請中に発生したエラーは無視する必要があります。
    • データの整合性の観点から、これは安全でしょうか?
4

1 に答える 1

0

all_capture テーブルに記録された SCN を手動で読み取り、プロビジョニングに使用しても安全ですか?

同期 CDC の場合、テーブルにはエントリがありませんall_capture。これは、非同期キャプチャ プロセス用です。

代わりに、各変更テーブルは作成時の SCN を記録します。表から最も低い SCN を特定し、change_tablesそれをプロビジョニング コマンドの引数として指定できますtrepctrl online -provision <scn>

SQL> COL scn FORMAT 999999999999999
SQL> SELECT MIN(created_scn) scn FROM change_tables WHERE change_set_name = 'TUNGSTEN_CS_{service_name}';

{service_name}(独自のサービス名に置き換えてください。)

于 2014-12-20T04:14:17.157 に答える