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.
-
Admin-Client ausführen.
-
Stoppen Sie Replicat.
STOP REPLICAT *group*
- Öffnen Sie die Parameterdatei zur Bearbeitung.
EDIT PARAMS *group*
-
Nehmen Sie die erforderlichen Änderungen an den
THREAD- oderTHREADRANGE-Spezifikationen in denMAP-Anweisungen vor. -
Speichern und schließen Sie die Parameterdatei.
-
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:
-
Automatisch gespeicherte Kopie der Parameterdatei verwenden
-
Erneute Verarbeitung aus dem niedrigen Wasserzeichen mit
HANDLECOLLISIONS
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.
-
Fügen Sie den Parameter
HANDLECOLLISIONSzur Replicat-Parameterdatei hinzu. Es sind keineTHREADS-Optionen erforderlich. -
Setzen Sie den Befehl
INFO REPLICATfü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 SpalteGroup Nameangezeigt. Erstellen Sie auch eine Aufzeichnung dieser Daten.
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>
- Geben Sie den Befehl
INFO REPLICATfü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>
- Geben Sie den Befehl
ALTER REPLICATfü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*
- Replicat starten.
START REPLICAT *group*
- Geben Sie den einfachen Befehl
INFO REPLICATaus, bis ein RBA angezeigt wird, der höher als das von Ihnen aufgezeichnete hohe Wasserzeichen ist.HANDLECOLLISIONSverarbeitet alle Konflikte, die aufgrund zuvor angewendeter Transaktionen auftreten.
INFO REPLICAT *group*
- Stoppen Sie Replicat.
STOP REPLICAT *group*
-
Entfernen Sie den Parameter
HANDLECOLLISIONS, oder kommentieren Sie ihn aus. -
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.
-
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
.backupund wird im Unterverzeichnisdirprmdes Oracle GoldenGate-Installationsverzeichnisses gespeichert. -
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*
- Setzen Sie den Befehl
STATUS REPLICATab, bis angezeigt wird, dass Replicat ordnungsgemäß gestoppt wurde.
STATUS REPLICAT *group*
-
Speichern Sie die ursprüngliche Parameterdatei unter einem anderen Namen, und benennen Sie die neue Parameterdatei in den Gruppennamen um.
-
Replicat starten.
START REPLICAT *group*