DDL 変更後に Management Console を使用してミラーリングを再開する

管理コンソール を使用して、DDL 変更後にミラーリングを再開できます。

手順

  1. 構造変更の対象となるすべての表に対する DML アクティビティーを終了します。

    これは、DDL 変更を行う前に、表への書き込みを行っているすべてのアプリケーションを停止することを意味します。

  2. DDL 変更の影響を受ける表に関連するオープン・トランザクションがないことを確認します。
  3. CDC Replication インスタンスで実行中のすべてのサブスクリプションのレプリケーションの終了
    • 制御シャットダウンを使用して、ログの先頭ですべてのサブスクリプションを停止します。 制御シャットダウンは正常に完了しなければなりません。 即時シャットダウンまたはアボート・シャットダウンを実行したり、制御シャットダウン・シーケンス中に製品を停止しないでください。 制御シャットダウンが正常に完了しない場合は、リフレッシュを実行して、表の内容の同期性を回復する必要があります。
    • CDC Replication がログの先頭に到達しているか、待ち時間がないことを確認します。
    • リフレッシュのみを実行中のものも含めて、すべてのサブスクリプションでレプリケーションが終了するまで待ちます。
    1. 「モニター」 > 「サブスクリプション」をクリックします。
    2. サブスクリプションを編集に使用できる場合は、1 つ以上のサブスクリプションを右クリックして、 「レプリケーションの終了」を選択します。
    3. CDC Replicationのバージョンに応じて、以下のオプションから選択します。
      CDC Replication バージョン 6.5 以降:
      正規 (Normal)
      CDC Replication は、進行中の作業を完了してから、レプリケーションを終了します。 リフレッシュが進行中の場合に「標準」を指定すると、現在の表のリフレッシュを完了してからレプリケーションを終了します。
      「標準」は、大半のビジネス要件で最適なオプションであり、多くの場合はこれがレプリケーションを終了させるために望ましい方式です。
      即時
      CDC Replication は、進行中のすべての作業を停止してから、レプリケーションを終了します。 このオプションの使用後にレプリケーションを開始すると、「標準」を使用する場合より、処理に時間がかかることがあります。 リフレッシュが進行中の場合、現在の表のリフレッシュを中断してレプリケーションを終了します。
      「即時」オプションを使用してレプリケーションを終了する前に、すべての従属ソース・データベース・ログを確実に使用可能にしておく必要があります。 CDC Replication は、サブスクリプションの再始動時にすべての従属ソース・ログを再処理する必要がある場合があります。 即時にレプリケーションを終了するときに、 CDC Replication が現在長期実行トランザクションを処理している場合、 CDC Replication は、データベース・ログ内の最も古いオープン・トランザクションからレプリケーションを再開しなければならない可能性があります。 どのログが必要であるか判別するには dmshowlogdependency コマンドを使用してください。
      このオプションは、業務上の理由で、「標準」を指定する場合よりも速くレプリケーションを終了する必要があり、サブスクリプションでレプリケーションを再開したときの開始処理に時間がかかっても構わない場合に使用してください。
      中止
      CDC Replication は、進行中のすべての作業を停止し、その後すぐにレプリケーションを終了します。 このオプションを使用した後にレプリケーションを開始すると、「標準」を使用する場合より、かなり時間がかかることがあります。 進行中のリフレッシュは中断され、レプリケーションの終了前に、ターゲットが、コミットされていないすべてのデータの処理を停止します。
      「中止」オプションを使用してレプリケーションを終了する前に、すべての従属ソース・データベース・ログを確実に使用可能にしておく必要があります。 CDC Replication は、サブスクリプションの再始動時にすべての従属ソース・ログを再処理する必要がある場合があります。 中止を指定してレプリケーションを終了したときに、 CDC Replication が現在長期実行トランザクションを処理している場合、 CDC Replication は、データベース・ログ内の最も古いオープン・トランザクションからレプリケーションを再開しなければならない可能性があります。 どのログが必要であるか判別するには dmshowlogdependency コマンドを使用してください。
      このオプションは、業務上の理由でレプリケーションをすぐに終了する必要があり、サブスクリプションでレプリケーションを再開したときの開始処理にさらに時間がかかっても構わない場合に使用してください。 緊急な業務上の必要性からソース・システムの予定外のシャットダウンを実行する場合、レプリケーションを終了させるためにこのオプションが必要なことがあります。
      予定終了日
      このオプションは、ソース・データベース内のすべてのコミット済みデータベース変更内容を処理し、その後、「標準」オプションを使用して、指定した時点でレプリケーションを終了します。
      現在
      レプリケーションを、ソース・データベース・ログの現在のソース・システム時刻で終了します。 「OK」をクリックすると、レプリケーションが終了する時点でのソース・システムの時刻が設定されます。
      特定の日時
      レプリケーションを、「標準」オプションを使用して指定した日時に終了します。 「CDC Replication」 には、ソース・データベースの UTC オフセット (分単位) が表示されます。
      特定のログ位置
      レプリケーションを、「標準」オプションを使用して、指定したログ位置で終了します。 「CDC Replication」 には、ソース・データ・ストアのログ位置のフォーマットが表示されます。 このオプションは、サポートされるソース・データ・ストアに対してのみ有効です。
      このオプションは、サブスクリプションのすべての表が現在リフレッシュ中である場合は使用できません。

      CDC Replication バージョン 6.3:

      制御
      CDC Replication は、進行中のすべての操作を完了し、保留中の変更をターゲット表に適用します。
      即時
      CDC Replication は、進行中の操作を中断し、保留中の変更をターゲット表に適用しません。
    4. 「OK」をクリックします。
  4. DDL に影響を受けるすべてのソース表に対してロギングが構成されていることを確認します。
  5. データベース内の、影響を受けるすべてのソース表に DDL 変更を適用します。
  6. ソース表定義を更新します。
    1. 「構成」 > 「サブスクリプション」をクリックします。
    2. 登録を選択します。
    3. 「表マッピング」ビューで、マップされたソース表とターゲット表を選択します。
    4. テーブルを右クリックして、 「テーブル定義の更新」 > 「ソース・テーブル」を選択します。

    これにより、ソース表定義が更新され、名前が一致した場合は新規列が再マップされます。 表状況は「ミラーリング/停止」にリセットされます。

  7. ターゲット・インスタンス上で DDL 変更が発生した場合は、ターゲット表定義を更新します。
    1. 「構成」 > 「サブスクリプション」をクリックします。
    2. 登録を選択します。
    3. 「表マッピング」ビューで、マップされたソース表とターゲット表を選択します。
    4. テーブルを右クリックして、 「テーブル定義の更新」 > 「ターゲット・テーブル」を選択します。

    これにより、ターゲット表定義が更新され、名前が一致した場合は新規列が再マップされます。 表状況は「ミラーリング/停止」にリセットされます。

  8. 表マッピングが正しいかどうかを確認します。

    DDL によってソース列が変更される場合は、新しいデータ・フォーマット (例えば CHAR(1) から CHAR(10) への移行など) にターゲット表が対応できることを確認してください。 これは、「表マッピング詳細」域で行うことができます。

    必要であれば、変更された列を手動で再マップし、新規マッピングを確認してください。 CDC Replication 自動マッピング・フィーチャーは、同一の列名をマップします。 ただし、自動マップはベスト・エフォート・アルゴリズムであるため、ビジネス・ニーズに応じてマッピングを確認および調整してください。

  9. 影響を受けるすべてのサブスクリプションのレプリケーション方式を「リフレッシュ」に変更します。
    1. 「構成」 > 「サブスクリプション」をクリックします。
    2. 登録を選択します。
    3. 「表マッピング」ビューで、マップされたソース表とターゲット表を選択します。
    4. 表を右クリックして、 「レプリケーション方式の変更」を選択します。
    5. 「リフレッシュ (スナップショット)」を選択します。
    6. 「OK」をクリックします。

    これにより、表が「ミラーリング」または「リフレッシュ」に設定され、表には一時的に有効範囲外のマークが付けられます。

    注: 影響を受ける表が複数のサブスクリプションにある場合は、次のステップに進む前に、影響を受けるすべてのサブスクリプションのレプリケーション方式を「リフレッシュ」に変更してください。
  10. 影響を受けるすべてのサブスクリプションのレプリケーション方式を再び「ミラーリング」に変更します。
    1. 「構成」 > 「サブスクリプション」をクリックします。
    2. 登録を選択します。
    3. 「表マッピング」ビューで、マップされたソース表とターゲット表を選択します。
    4. 表を右クリックして、 「レプリケーション方式の変更」を選択します。
    5. 「ミラーリング (Change Data Capture)」を選択します。
    6. 「OK」をクリックします。

    これにより、表が「ミラーリング」または「リフレッシュ」に設定されます。

  11. 以下のステップに従い、リフレッシュ操作を回避するために、キャプチャー・ポイントにマークを付けます。
    1. 「構成」 > 「サブスクリプション」をクリックします。
    2. 登録を選択します。
    3. 「表マッピング」ビューで、マップされたソース表とターゲット表を選択します。
    4. 表を右クリックして、 「ミラーリングの表キャプチャー・ポイントにマークを付ける」を選択します。
    5. レプリケーションを開始する前に、表状況が「ミラーリング/アクティブ」に変わったことを確認します。

    このステップにより、ログの先頭でキャプチャー・ポイントにマークが付けられます。

  12. 表のリフレッシュを実行する必要がある場合、またはリカバリーの優先手段が表のリフレッシュである場合は、表にリフレッシュ用のフラグを立てて、「リフレッシュ」操作を開始できます。
    1. 「構成」 > 「サブスクリプション」をクリックします。
    2. 登録を選択します。
    3. 「表マッピング」ビューで、マップされたソース表とターゲット表を選択します。
    4. テーブルを右クリックして、 「リフレッシュのフラグを立てる」を選択します。
    5. 「標準リフレッシュ (Standard Refresh)」を選択します。
    6. 「OK」をクリックします。

    リフレッシュが正常に完了したら、サブスクリプションのミラーリングを再開できます。

    注: リフレッシュは、以下の条件下で実行する必要があります。
    • DDL 変更が行われた時点より前の時刻からログを再収集する必要がある。つまり、再開始位置が DDL 変更よりも前である。
    • 表がドロップされて再作成されている。
  13. DDL 変更が原因で停止されていたサブスクリプションのミラーリングを開始します。
    1. 「モニター」 > 「サブスクリプション」をクリックします。
    2. サブスクリプションを編集に使用できる場合は、1 つ以上のサブスクリプションを右クリックして、 「ミラーリングの開始」を選択します。

      リフレッシュのフラグが立てられた 1 つ以上の表がある場合には「リフレッシュの詳細」が表示され、これらの表のリフレッシュ構成を見ることができます。 継続ミラーリングは、これらの表のリフレッシュが完了するまで開始されません。

    3. 「継続」 または 「スケジュール・エンド」 のいずれかのオプションを選択します。
    4. 「OK」 をクリックしてミラーリングを開始します。

      ミラーリングは、レプリケーションを終了するまで続行します。