ソースとターゲットの間の表属性の調整

Oracle GoldenGate DDL機能がデータベースでサポートされていない場合に、ソース表の属性を変更するには、この手順に従います。属性の変更には、列またはパーティションの追加または変更が含まれます。ここでは、レプリケーション・レイテンシを発生させずにターゲット表に同じ変更を加える方法を示します。

ノート: OracleおよびMySQLのデータベースの場合、この手順を使用するかわりに、Oracle GoldenGateのDDLサポート機能を有効化してDDLの変更をターゲットへ伝播できます。

  1. ソース・システムとターゲット・システム上で、トランザクション・ログ内の停止ポイントを示すマーカーを生成するための表(マーカー表)。単純な列を2つ作成します(一方は主キー、もう一方は通常の列です)。たとえば:
CREATE TABLE marker
(
id int NOT NULL,
column varchar(25) NOT NULL,

PRIMARY KEY (id)
);
  1. ソース・システムとターゲット・システムの両方で、マーカー表に行を挿入します。
INSERT INTO marker VALUES (1, 1);
COMMIT;
  1. ソース・システムで、管理クライアントを実行します。

  2. Extractのパラメータ・ファイルを編集のために開きます。

    注意:ローカル・オペレーティング・システムのものとは異なるキャラクタ・セットにある既存のパラメータ・ファイル(CHARSETオプションを使用して別の文字セットを指定したものなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示したり編集を行わないでください。この場合は、コマンドライン・インタフェース外部からパラメータ・ファイルを表示してください。そうしないと、内容が破損する可能性があります。

  3. Extractのパラメータ・ファイルのTABLE文にマーカー表を追加します。

TABLE marker;
  1. パラメータ・ファイルを保存して閉じます。

  2. データ・ポンプを使用している場合、データ・ポンプのTABLE文にマーカー表を追加します。

  3. Extractおよびデータ・ポンプのプロセスを停止し、取得のラグが発生しないよう、ただちに再起動します。

STOP EXTRACT *group*
START EXTRACT *group*
  1. ターゲット・システムで、管理クライアントを実行します。

  2. Replicatのパラメータ・ファイルを編集のために開きます。

    注意:ローカル・オペレーティング・システムのもの以外の文字セットを使用した既存のパラメータ・ファイル(CHARSETオプションを使用して別の文字セットを指定したものなど)は、VIEW PARAMSコマンドまたはEDIT PARAMSコマンドを使用して表示したり編集を行わないでください。その場合、管理クライアントの外部からパラメータ・ファイルを表示してください。そうしないと、内容が破損する可能性があります。

  3. Replicatのパラメータ・ファイルのMAP文にマーカー表を追加し、次に示すように、EVENTACTIONSパラメータを使用してReplicatを停止し、マーカー表に対する操作を無視します。

MAP marker, TARGET marker, EVENTACTIONS (STOP, IGNORE);
  1. パラメータ・ファイルを保存して閉じます。

  2. Replicatプロセスを停止します。その後、ただちに再起動します。

STOP REPLICAT *group*
START REPLICAT *group*
  1. ソース表の表属性とターゲット表の両方の表属性を変更する準備ができたら、それらの表に対するユーザー・アクティビティをすべて停止します。

  2. ソース・システムで、マーカー表に対するUPDATE操作をトランザクションの唯一の操作として実行します。

UPDATE marker
SET column=2,
WHERE id=1;
COMMIT;
  1. ターゲット・システムで、EVENTACTIONSルールの結果としてReplicatが停止したことが示されるまで、次のコマンドを発行します。
STATUS REPLICAT *group*
  1. ソース表とターゲット表に対してDDLを実行しますが、まだユーザー・アクティビティは許可しません。

  2. Replicatの起動

START REPLICAT *group*
  1. ソース表とターゲット表に対するユーザー・アクティビティを許可します。