調整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を再起動する場合です。正常な停止によって、すべてのスレッドが、証跡内の共通のチェックポイントの位置に到達することができます。その時点で、次の実行での新しいパーティション化スキームを適用できます。
-
管理クライアントを実行します。
-
Replicatを停止します。
STOP REPLICAT *group*
- パラメータ・ファイルを編集のために開きます。
EDIT PARAMS *group*
-
MAP文のTHREADまたはTHREADRANGE指定に、必要な変更を行います。 -
パラメータ・ファイルを保存して閉じます。
-
Replicatの起動
START REPLICAT *group*
計画外の再パーティション化後のReplicatのリカバリ
計画外の再パーティション化とは、Replicatを正常に停止できなかったあとで、更新されたスレッドのパーティション化を含む新しいパラメータ・ファイルを使用してReplicatを起動する場合です。このシナリオでは、一部またはすべての古いスレッドが、作業を終了できず、共通のチェックポイントに到着できていません。再起動時に、調整スレッドは古いパーティション化スキームを適用しようとするため、Replicatはエラーで異常終了します。次のいずれかの方法で、調整Replicatグループをこの状況からリカバリできます。
-
自動保存されたパラメータ・ファイルのコピーを使用します。
-
HANDLECOLLISIONSを使用した低基準値から再処理します。
HANDLECOLLISIONSを使用した低水準値からの再処理
この手順では、すべてのスレッドを低基準の位置に再配置します。これは、すべてのスレッドで実行された最も古いチェックポイントの位置です。言い換えると、低水位標値の位置は、異常停止する前に、最も低温なスレッドによって処理された最後のレコードになります。Replicatを起動すると、スレッドは、Replicatの停止前に処理していた操作を再処理し、HANDLECOLLISIONSパラメータは、高速なスレッドが異常停止前に適用した操作を再処理する際に発生した重複レコードおよび欠落レコードのエラーに対処します。
-
HANDLECOLLISIONSパラメータをReplicatパラメータ・ファイルに追加します。THREADSオプションを使用する必要はありません。 -
Replicatグループ全体(調整スレッド)に対して
INFO REPLICATコマンドを発行します。チェックポイントのRBAを記録します。これは、低基準値値です。この出力では、Group Name列の下にアクティブなスレッドのIDも表示されます。それらも同様に記録します。
INFO REPLICAT *group*
For example:
<pre class="copy"><code>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</code></pre>
- 各処理スレッドIDに対して
INFO REPLICATコマンドを発行し、各スレッドのRBAの位置を記録します。最も高いRBAをノートにとます。これがReplicatグループの高基準値です。
INFO REPLICAT *threadID*
For example:
<pre class="copy"><code>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</code></pre>
- 調整スレッド(スレッドIDなしでReplicat全体)に対して
ALTER REPLICATコマンドを発行し、記録した低基準RBAに位置指定します。
ALTER REPLICAT *group* EXTRBA *low_watermark_rba*
- Replicatの起動
START REPLICAT *group*
- 記録した高水準値より高いRBAが表示されるまで、基本的な
INFO REPLICATコマンドを発行します。HANDLECOLLISIONSは、以前に適用されたトランザクションにより発生するコリジョンに対処します。
INFO REPLICAT *group*
- Replicatを停止します。
STOP REPLICAT *group*
-
HANDLECOLLISIONSパラメータを削除またはコメントアウトします。 -
Replicatの起動
START REPLICAT *group*
自動保存されたパラメータ・ファイルの使用
Replicatが正常に停止する前にパラメータ・ファイルが編集されるたびに、元のパラメータ・ファイルのコピーが保存されます。このパラメータ・ファイルに戻して、すべてのスレッドが最新のチェックポイントの位置にあったスレッドに対応するように、スレッドを再同期できます。スレッドを同期すると、新しいパラメータ・ファイルに切り替えてから、Replicatを起動できます。
-
新しいパラメータ・ファイルを別の名前に保存してから、保存されている元のパラメータ・ファイルを正しい名前(グループ名と同じ)に変更します。保存されたパラメータ・ファイルは、接尾辞が
.backupで、Oracle GoldenGateのインストール・ディレクトリのdirprmサブディレクトリに格納されます。 -
次のコマンドを発行して、Replicatスレッドを最大のチェックポイントの位置に同期します。このコマンドによって、Replicatが自動的に起動され、スレッドが最大のチェックポイントの位置に到達するまでスレッドが実行されます。
SYNCHRONIZE REPLICAT *group*
STATUS REPLICATコマンドを、Replicatが正常に停止したことが表示されるまで発行します。
STATUS REPLICAT *group*
-
元のパラメータ・ファイルを別の名前に保存してから、新しいパラメータ・ファイルをグループ名に変更します。
-
Replicatの起動
START REPLICAT *group*