ALTER EXTRACT
Verwenden Sie ALTER EXTRACT für die folgenden Zwecke:
-
Das Attribut einer Extract-Gruppe ändern, die mit dem Befehl
ADD EXTRACTerstellt wurde. -
Einen Trail auf die nächste Datei in der Sequenz erhöhen.
-
Ein Upgrade auf eine integrierte Capture-Konfiguration vornehmen.
-
Ein Downgrade von einer integrierten Capture-Konfiguration vornehmen.
-
Ein beliebiges Db2 for i-Journal bei einer bestimmten Journalsequenznummer positionieren.
Bevor Sie diesen Befehl benutzen, stoppen sie den Extract mit den Befehl STOP EXTRACT group_name.
Syntax
ALTER EXTRACT group-name
[, BEGIN {NOW | yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]} |
| [, EXTRBA archive-offset-number]
| [, ADD_EXTRACT_attribute | SCN value]
| [, LSN
| [, EOL
| [, DESC
| [ CRITICAL [ YES | NO ] ]
| [ ENCRYPTIONPROFILE encryption-profile-name]
| [ PROFILE
| [ AUTOSTART [ YES | NO ]
| [ DELAY delay-number ] ]
| [ AUTORESTART [ YES | NO ]
| [ RETRIES retries-number ]
| [ WAITSECONDS wait-number ]
| [ RESETSECONDS reset-number ]
| [ DISABLEONFAILURE [ YES | NO ] ] ] ]
| [ LOGNUM lognum]
| [ LOGPOS logpos
Die folgenden ALTER EXTRACT-Optionen für Db2 for i werden unterstützt, um Extract für ein Journal zu positionieren:
ALTER EXTRACT {BEGIN {NOW | yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]Z]}
[JOURNAL journal_library/journal_name [JRNRCV receiver_library/
receiver_name]] |
, EOL [JOURNAL journal_library/journal_name
[JRNRCV receiver_library/receiver_name]] |
, SEQNO sequence_number [JOURNAL journal_library/journal_name
[JRNRCV receiver_library/receiver_name]]}
BEGIN {NOW | yyyy-mm-ddT[ hh:mi:[ss[.cccccc]]]Z} [JOURNAL journal_library/journal_name [JRNRCV receiver_library/ receiver_name]] | , EOL [JOURNAL journal_library/journal_name [JRNRCV receiver_library/receiver_name]] | , SEQNO sequence_number [JOURNAL journal_library/journal_name [JRNRCV receiver_library/receiver_name]]
Diese IBM for i-Optionen ermöglichen eine journal-spezifische Extract-Positionierung, nachdem der globale Startpunkt mit ADD EXTRACT ausgegeben wurde. Ein spezifisches Journalpositionsset mit ALTER EXTRACT hat keine Auswirkungen auf globale Positionen, die zuvor mit ADD EXTRACT oder ALTER EXTRACT festgelegt wurden. Eine globale Position, die zuvor mit ALTER EXTRACT festgelegt wurde, setzt allerdings jede spezifische Journalposition außer Kraft, die zuvor in derselben Extract-Konfiguration festgelegt wurde.
Hinweis: SEQNO, wenn es mit einem Journal in `ALTER verwendet wird
EXTRACT`, is the journal sequence number that is relative to that specific journal, not the system sequence number that is global across journals.
{: .infoboxnote}
group-name
Der Name der zu ändernden Extract-Gruppe.
{BEGIN {NOW |
Tyyyy-mm-dd[ hh:mi:[ss[.cccccc]]]Z} |
NOW
Bei allen Datenbanken außer Db2 LUW gibt NOW die Zeit an, zu der der Befehl ALTER EXTRACT ausgegeben wird.
NOW gibt die Zeit an, zu der der Befehl ALTER EXTRACT ausgegeben wird.
Für Db2 LUW enthalten nur die Datensätze für Commit und Ende von Transaktionen Zeitstempel. Daher kann die Extract-Startposition nur relativ zu diesen Zeitstempeln berechnet werden. Diese Einschränkung gilt für die von Oracle GoldenGate verwendete API. Die Positionierung nach Zeitstempel ist nicht genau und kann auch viel Zeit in Anspruch nehmen. Es wird empfohlen, nach Möglichkeit die Option LRI oder EOL zu verwenden.
YYYY-MM-DDThh:mm:ssZ
Datum und Uhrzeit (Zeitstempel) im angegebenen Format. Beispiel: 2017-07-14T14:54:45Z.
yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]
Datum und Uhrzeit (Zeitstempel) im angegebenen Format. Bei einem Oracle-Extract im integrierten Modus muss der Zeitstempelwert größer als der Zeitstempel sein, zu dem der Extract bei der Datenbank registriert wurde.
Die Positionierung anhand des Zeitstempels in einem SQL Server-Transaktionslog wird durch die folgenden Merkmale von SQL Server beeinflusst:
-
Die im SQL Server-Transaktionslog aufgezeichneten Zeitstempel nutzen eine Granularität von 3,3333 Mikrosekunden (ms). Diese Granularitätsebene lässt möglicherweise keine Positionierung anhand der Zeit zwischen zwei Transaktionen zu, wenn die Transaktionen innerhalb desselben Zeitintervalls von 3,3333 ms begonnen haben.
-
Zeitstempel werden nicht in jedem SQL Server-Logdatensatz aufgezeichnet, sondern nur in den Datensätzen, die die Transaktion beginnen und festschreiben, sowie in einigen anderen, die keine Daten enthalten.
-
SQL Server-Zeitstempel nutzen nicht die Systemuhr, sondern stattdessen eine interne Uhr, die speziell für die einzelnen verwendeten Prozessoren gilt. Diese Uhr wird mehrmals pro Sekunde aktualisiert, kann aber zwischen Aktualisierungen die Synchronizität mit der Systemuhr verlieren. Dadurch wird die Positionierung anhand der Zeit noch ungenauer.
-
Für Logbackupdateien aufgezeichnete Zeitstempel entsprechen möglicherweise nicht genau den im Backup aufgezeichneten Zeiten (bei dieser Ungenauigkeit handelt es sich aber um weniger als eine Sekunde).
Die Positionierung bei einer LSN ist präzise.
Die Positionierung nach Zeitstempel in PostgreSQL umfasst die folgenden Szenarios:
-
Szenario 1
Wenn
track_commit_timestampaufoffgesetzt ist, wird die folgende Ausgabe beim Starten des Extract-Prozesses angezeigt, unabhängig von der Positionierungsmethode:2020-04-29 02:15:54 INFO OGG-01517 Position of first record processed LSN: 0/2222C20, Jan 1, 1970 12:00:00 PM. -
Szenario 2
Wenn
track_commit_timestampvor der Extract-Registrierung aktiviert ist, wird der richtige Zeitstempel angezeigt, sobald die Datensätze an die Quelldatenbank übergeben werden, wie im folgenden Beispiel gezeigt:2020-04-29 02:19:07 INFO OGG-01515 Positioning to begin time Apr 29,2020 2:18:38 AM. -
Szenario 3
Wenn
track_commit_timestampnach der Extract-Registrierung aktiviert wird, sind die älteren Datensätze möglicherweise im Log verfügbar, für das der Commit-Zeitstempel nicht mit der zugehörigentransaction IDerstellt wird. Wenn Extract den Zeitstempel in diesem Fall nicht abrufen kann, wird der in Szenario 1 genannte Standardzeitstempel als Fallback verwendet. Die Ausgabe sieht in etwa wie folgt aus:020-04-29 01:55:07 INFO OGG-01517 Position of first record processed LSN: 0/221D028, Jan 1, 1970 12:00:00 PM. -
Ein Zeitstempel in der Vergangenheit kann nicht angegeben werden, wenn der Replikationsslot verschoben wurde.
START
Gültig für PostgreSQL.
Fügt einen Extract ohne Erwähnung von BEGIN NOW oder LSN hinzu. Extract beginnt automatisch bei der Neustartposition des Replikationsslots.
ADD_EXTRACT_attribute
Sie können alle mit dem Befehl ALTER EXTRACT angegebenen Attribute ändern. Ausnahme:
-
Änderung eines mit der Option
EXTTRAILSOURCEangegebenen Extracts. -
Änderung der Anzahl an RAC-Threads, die mit der Option
THREADSangegeben wurden.
Wenn diese Ausnahmen zutreffen, löschen Sie die Extract-Gruppe, und fügen Sie sie erneut hinzu.
Wenn Sie die Option BEGIN verwenden, kombinieren Sie keine anderen Optionen in der Anweisung. Geben Sie separate Anweisungen aus. Beispiel:
ALTER EXTRACT exte, BEGIN 2019-01-01
ALTER EXTRACT exte, ETROLLOVER
ALTER EXTRACT exte, SCN 789000
Wenn Sie die Option SCN oder BEGIN für einen integrierten Extrakt verwenden, ist DBLOGIN erforderlich, und der angegebene SCN- oder Zeitstempelwert darf nicht unter dem ersten SCN- oder Zeitstempelwert der Ausgangsserver liegen. Geben Sie den folgenden Befehl aus, um die erste SCN des Ausgangsservers zu ermitteln:
INFO EXTRACT group_name, SHOWCH DETAIL
Der erste SCN-Wert wird wie im folgenden Beispiel gezeigt aufgeführt:
Integrated Extract outbound server first scn: 0.665884 (665884)
EXTRBA offset_number
Gültig für Db2 z/OS.
Gibt die relative Byteadresse in einem Transaktionslog an, bei der mit der Datenerfassung begonnen werden soll.
Das erforderliche Format 0Xnnn ist. Dabei ist nnn eine 1- bis 20-stellige Hexadezimalzahl. (Das erste Zeichen ist die Ziffer Null, und das zweite Zeichen kann ein Groß- oder Kleinbuchstabe x sein.)
EOL
Gültig für Db2 for i, Db2 LUW, MySQL, PostgreSQL und SQL Server.
Legt fest, dass die Verarbeitung am Ende der Logdateien (oder Journale) beginnt, in die der nächste Datensatz geschrieben wird. Aktive Transaktionen werden nicht erfasst.
Bei Db2 LUW wird festgelegt, dass die Verarbeitung beim aktiven LRI-Wert in den Logdateien beginnt. Der aktive LRI-Wert ist die Position am Ende der Logdateien, in die der nächste Datensatz geschrieben wird. Aktive Transaktionen werden nicht erfasst.
Bei PostgreSQL ist DBLOGIN für die Positionierung nach EOL erforderlich.
Für MySQL wird die Position entsprechend dem Dateiende bestimmt, und Transaktionen werden ab dort gelesen. Die EOL-Position ist nicht genau, wenn kontinuierlich Daten in das binäre Log geschrieben werden.
TRANLOG LRI LRI_number
(Db2 LUW) Bei Db2 LUW-Systemen können Sie mit dieser Option den LRI-Datensatzwert für das Checkpointtransaktionslog angeben.
Bei PostgreSQL ist DBLOGIN für die Positionierung nach EOL erforderlich.
REPORT file_name
Gibt den vollständigen Pfadnamen einer Extract-Berichtsdateien in einem anderen Speicherort als dem Standard dirrpt im Oracle GoldenGate-Verzeichnis.
SCN value
Gültig für Oracle.
Startet Extract bei der Transaktion im Redo-Log mit der angegebenen Oracle-Systemänderungsnummer (SCN). Bei einem Extract muss der SCN-Wert größer als die SCN sein, an der der Extract bei der Datenbank registriert wurde. Wenn Sie SCN oder die Option BEGIN verwenden, ist DBLOGIN erforderlich, und der angegebene SCN- oder Zeitstempelwert darf nicht unter dem ersten SCN- oder Zeitstempelwert der Ausgangsserver liegen.
LSN value
Gültig für Db2 z/OS, PostgreSQL und SQL Server.
Gibt die Transaktions-LSN an, bei der die Datenerfassung begonnen werden soll. Ein Alias für diese Option ist EXTLSN.
Für Db2 z/OS kann der LSN-Wert entweder eine Reihe hexadezimaler Ziffern oder eine Reihe von Dezimalzahlen sein. Im hexadezimalen Format muss 0X oder 0x vorangestellt sein, gefolgt von 1 bis 20 Hexadezimalziffern: 0-9, a-g oder A-G. Im Dezimalformat gibt es kein Präfix, und der Wert enthält 1-25 Dezimalzahlen von 0 bis 9.
Bei PostgreSQL kann der LSN-Wert hi oder lo lauten. Setzen Sie den Wert als hi für den Einstiegspunkt der Logdatei. Lo ist der Offset in der Logdatei. Die LSN-Position muss zwischen der Neustartposition des Replikationsslots und dem aktuellen Speicherort des Write-Ahead-Logs liegen. Wenn die angegebene Position selbst im genannten Bereich liegt, löst Extract einen Fehler aus.
Für SQL Server gibt LSN die Transaktion LSN an, bei der die Datenerfassung begonnen werden soll. Ein Alias für diese Option ist EXTLSN.
Die angegebene LSN muss als gültige tran_begin_lsn in der Systemtabelle cdc.lsn_time_mapping vorhanden sein. Andernfalls wird versucht, die Extract-Positionation nach dem angegebenen LSN-Wert durchzuführen.
Gültige LSN-Spezifikationen für SQL Server umfassen:
-
Durch Doppelpunkt getrennte Hexadezimalzeichenfolge (8:8:4) mit Padding mit vorangestellten Nullen und dem Präfix 0X, z.B. 0X00000d7e:0000036b:0001
-
Durch Doppelpunkt getrennte Hexadezimalzeichenfolge (8:8:4) mit dem Präfix 0X und ohne vorangestellte Nullen, z.B. 0Xd7e:36b:1
Mit der folgenden Abfrage finden Sie die minimale verfügbare LSN:
SELECT min([tran_begin_lsn]) FROM [cdc].[lsn_time_mapping] with (nolock) where tran_id <> 0x00
Die folgenden Beispiele zeigen die Verwendung eines LSN-Wertes für Db2 z/OS:
Beispiel 1:
ALTER EXTRACT extn TRANLOG, LSN 0xDEE40E4F27A3245400
Beispiel 2:
ALTER EXTRACT extn TRANLOG, LSN 22216433159121980904448
Das folgende Beispiel zeigt den LSN-Wert für SQL Server:
ALTER EXTRACT extn TRANLOG, LSN 0X00000d7e:0000036b:0001
LOGNUM
Gültig für MySQL.
Das ist die Logdateinummer. Beispiel: Wenn der Name der erforderlichen Logdatei test.000034 lautet, ist der LOGNUM-Wert 34. Extract sucht nach dieser Logdatei. Hinweis: In der Microservices-Architektur verläuft ALTER EXTRACT nicht möglich, wenn der LOGNUM-Wert Nullen vor dem Wert enthält. Beispiel: ALTER EXTRACT ext1, TRANLOG, LOGNUM 000001, LOGPOS 0 verläuft nicht erfolgreich. Setzen Sie LOGNUM stattdessen auf 1, damit dieses Beispiel erfolgreich ausgeführt wird.
LOGPOS
Gültig für MySQL.
Das ist ein Ereignis-Offset-Wert innerhalb der Logdatei, der einen bestimmten Transaktionsdatensatz identifiziert. Ereignis-Offset-Werte werden im Headerabschnitt eines Logdatensatzes gespeichert. Zur Positionierung am Anfang einer binlog-Datei setzen Sie LOGPOS auf 0.
ETROLLOVER
Wird für manuelle Recovery-Situationen verwendet, die eine Neupositionierung und erneute Generierung von Traildateien für einen primären Extract erfordern, sowie bei Upgrades von älteren Oracle GoldenGate-Versionen.
Dadurch erstellt Extract eine neue Inkarnation der Traildatei und wechselt zur nächsthöheren Datei in der Trailsequenz beim Neustart. Dadurch müssen Reader wie Pump oder Replicat manuell neu auf die neue Trailsequenznummer positioniert werden.
Mit ETROLLOVER erfasst Extract alle Datensätze nach der angegebenen SCN, bei der Extract beginnt, unabhängig davon, ob sie bereits erfasst und in den Trail geschrieben wurden oder nicht. Ohne ETROLLOVER überspringt Extract die Erfassung aller Datensätze, die bereits erfasst und in den Trail geschrieben werden.
Ab 19c gilt bei der Verarbeitung des Verteilungsservice Folgendes:
-
Wenn der primäre Extract im Quell-Deployment mit der Zieltraildatei
ETROLLOVERupgegradet wird, erkennt der theDistribution-Service automatisch die QuelltraildateiETROLLOVERund beginnt mit der Lesen bei der nächsten Eingabetraildatei. Das ist derselbe Befehl wie Data PumpALTER EXTRACT groupname EXTSEQNO seqno+1 EXTRBA 0. -
Nach einem Upgrade des Verteilungsservice wird automatisch
ETROLLOVERfür die Ausgabetraildatei beim Neustart ausgeführt, und die nächste Traildatei wurde korrekt geschrieben. Das ist derselbe Befehl wie Data PumpALTER EXTRACT groupname ETROLLOVER.
DESC ‘description’
Gibt eine Beschreibung der Gruppe ein, wie 'Extracts account_tab on Serv1'. Schließen Sie die Beschreibung in einfache Anführungszeichen ein. Sie können das abgekürzte Schlüsselwort DESC oder das vollständige Wort DESCRIPTION verwenden.
ENCRYPTIONPROFILE
Gibt den Namen des Verschlüsselungsprofils für den Extract an. Bei dem Namen muss die Groß-/Kleinschreibung beachtet werden. Daher müssen Sie genau den Namen verwenden, den Sie bei ADD EXTRACT eingegeben haben.
GTIDSET gtidset
Gültig für MySQL.
Gibt die anfängliche Positionierung von Extract mit der Positionstypoption des GTID-Sets für GTID-basierte Erfassung für MySQL an. Die unterstützten MySQL-Quellen für das GTID-Set sind MySQL Server 8.0, MySQL Server 5.7, MySQL Database Service (MDS). Die maximal unterstützte GTID-Setgröße ist 64 KB.
Syntax:
ALTER EXTRACT extract_name, TRANLOG, GTIDSET gtidset
Die folgenden Beispiele umfassen alle Kombinationen der gültigen Formate von GTID-Sets.
Beispiel 1:
ALTER EXTRACT exte, TRANLOG, GTIDSET "E11FA47-71CA-11E1-9E33-C80AA9429562:4"
Beispiel 2:
ALTER EXTRACT exts, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-10"
Beispiel 3:
ALTER EXTRACT extn, TRANLOG, GTIDSET "3E11FA47-71CA-11E1-9E33-C80AA9429562:1-3:11:47-49"
Beispiel 4:
ALTER EXTRACT extw, TRANLOG, GTIDSET "2174B383-5441-11E8-B90A-C80AA9429562:1-3,24DA167-0C0C-11E8-8442-00059A3C7B00:1-19"
Hinweis: Wie in Beispiel 4 gezeigt, wird dieses GTID-Set, wenn das GTID-Set mehrere Uuids enthält, zur Bildung einer REST-API-Anforderung in mehrere GTID-Sets mit einem Komma-Trennzeichen unterteilt.
CRITICAL
Gibt an, ob der Prozess für das Deployment kritisch ist.
PROFILE
Name des Profils für den automatischen Start. Bei dem Namen muss die Groß-/Kleinschreibung beachtet werden. Daher müssen Sie genau den Namen verwenden, den Sie bei ALTER EXTRACT eingegeben haben.
AUTOSTART
Gibt an, ob der verwaltete Prozess automatisch beim Start des Administrationsservice gestartet werden muss. Der Standardwert ist YES.
RETRIES
Die maximale Anzahl der Wiederholungen bei Neustarts der Aufgabe, bevor Wiederholungsversuche abgebrochen werden. Diese Einstellung ist optional.
WAITSECONDS
Die Dauer (in Sekunden), während der Wiederholungsversuche gezählt werden.
RESETSECONDS
Setzt die Dauer, während der Wiederholungsversuche gezählt werden, zurück.
DISABLEONFAILURE
Bei TRUE wird die Aufgabe deaktiviert, nachdem die maximale Anzahl an Wiederholungen erreicht wurde.
INFO EXTRACT group-name, SHOWCH DETAIL
Der erste SCN-Wert wird wie im folgenden Beispiel gezeigt aufgeführt:
Integrated Extract outbound server first scn: 0.665884 (665884)
Beispiele
Mit dem folgenden Befehl ändern Sie Extract so, dass Daten ab dem 1. Januar 2019 verarbeitet werden.
ALTER EXTRACT exte, BEGIN 2019-01-01
Mit dem folgenden Befehl ändern Sie Extract so, dass die Verarbeitung bei einer bestimmten Position im Trail gestartet wird.
ALTER EXTRACT exte, EXTSEQNO 26, EXTRBA 338
Mit dem folgenden Befehl ändern Sie Extract in einer SQL Server-Umgebung so, dass die Verarbeitung bei einer bestimmten LSN gestartet wird.
ALTER EXTRACT exte, LSN 0Xd7e:36b:1
Mit dem folgenden Befehl wechselt Extract zur nächsthöheren Datei in der Trailsequenz.
ALTER EXTRACT exte, ETROLLOVER
Mit dem folgenden Befehl wird ein Extract-Upgrade auf den integrierten Capture-Modus durchgeführt.
ALTER EXTRACT exte, UPGRADE INTEGRATED TRANLOG
Der folgende Befehl verwendet ETROLLOVER zum Verhindern der Filterung doppelter Datensätze mit abwärts-SCN 778899.
ALTER EXTRACT exte, SCN 778899
ALTER EXTRACT exte ETROLLOVER
START EXTRACT exte
Wenn Sie Extract in den vorherigen SCN-Wert ändern, ohne ETROLLOVER zu verwenden, werden doppelte Datensätze nicht verarbeitet. Mit dem folgenden Befehl ändern Sie Extract zum Filtern doppelter Datensätze:
ALTER EXTRACT exte, SCN 778899
START EXTRACT exte
Der folgende Befehl zeigt ALTER EXTRACT für einen IBM for i-Journalstartpunkt.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn
Der folgende Befehl zeigt ALTER EXTRACT für einen IBM for i-Journal- und Empfangsstartpunkt.
ALTER EXTRACT exte, SEQNO 1234 JOURNAL accts/acctsjrn JRNRCV accts/jrnrcv0005
Mit dem folgenden Beispiel ändern Sie einen Extract auf einem Db2 LUW-System.
ALTER EXTRACT exte, TRANLOG LRI 8066.322711
Das folgende Beispiel zeigt die mit PostgreSQL verwendeten ALTER EXTRACT-Optionen:
ALTER EXTRACT exte, EOL
ALTER EXTRACT POSTEXT, LSN 0/156784
ALTER EXTRACT POSTEXT, BEGIN 2022-02-18T14:50:43.4230Z