調整Replicat構成の管理

この項では、スレッドの調整および新しいスレッドまたは異なるスレッド間でのワークロードの再パーティション化を行う手順について説明します。MAP文のTHREAD句またはTHREADRANGE句のパーティション指定に変更を行う前に、STOP REPLICATコマンドを使用して、調整Replicatを正常に停止する必要があります。正常に停止すると、指定されたポイントの証跡内の異なる場所にあるすべてのスレッドが、操作をすべて終了し、共通の証跡の場所に到達していることが保証されます。

起動時に、最後に行われた停止が正常ではなく、MAP文のパーティション化が異なるスレッド数を含めるよう変更されていた(スレッドが追加または削除されていた)ことが検出される場合、Replicatはエラーを発行して異常終了します。ただし、パラメータ・ファイル内で同じスレッドが保持されていても、異なるMAP文で単純な再配置が行われた場合、Replicatは警告を発行し、異常終了はしません。この場合、前回の実行からの、スレッドからワークロードへの割当ての継続性を保証する方法がないため、レコードの欠落や重複が発生することがあります。

次に、この状況の例を示します。

元のパーティション化スキームは次のとおりです。

MAP source, target, THREADRANGE(1-5);
MAP source1, target1, THREADRANGE(6-10);

元のスキームを次のように再パーティション化すると、警告のみが発生します。

MAP source, target, THREADRANGE(1-4);
MAP source1, target1, THREADRANGE(5-10);

この項では、Replicatが正常に停止してから再パーティション化を実行する手順、および異常停止してから再パーティション化を実行する際にReplicatの継続性のリカバリを試行する手順について説明します。

調整モードでは、Replicatグループに対して次のタスクを実行できます。

ワークロードの計画済の再パーティション化の実行

計画済の再パーティション化とは、Replicatが正常に停止できた後で、更新されたスレッドのパーティション化を含む新しいパラメータ・ファイルを使用してReplicatを再起動する場合です。正常な停止によって、すべてのスレッドが、証跡内の共通のチェックポイントの位置に到達することができます。その時点で、次の実行での新しいパーティション化スキームを適用できます。

  1. 管理クライアントを実行します。
  2. Replicatを停止します。
    STOP REPLICAT group
    
  3. パラメータ・ファイルを編集のために開きます。
    EDIT PARAMS group
    
  4. MAP文のTHREADまたはTHREADRANGE指定に、必要な変更を行います。
  5. パラメータ・ファイルを保存して閉じます。
  6. Replicatを起動します。
    START REPLICAT group

計画外の再パーティション化後のReplicatのリカバリ

計画外の再パーティション化とは、Replicatが正常に停止できなかった後で、更新されたスレッドのパーティション化を含む新しいパラメータ・ファイルを使用してReplicatを再起動する場合です。このシナリオでは、一部またはすべての古いスレッドが、操作を終了できず、共通のチェックポイントに到達できていません。再起動時に、調整スレッドは古いパーティション化スキームを適用しようとするため、Replicatはエラーで異常終了します。次のいずれかの方法で、調整Replicatグループをこの状況からリカバリできます。

  • 自動保存されたパラメータ・ファイルのコピーを使用します。

  • HANDLECOLLISIONSを使用して、低基準値から再処理します。

HANDLECOLLISIONSを使用した低基準値からの再処理

この手順では、すべてのスレッドを低基準値の位置に再配置します。これは、すべてのスレッドで実行された最も古いチェックポイントの位置です。言い換えると、低基準値の位置は、異常停止する前に、最も低速なスレッドによって処理された最後のレコードです。Replicatを起動すると、スレッドは、Replicatの停止前に処理していた操作を再処理し、HANDLECOLLISIONSパラメータは、高速なスレッドが異常停止前に適用した操作を再処理する際に発生した重複レコードおよび欠落レコードのエラーに対処します。

  1. HANDLECOLLISIONSパラメータをReplicatパラメータ・ファイルに追加します。THREADSオプションを使用する必要はありません。
  2. Replicatグループ全体(調整スレッド)に対してINFO REPLICATコマンドを発行します。チェックポイントのRBAを記録します。これが低基準値の値です。この出力では、Group Name列の下にアクティブなスレッドのIDも表示されます。これらも同様に記録します。
    INFO REPLICAT group

    たとえば:

    OGG(slc03jgo) 3> info ra detail REPLICAT   RA       Last Started 2013-05-01 14:15   Status ABENDEDCOORDINATED          Coordinator                      MAXTHREADS 15Checkpoint Lag       00:00:00 (updated 00:00:07 ago)Process ID           11445Log Read Checkpoint  File ./dirdat/withMaxTransOp/bg000000001                     2013-05-02 07:49:45.975662  RBA 44704Lowest Log BSN value: (requires database login)Active Threads: ID  Group Name PID   Status   Lag at Chkpt  Time Since Chkpt1   RA001     11454 ABENDED  00:00:00      00:00:01    2   RA002     11455 ABENDED  00:00:00      00:00:04    3   RA003     11456 ABENDED  00:00:00      00:00:01    5   RA005     11457 ABENDED  00:00:00      00:00:02    6   RA006     11458 ABENDED  00:00:00      00:00:04    7   RA007     11459 ABENDED  00:00:00      00:00:04  
    
  3. 各処理スレッドIDに対してINFO REPLICATコマンドを発行し、各スレッドのRBAの位置を記録します。最も高いRBAをノートにとります。これがReplicatグループの高基準値です。
    INFO REPLICAT threadID

    たとえば:

    info ra002
    REPLICAT   RA002    Last Started 2013-05-01 14:15   Status ABENDEDCOORDINATED          Replicat Thread                  Thread 2Checkpoint Lag       00:00:00 (updated 00:00:06 ago)Process ID           11455
    Log Read Checkpoint  File ./dirdat/withMaxTransOp/bg000000001                     2013-05-02 07:49:15.837271  RBA 45603
    
  4. 調整スレッド(スレッドIDなしでReplicat全体)に対してALTER REPLICATコマンドを発行し、記録した低基準値RBAに位置指定します。
    ALTER REPLICAT group EXTRBA low_watermark_rba
  5. Replicatを起動します。
    START REPLICAT group
  6. 記録した高基準値より高いRBAが表示されるまで、基本のINFO REPLICATコマンドを発行します。HANDLECOLLISIONSは、以前に適用されたトランザクションにより発生するコリジョンに対処します。
    INFO REPLICAT group
  7. Replicatを停止します。
    STOP REPLICAT group
  8. HANDLECOLLISIONSパラメータを削除またコメントアウトします。
  9. Replicatを起動します。
    START REPLICAT group

自動保存されたパラメータ・ファイルの使用

Replicatが正常に停止する前にパラメータ・ファイルが編集されるたびに、元のパラメータ・ファイルのコピーが保存されます。このパラメータ・ファイルに戻して、すべてのスレッドが最新のチェックポイントの位置にあったスレッドに対応するように、スレッドを再同期できます。スレッドを同期すると、新しいパラメータ・ファイルに切り替えてから、Replicatを起動できます。

  1. 新しいパラメータ・ファイルを別の名前に保存してから、保存されている元のパラメータ・ファイルを正しい名前(グループ名と同じ)に変更します。保存されたパラメータ・ファイルは、接尾辞が.backupで、Oracle GoldenGateのインストール・ディレクトリのdirprmサブディレクトリに格納されます。
  2. 次のコマンドを発行して、Replicatスレッドを最大のチェックポイントの位置に同期します。このコマンドによって、Replicatが自動的に起動され、スレッドが最大のチェックポイントの位置に到達するまでスレッドが実行されます。
    SYNCHRONIZE REPLICAT group
    
  3. STATUS REPLICATコマンドを、Replicatが正常に停止したことが表示されるまで発行します。
    STATUS REPLICAT group
    
  4. 元のパラメータ・ファイルを別の名前に保存してから、新しいパラメータ・ファイルをグループ名に変更します。
  5. Replicatを起動します。
    START REPLICAT group