Konfiguration eines koordinierten Replicats verwalten

Dieser Abschnitt enthält Anweisungen zum Koordinieren von Threads und zum erneuten Partitionieren der Workload zwischen neuen oder verschiedenen Threads. Ein koordiniertes Replicat muss mit dem Befehl STOP REPLICAT ordnungsgemäß gestoppt werden, bevor Sie Änderungen an den Partitionsspezifikationen in den Klauseln THREAD oder THREADRANGE der MAP-Anweisungen vornehmen. Ein sauberer Halt stellt sicher, dass alle Fäden, die an verschiedenen Stellen im Trail zu einem bestimmten Zeitpunkt sein können, ihre Arbeit beenden und an einem gemeinsamen Trail-Standort ankommen.

Beim Start gibt Replicat einen Fehler aus und wird abgebrochen, wenn das letzte Herunterfahren nicht bereinigt wurde und die Partitionierung in den MAP-Anweisungen geändert wurde, um eine andere Anzahl von Threads zu enthalten (threads wurden hinzugefügt oder entfernt). Wenn jedoch dieselben Threads in der Parameterdatei beibehalten, aber einfach zwischen verschiedenen MAP-Anweisungen neu angeordnet werden, gibt Replicat eine Warnung aus, wird jedoch nicht abgebrochen. Dies kann zu fehlenden oder doppelten Datensätzen führen, da es keine Möglichkeit gibt, die Kontinuität der Thread-zu-Workload-Zuweisungen aus der vorherigen Ausführung sicherzustellen.

Im Folgenden finden Sie ein Beispiel dieser Bedingung.

Es folgt das ursprüngliche Partitionierungsschema:

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

Bei der folgenden Neupartitionierung des ursprünglichen Schemas wird nur eine Warnung ausgegeben:

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

Dieser Abschnitt enthält Anweisungen zum sauberen Herunterfahren von Replicat vor der Durchführung einer erneuten Partitionierung sowie Anweisungen zum Wiederherstellen der Replicat-Kontinuität, wenn eine erneute Partitionierung nach einem unsauberen Herunterfahren durchgeführt wird.

Die folgenden Aufgaben können für eine Replicat-Gruppe im koordinierten Modus ausgeführt werden.

Geplante Neupartitionierung der Workload ausführen

Eine geplante Neupartitionierung erfolgt, wenn Replicat ordnungsgemäß heruntergefahren werden kann, bevor es erneut mit einer neuen Parameterdatei gestartet wird, die eine aktualisierte Threadpartitionierung enthält. Ein sauberes Herunterfahren ermöglicht, dass alle Threads an einer gemeinsamen Checkpoint-Position im Trail ankommen. Zu diesem Zeitpunkt kann das neue Partitionierungsschema bei der nächsten Ausführung angewendet werden.

  1. Admin-Client ausführen.

  2. Stoppen Sie Replicat.

STOP REPLICAT *group*
  1. Öffnen Sie die Parameterdatei zur Bearbeitung.
EDIT PARAMS *group*
  1. Nehmen Sie die erforderlichen Änderungen an den THREAD- oder THREADRANGE-Spezifikationen in den MAP-Anweisungen vor.

  2. Speichern und schließen Sie die Parameterdatei.

  3. Replicat starten.

START REPLICAT *group*

Replicat nach einer ungeplanten Neupartitionierung wiederherstellen

Eine ungeplante Neupartitionierung erfolgt, wenn Replicat nicht ordnungsgemäß heruntergefahren werden darf, bevor es erneut mit einer neuen Parameterdatei gestartet wird, die eine aktualisierte Threadpartitionierung enthält. In diesem Szenario waren einige oder alle alten Threads nicht in der Lage, ihre Arbeit zu beenden und zu einem gemeinsamen Checkpoint zu gelangen. Beim Neustart versucht der Koordinator-Thread, das alte Partitionierungsschema anzuwenden, und Replicat wird mit einem Fehler beendet. Sie können die koordinierte Replicat-Gruppe aus dieser Bedingung auf eine der folgenden Arten wiederherstellen:

Wiederaufbereitung aus dem Low Watermark mit HANDLECOLLISIONS

In diesem Verfahren positionieren Sie alle Threads in der Position niedriges Wasserzeichen neu. Dies ist die früheste Checkpoint-Position, die unter allen Threads ausgeführt wird. Um es anders zu sagen, ist die niedrige Wasserzeichenposition der letzte Datensatz, der vom langsamsten Thread vor dem unreinen Stopp verarbeitet wurde. Wenn Sie Replicat starten, verarbeiten die Threads die Vorgänge, die sie vor dem Stoppen von Replicat verarbeitet haben, erneut, und der Parameter HANDLECOLLISIONS verarbeitet alle Fehler bei doppelten Datensätzen und fehlenden Datensätzen, die auftreten, wenn die schnelleren Threads Vorgänge erneut verarbeiten, die sie vor dem unreinen Stopp angewendet haben.

  1. Fügen Sie den Parameter HANDLECOLLISIONS zur Replicat-Parameterdatei hinzu. Es sind keine THREADS-Optionen erforderlich.

  2. Setzen Sie den Befehl INFO REPLICAT für die Replicat-Gruppe als Ganzes (den Koordinator-Thread) ab. Erstellen Sie einen Datensatz für den RBA des Checkpoints. Dies ist der Wert für niedriges Wasserzeichen. In dieser Ausgabe werden auch die aktiven Thread-IDs unter der Spalte Group Name angezeigt. Erstellen Sie auch eine Aufzeichnung dieser Daten.

INFO REPLICAT *group*
For example:

<pre class="copy"><code>OGG(slc03jgo) 3&gt; 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>
  1. Geben Sie den Befehl INFO REPLICAT für jede Verarbeitungsthread-ID aus, und notieren Sie die RBA-Position jedes Threads. Notieren Sie sich den höchsten RBA. Dies ist das hohe Wasserzeichen der Replicat-Gruppe.
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>
  1. Geben Sie den Befehl ALTER REPLICAT für den Koordinator-Thread (Replicat als Ganzes, ohne Thread-ID) und die Position für den niedrigen Wasserzeichen-RBA aus, den Sie aufgezeichnet haben.
ALTER REPLICAT *group* EXTRBA *low_watermark_rba*
  1. Replicat starten.
START REPLICAT *group*
  1. Geben Sie den einfachen Befehl INFO REPLICAT aus, bis ein RBA angezeigt wird, der höher als das von Ihnen aufgezeichnete hohe Wasserzeichen ist. HANDLECOLLISIONS verarbeitet alle Konflikte, die aufgrund zuvor angewendeter Transaktionen auftreten.
INFO REPLICAT *group*
  1. Stoppen Sie Replicat.
STOP REPLICAT *group*
  1. Entfernen Sie den Parameter HANDLECOLLISIONS, oder kommentieren Sie ihn aus.

  2. Replicat starten.

START REPLICAT *group*

Automatisch gespeicherte Parameterdatei verwenden

Eine Kopie der ursprünglichen Parameterdatei wird gespeichert, wenn die Parameterdatei bearbeitet wird, bevor Replicat ordnungsgemäß heruntergefahren wird. Sie können diese Parameterdatei wiederherstellen und dann die Threads neu synchronisieren, sodass sie alle den Thread mit der letzten Checkpoint-Position aufholen. Nachdem die Threads synchronisiert wurden, können Sie zur neuen Parameterdatei wechseln und Replicat starten.

  1. Speichern Sie die neue Parameterdatei unter einem anderen Namen, und benennen Sie die gespeicherte ursprüngliche Parameterdatei dann in den richtigen Namen um (benennen Sie sie als Gruppennamen). Die gespeicherte Parameterdatei hat ein Suffix .backup und wird im Unterverzeichnis dirprm des Oracle GoldenGate-Installationsverzeichnisses gespeichert.

  2. Setzen Sie den folgenden Befehl ab, um die Replicat-Threads mit der maximalen Checkpoint-Position zu synchronisieren. Dieser Befehl startet Replicat automatisch und führt die Threads aus, bis sie die maximale Checkpoint-Position erreichen.

SYNCHRONIZE REPLICAT *group*
  1. Setzen Sie den Befehl STATUS REPLICAT ab, bis angezeigt wird, dass Replicat ordnungsgemäß gestoppt wurde.
STATUS REPLICAT *group*
  1. Speichern Sie die ursprüngliche Parameterdatei unter einem anderen Namen, und benennen Sie die neue Parameterdatei in den Gruppennamen um.

  2. Replicat starten.

START REPLICAT *group*