表レベルDDLの変更の要件
Oracle GoldenGate for SQL Serverは、SQL ServerのDDLの変更の取得および配信をサポートしていません。ただし、Oracle GoldenGate 21c以降、TRANDATA
で有効にされた表に対して行われた変更が原因でExtractが異常終了することはありません。Extractは、TRANDATA
が有効にされたときに存在していた表の変更データを引き続き処理します。
表レベルDDLの変更とみなされる操作には、ALTER TABLE
、TRUNCATE TABLE
、索引の再構築、パーティション・スイッチなどが含まれます(それらに限定されません)。
表レベルDDLの変更によるデータの不整合を回避するには、次のステップを実行する必要があります。
- ソース: 変更される1つ以上の表へのアプリケーション・データを一時停止または停止します。
- ソース: 変更される表に対するオープン・トランザクションが存在しないことを確認します。
- ソース: 変更される表に対する残りのすべてのトランザクションをSQL Server CDCキャプチャ・ジョブが処理していることを確認します。
- ソース: DDLの変更前に、変更される表のすべてのトランザクションをExtractが処理していることを確認します。
- ターゲット: DDLの変更前に、変更される表のすべてのトランザクションをReplicatが処理していることを確認します。
- オプションで、イベント・マーカー表の実装を使用して、変更される表の残りのすべてのトランザクションが処理されたタイミングを判断すると、ExtractおよびReplicatを正しく停止するタイミングの調整を処理できます。
- ソース: Extractプロセスを停止します。
- ターゲット: Replicatプロセスを停止します。
- ソース:
DELETE TRANDATA
を実行して、変更される表のサプリメンタル・ロギングを無効にします。 - ソース: ソース表に対して表DDLの変更を実施します。
- ターゲット: ターゲット表に対して表DDLの変更を実施します。
- ソース: 変更の実行後、表に対して
ADD TRANDATA
を実行することで、サプリメンタル・ロギングを再有効化します。 - ソース: Extractプロセスを開始します。
- ターゲット: Replicatプロセスを開始します。
- ソース: 変更された1つ以上の表へのアプリケーション・データを再開します。