Überwachungsverzögerung
Lag-Statistiken zeigen, wie gut die Oracle GoldenGate-Prozesse mit der Datenmenge Schritt halten, die von den Geschäftsanwendungen generiert wird. Mit diesen Informationen können Sie verdächtige Probleme diagnostizieren und die Performance der Oracle GoldenGate-Prozesse optimieren, um die Latenz zwischen der Quell- und der Zieldatenbank zu minimieren.
Informationen zur Verzögerung
Bei Extract ist die Verzögerung die Differenz in Sekunden zwischen der Verarbeitungszeit eines Datensatzes durch Extract (basierend auf der Systemuhr) und dem Zeitstempel dieses Datensatzes in der Datenquelle.
Bei Replicat ist die Verzögerung die Differenz in Sekunden zwischen der Verarbeitungszeit des letzten Datensatzes durch Replicat (basierend auf der Systemuhr) und dem Zeitstempel des Datensatzes im Trail.
Um Lag-Statistiken anzuzeigen, verwenden Sie die Befehle [LAG](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-52D1B2C3-6ACF-4461-9ED2-FD3AE9121022) oder [SEND ER](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-DD62102E-A84D-4866-9A3A-9C2281CFEED7), [SEND EXTRACT](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-2A83CA04-DAB8-494B-BF36-F8D15E645749) und [SEND REPLICAT](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-DBA8F45C-6016-4AB4-BF9A-00C117029E7F).
Hinweis: Der Befehl INFO gibt auch eine Verzögerungsstatistik zurück. Diese Statistik stammt jedoch aus dem letzten Datensatz, der geprüft wurde, und nicht aus dem aktuellen Datensatz, der verarbeitet wird. Sie ist weniger genau als LAG oder INFO.
Verzögerung mit automatischen Taktüberwachungstabellen überwachen
Mit der standardmäßigen automatischen Heartbeat-Tabellenfunktion können Sie die End-to-End-Replikationsverzögerungen überwachen. Automatische Heartbeats werden von jeder Quelldatenbank an die Replikationsstreams gesendet, indem die Datensätze in einer Heartbeat-Seed-Tabelle und einer Heartbeat-Tabelle aktualisiert und eine heartbeat history table erstellt werden. Jeder Replikationsprozess im Replikationspfad verarbeitet diese Heartbeat-Datensätze und aktualisiert die darin enthaltenen Informationen. Diese Heartbeat-Datensätze werden in den Zieldatenbanken in die Heartbeat-Tabelle eingefügt oder aktualisiert.
Die Heartbeat-Tabellen enthalten die folgenden Informationen:
-
Quelldatenbank
-
Zieldatenbank
-
Informationen zu den ausgehenden Replikationsstreams:
-
Namen der Extract-, Distribution Service- und/oder Replicat-Prozesse im Pfad
-
Zeitstempel, wann Heartbeat-Datensätze von den Replikationsprozessen verarbeitet wurden.
-
-
Informationen zu den eingehenden Replikationsstreams:
-
Namen der Extract-, Distribution Service- und/oder Replicat-Prozesse im Pfad
-
Zeitstempel, wann Heartbeat-Datensätze von den Replikationsprozessen verarbeitet wurden.
-
Anhand der Informationen in der Heartbeat-Tabelle und der Heartbeat-History-Tabelle können die aktuellen und historischen Verzögerungen in jeder Replikation berechnet werden.
Replicat kann die aktuelle Neustartposition von Extract mit automatischen Heartbeat-Tabellen (LOGBSN) verfolgen. Auf diese Weise können die Traildateien bei Bedarf aus der Quelldatenbank neu generiert werden, und der Aufbewahrungszeitraum für Redo-Logs der Quelldatenbank wird minimiert. Durch die Verfolgung der neuesten Extract-Neustartposition können die Tombstone-Tabellen für ACDR-Tabellen (Automatic Conflict Detection and Resolution) häufiger gelöscht werden.
In einer bidirektionalen Konfiguration enthält die Heartbeat-Tabelle so viele Einträge wie die Anzahl der Replikationspfade zu den Neighbors der Datenbank. In einem unidirektionalen Setup ist die Tabelle an der Quelle leer. Die abgehenden Spalten haben die Zeitstempel und den abgehenden Pfad, den lokalen Extract und die nachgelagerten Prozesse. Die eingehenden Spalten haben die Zeitstempel und den Pfad der Upstreamprozesse und des lokalen Replicats.
In einer unidirektionalen Konfiguration füllt die Zieldatenbank nur die eingehenden Spalten in der Heartbeat-Tabelle auf.
Hinweis: Die automatische Taktüberwachung wird in MySQL Version 5.5 nicht unterstützt.
End-to-End-Replikationsablauf für Heartbeat-Tabelle
Der End-to-End-Replikationsprozess für Heartbeat-Tabellen basiert auf der Verwendung des Oracle GoldenGate-Trailformats. Folgender Prozess wird verwendet:
Fügen Sie jeder Ihrer Datenbanken mit dem Befehl ADD HEARTBEATTABLE eine Heartbeat-Tabelle hinzu. Fügen Sie die Heartbeat-Tabelle allen Quell- und Zielinstanzen hinzu, und starten Sie dann vorhandene Oracle GoldenGate-Prozesse neu, um die Heartbeat-Funktionalität zu aktivieren. Abhängig von der Datenbank müssen Sie möglicherweise einen Job zum Auffüllen der Heartbeat-Tabellendaten erstellen oder aktivieren.
Siehe folgendes Beispiel:
DBLOGIN USERIDALIAS *alias* [DOMAIN domain]|[SYSDBA | SQLID sqlid][SESSIONCHARSET character_set]}
ADD HEARTBEATTABLE
(Optional) Bei Oracle-Datenbanken müssen Sie sicherstellen, dass die Oracle-DBMS_SCHEDULER ordnungsgemäß funktioniert, da das Heartbeat-Update davon abhängig ist. Sie können die DBMS_SCHEDULER abfragen, indem Sie Folgendes absetzen:
SELECT START_DATE, LAST_START_DATE, NEXT_RUN_DATE
FROM DBA_SCHEDULER_JOBS
wobei job_name ='GG_UPDATE_HEARTBEATS';
Suchen Sie dann nach gültigen Einträgen für NEXT_RUN_DATE. Dies ist das nächste Mal, wenn der Scheduler ausgeführt wird. Wenn dies ein Zeitstempel in der Vergangenheit ist, wird kein Job ausgeführt, und Sie müssen ihn korrigieren.
Ein häufiger Grund dafür, dass der Scheduler nicht funktioniert, ist, wenn der Parameter job_queue_processes zu niedrig gesetzt ist (normalerweise null). Erhöhen Sie die Anzahl der in der Datenbank konfigurierten job_queue_processes mit dem Befehl ALTER SYSTEM SET JOB_QUEUE_PROCESSES = ##;, wobei ## die Anzahl der Jobqueueprozesse ist.
Führen Sie einen Extract aus, der beim Empfang der Logical Change Records (LCR) den Wert in der Spalte OUTGOING_EXTRACT prüft.
-
Wenn der Extract-Name mit diesem Wert übereinstimmt, wird die Spalte
OUTGOING_EXTRACT_TSaktualisiert, und der Datensatz wird in den Trail eingegeben. -
Wenn der Extract-Name nicht übereinstimmt, wird der LCR verworfen.
-
Wenn der
OUTGOING_EXTRACT-WertNULLlautet, wird er zusammen mitOUTGOING_EXTRACT_TSaufgefüllt, und der Datensatz wird im Trail eingegeben.
Der Verteilungsservice beim Lesen des Datensatzes prüft den Wert in der Spalte OUTGOING_ROUTING_PATH. Diese Spalte enthält eine Liste mit Verteilungspfaden.
Wenn der Wert NULL lautet, wird die Spalte mit dem aktuellen Gruppennamen (und dem Pfad, wenn es sich um einen Verteilungsservice handelt)"*" aktualisiert, die Spalte OUTGOING_ROUTING_TS aktualisiert, und der Datensatz wird in die Zieltraildatei geschrieben.
Wenn der Wert eine "*" in der Liste enthält, ersetzen Sie ihn durch group name[:pathname],"*"', aktualisieren Sie die Spalte OUTGOING_ROUTING_TS, und der Datensatz wird in die Zieltraildatei geschrieben. Wenn der Wert in der Liste kein Sternchen (*) enthält und der Verteilungspfadname in der Liste enthalten ist, wird der Datensatz an den Pfad gesendet, der im relevanten group name[:pathname],"*"'-Paar in der Liste angegeben ist. Wenn der Verteilungspfadname nicht in der Liste enthalten ist, wird der Datensatz verworfen.
Führen Sie ein Replicat aus, das beim Empfang des Datensatzes den Wert in der Spalte OUTGOING_REPLICAT prüft.
-
Wenn der Replicat-Name mit dem Wert übereinstimmt, wird die Zeile in der Heartbeat-Tabelle aktualisiert, und der Datensatz wird in die Historientabelle eingefügt.
-
Wenn der Replicat-Name nicht übereinstimmt, wird der Datensatz verworfen.
-
Wenn der Wert
NULLlautet, wird die Zeile in den Heartbeat- und Heartbeat-Historystabellen mit einem impliziten Aufruf der Replicat-Spaltenzuordnung aktualisiert.Automatische Replicat-Spaltenzuordnung:
REMOTE_DATABASE = LOCAL_DATABASE INCOMING_EXTRACT = OUTGOING_EXTRACT INCOMING_ROUTING_PATH = OUTGOING_ROUTING_PATH with "*" removed INCOMING_REPLICAT = @GETENV ("GGENVIRONMENT", "GROUPNAME") INCOMING_HEARTBEAT_TS = HEARTBEAT_TIMESTAMP INCOMING_EXTRACT_TS = OUTGOING_EXTRACT_TS INCOMING_ROUTING_TS = OUTGOING_ROUTING_TS INCOMING_REPLICAT_TS = @DATE ('UYYYY-MM-DD HH:MI:SS.FFFFFF','JTSLCT',@GETENV ('JULIANTIMESTAMP')) LOCAL_DATABASE = REMOTE_DATABASE OUTGOING_EXTRACT = INCOMING_EXTRACT OUTGOING_ROUTING_PATH = INCOMING_ROUTING_PATH OUTGOING_HEARTBEAT_TS = INCOMING_HEARTBEAT_TS OUTGOING_REPLICAT = INCOMING_REPLICAT OUTGOING_HEARTBEAT_TS = INCOMING_HEARTBEAT_TS
Weitere Überlegungen:
Die Berechnung verzögert sich, wenn der Heartbeat durch das System fließt, und hängt von der korrekten Einrichtung der Uhren der Quell- und Zielsysteme ab. Es ist möglich, dass die Verzögerung negativ sein kann, wenn das Zielsystem vor dem Quellsystem liegt. Die Verzögerung wird als negative Zahl angezeigt, sodass Sie sich der Abweichung der Uhr bewusst sind und Aktionen ausführen können, um sie zu beheben.
Der Zeitstempel, der durch das System fließt, ist UTC. Dem Zeitstempel ist keine Zeitzone zugeordnet. Wenn Sie also die Taktüberwachungstabellen anzeigen, kann die Verzögerung auch dann schnell angezeigt werden, wenn sich verschiedene Komponenten in verschiedenen Zeitzonen befinden. Sie können jede beliebige Ansicht über die zugrunde liegenden Tabellen schreiben. UTC wird empfohlen.
Alle Heartbeat-Einträge werden in UTF-8 in den Trail geschrieben.
Die ausgehenden und eingehenden Pfade zusammen bestimmen eine Zeile eindeutig. Das heißt, wenn Sie zwei Zeilen mit demselben ausgehenden Pfad und einem anderen eingehenden Pfad haben, werden zwei eindeutige Einträge betrachtet.
Heartbeat-Tabellendetails
In der Tabelle GG_HEARTBEAT werden Zeitstempelinformationen zur End-to-End-Replikationszeit und die Zeitinformationen zu den verschiedenen primären und sekundären Extract- und Replicat-Komponenten angezeigt.
In einer unidirektionalen Umgebung enthält nur die Zieldatenbank Informationen über die Replikationsverzögerung. Dies ist der Zeitpunkt, zu dem ein Datensatz in der Quelldatenbank generiert wird und für Clients in der Zieldatenbank sichtbar wird. Hinweis: Die automatischen Heartbeat-Tabellen füllen die Spalten OUTGOING_% nicht mit Daten auf, wenn sowohl die Quell- als auch die Remotedatenbank denselben Namen haben. Um den Datenbanknamen zu ändern, verwenden Sie das Utility DBNEWID. Weitere Informationen finden Sie im DBNEWID-Utility.
| Spalte | Datentyp | Beschreibung |
|---|---|---|
LOCAL_DATABASE |
VARCHAR2 |
Lokale Datenbank, in der die Replikationszeit aus der Remotedatenbank gemessen wird. |
HEARTBEAT_TIMESTAMP |
TIMESTAMP(6) |
Der Zeitpunkt, zu dem ein Zeitstempel in der Remotedatenbank generiert wird. |
REMOTE_DATABASE |
VARCHAR2 |
Remote-Datenbank, in der der Zeitstempel generiert wird |
INCOMING_EXTRACT |
VARCHAR2 |
Name des primären Extract (Capture) in der Remotedatenbank |
INCOMING_ROUTING_PATH |
VARCHAR2 |
Name des sekundären Extract (Pumps) in der Remotedatenbank |
INCOMING_REPLICAT |
VARCHAR2 |
Name des Replicats in der lokalen Datenbank. |
INCOMING_HEARTBEAT_TS |
TIMESTAMP(6) |
Endgültiger Zeitstempel, wenn die Informationen in die Tabelle GG_HEARTBEAT in der lokalen Datenbank eingefügt werden. |
INCOMING_EXTRACT_TS |
TIMESTAMP(6) |
Der Zeitstempel des generierten Zeitstempels wird vom primären Extract in der Remotedatenbank verarbeitet. |
INCOMING_ROUTING_TS |
TIMESTAMP(6) |
Der Zeitstempel des generierten Zeitstempels wird vom sekundären Extract in der Remotedatenbank verarbeitet. |
INCOMING_REPLICAT_TS |
TIMESTAMP(6) |
Der Zeitstempel des generierten Zeitstempels wird von Replicat in der lokalen Datenbank verarbeitet. |
OUTGOING_EXTRACT |
VARCHAR2 |
Bidirektionale/n-seitige Replikation: Name des primären Extract in der lokalen Datenbank. |
OUTGOING_ROUTING_PATH |
VARCHAR2 |
Bidirektionale/n-seitige Replikation: Name des sekundären Extract in der lokalen Datenbank. |
OUTGOING_REPLICAT |
VARCHAR2 |
Bidirektionale/n-seitige Replikation: Name des Replicats in der Remotedatenbank. |
OUTGOING_HEARTBEAT_TS |
TIMESTAMP(6) |
Bidirektionale/n-seitige Replikation: Endgültiger Zeitstempel, wenn die Informationen in die Tabelle in der Remotedatenbank eingefügt werden. |
OUTGOING_EXTRACT_TS |
TIMESTAMP(6) |
Bidirektionale/n-seitige Replikation: Der Zeitstempel des generierten Zeitstempels wird vom primären Extract in der lokalen Datenbank verarbeitet. |
OUTGOING_ROUTING_TS |
TIMESTAMP(6) |
Bidirektionale/n-seitige Replikation: Der Zeitstempel des generierten Zeitstempels wird vom sekundären Extract in der lokalen Datenbank verarbeitet. |
OUTGOING_REPLICAT_TS |
TIMESTAMP(6) |
Bidirektionale/n-seitige Replikation: Der Zeitstempel des generierten Zeitstempels wird von Replicat in der Remotedatenbank verarbeitet. |
INCOMING_REPLICAT_LW_CSN |
VARCHAR2 |
- |
INCOMING_EXTRACT_HEARTBEAT_CSN |
VARCHAR2 |
- |
INCOMING_EXTRACT_RESTART_CSN |
VARCHAR2 |
- |
INCOMING_EXTRACT_RESTART_TS |
TIMESTAMP(6) |
- |
In der Tabelle GG_HEARTBEAT_HISTORY werden historische Zeitstempelinformationen zur End-to-End-Replikationszeit und die Zeitinformationen zu den verschiedenen primären und sekundären Extract- und Replicat-Komponenten angezeigt.
In einer unidirektionalen Umgebung enthält nur die Zieldatenbank Informationen über die Replikationsverzögerung.
Zeitstempel werden in der UTC-Zeitzone verwaltet. Dies ist der Zeitpunkt, zu dem ein Datensatz in der Quelldatenbank generiert wird und für Clients in der Zieldatenbank sichtbar wird.
| Spalte | Datentyp | Beschreibung |
|---|---|---|
LOCAL_DATABASE |
VARCHAR2 |
Lokale Datenbank, in der der End-to-End-Lag gemessen wird. |
HEARTBEAT_RECEIVED_TS |
TIMESTAMP(6) |
Zeitpunkt, zu dem ein Zeitstempel von der Remote-Datenbank bei der lokalen Datenbank empfangen wird. |
REMOTE_DATABASE |
VARCHAR2 |
Remote-Datenbank, in der der Zeitstempel generiert wird. |
INCOMING_EXTRACT |
VARCHAR2 |
Name des primären Extract in der Remotedatenbank. |
INCOMING_ROUTING_PATH |
VARCHAR2 |
Name des sekundären Extract der Remotedatenbank. |
INCOMING_REPLICAT |
VARCHAR2 |
Name des Replicats in der lokalen Datenbank. |
INCOMING_HEARTBEAT_TS |
TIMESTAMP(6) |
Endgültiger Zeitstempel, wenn die Informationen in die Tabelle GG_HEARTBEAT_HISTORY in der lokalen Datenbank eingefügt werden. |
INCOMING_EXTRACT_TS |
TIMESTAMP(6) |
Zeitstempel, wenn der generierte Zeitstempel vom primären Extract in der Remotedatenbank verarbeitet wird. |
INCOMING_ROUTING_TS |
TIMESTAMP(6) |
Zeitstempel, wenn der generierte Zeitstempel vom sekundären Extract in der Remotedatenbank verarbeitet wird. |
INCOMING_REPLICAT_TS |
TIMESTAMP(6) |
Zeitstempel, wenn der generierte Zeitstempel von Replicat in der lokalen Datenbank verarbeitet wird. |
OUTGOING_EXTRACT |
VARCHAR2 |
Bidirektionale/n-seitige Replikation: Name des primären Extract aus der lokalen Datenbank. |
OUTGOING_ROUTING_PATH |
VARCHAR2 |
Bidirektionale/N-seitige Replikation: Name des sekundären Extract aus der lokalen Datenbank. |
OUTGOING_REPLICAT |
VARCHAR2 |
Bidirektionale/n-seitige Replikation: Name des Replicats in der Remotedatenbank. |
OUTGOING_HEARTBEAT_TS |
TIMESTAMP(6) |
Bidirektionale/n-seitige Replikation: Endgültiger Zeitstempel, wenn die Informationen dauerhaft in die Tabelle der Remote-Datenbank eingefügt werden. |
OUTGOING_EXTRACT_TS |
TIMESTAMP(6) |
Bidirektionale/n-seitige Replikation: Zeitstempel, wenn der generierte Zeitstempel vom primären Extract in der lokalen Datenbank verarbeitet wird. |
OUTGOING_ROUTING_TS |
TIMESTAMP(6) |
Bidirektionale/n-seitige Replikation: Zeitstempel, wenn der generierte Zeitstempel vom sekundären Extract in der lokalen Datenbank verarbeitet wird. |
OUTGOING_REPLICAT_TS |
TIMESTAMP(6) |
Bidirektionale/n-seitige Replikation: Zeitstempel, wenn der generierte Zeitstempel von Replicat in der Remotedatenbank verarbeitet wird. |
REPLICAT_LOW_WATERMARK_CSN |
String |
Diese Spalte wird von Replicat aufgefüllt, wenn dieser Heartbeat-Datensatz verarbeitet wird. Er füllt diese Spalte mit dem aktuellen Low-Watermark (LWM) auf, wenn er diesen Record verarbeitet. Auf diese Weise können wir einen LOGBSN aus einem Heartbeat-Datensatz auswählen, der zum Replicat LWM gehört. |
SOURCE_EXTRACT_HEARTBEAT_CSN |
String |
Diese Spalte wird durch Extract aufgefüllt und enthält die Quell-Commit-SCN für die Heartbeat-Transaktion in der Quelldatenbank. Der Heartbeat-Job in der Quelldatenbank kann diesen Wert nicht auffüllen, da er die Commit-SCN apriori nicht kennt. |
SOURCE_EXTRACT_RESTART_CSN |
String |
Diese Spalte wird durch Extract aufgefüllt und enthält das aktuelle LOGBSN, wenn Extract diesen bestimmten Heartbeat-Datensatz verarbeitet. Der Heartbeat-Job in der Quelldatenbank füllt diesen Wert nicht auf. |
SOURCE_EXTRACT_RESTART_CSN_TS |
TIMESTAMP |
Diese Spalte wird durch Extract aufgefüllt und enthält den Redo-Zeitstempel in UTC, der dem aktuellen LOGBSN entspricht, wenn Extract diesen bestimmten Heartbeat-Datensatz verarbeitet. Der Heartbeat-Job in der Quelldatenbank füllt diesen Wert nicht auf. |
In der Ansicht GG_LAG werden Informationen zum Replikationsverzögerung zwischen der lokalen und der Remotedatenbank angezeigt.
In einer unidirektionalen Umgebung enthält nur die Zieldatenbank Informationen über die Replikationsverzögerung. Die Verzögerung wird in Sekunden gemessen.
| Spalte | Datentyp | Beschreibung |
|---|---|---|
LOCAL_DATABASE |
VARCHAR2 |
Lokale Datenbank, in der die End-to-End-Replikationsverzögerung der Remotedatenbank gemessen wird. |
CURRENT_LOCAL_TS |
TIMESTAMP(6) |
Aktueller Zeitstempel der lokalen Datenbank. |
REMOTE_DATABASE |
VARCHAR2 |
Remote-Datenbank, in der der Zeitstempel generiert wird. |
INCOMING_HEARTBEAT_AGE |
NUMBER |
Das Alter des letzten Heartbeats, der von der Remotedatenbank empfangen wurde. |
INCOMING_PATH |
VARCHAR2 |
Replikationspfad von der Remotedatenbank zur lokalen Datenbank mit Extract- und Replicat-Komponenten. |
INCOMING_LAG |
NUMBER |
Replikationsverzögerung von der Remotedatenbank zur lokalen Datenbank. Dies ist die Zeit, in der der Heartbeat in der Remotedatenbank generiert wurde, abzüglich der Zeit, in der die Informationen dauerhaft in die Tabelle in der lokalen Datenbank eingefügt wurden. |
OUTGOING_HEARTBEAT_AGE |
NUMBER |
Das Alter des letzten Heartbeats von der lokalen Datenbank zur Remotedatenbank. |
OUTGOING_PATH |
VARCHAR2 |
Replikationspfad von der lokalen Datenbank zur Remotedatenbank mit Extract- und Replicat-Komponenten |
OUTGOING_LAG |
NUMBER |
Replikationsverzögerung von der lokalen Datenbank zur Remotedatenbank. Dies ist die Zeit, in der der Heartbeat in der lokalen Datenbank generiert wurde, abzüglich der Zeit, in der die Informationen dauerhaft in die Tabelle in der Remotedatenbank eingefügt wurden. |
REMOTE_EXTRACT_RESTART_CSN |
String |
Neustartposition für Quellextrakt. |
REMOTE_DATABASE DB_UNIQUE_NAME |
String |
Eindeutiger Remote-Datenbankname wird angezeigt. Wenn kein eindeutiger Name vorhanden ist, wird der Wert DB_NAME angezeigt. |
REMOTE_EXTRACT_RESTART_CSN_TIME |
Timestamp |
Zeitstempel, der der Extract-Redo-Position der Quelle zugeordnet ist. |
REMOTE_DB_OLDEST_OPEN_TXN_AGE |
Timestamp |
Alter der ältesten offenen Transaktion in der Quelldatenbank, die gerade von Extract verarbeitet wird. Diese Spalte kann als SYSTIMESTAMP - REMOTE_EXTRACT_RESTART_TIME berechnet werden. |
LOCAL_REPLICAT_LWM_CSN |
String |
CSN mit niedrigem Wasserzeichen des lokalen Replicats bei der Verarbeitung des Heartbeats. |
In der Ansicht GG_LAG_HISTORY werden die Historieninformationen zur Replikationsverzögerungshistorie zwischen der lokalen und der Remotedatenbank angezeigt.
In einer unidirektionalen Umgebung enthält nur die Zieldatenbank Informationen über die Replikationsverzögerung.
Die Einheit der Verzögerungseinheiten beträgt in Sekunden.
| Spalte | Datentyp | Beschreibung |
|---|---|---|
LOCAL_DATABASE |
VARCHAR2 |
Lokale Datenbank, in der die End-to-End-Replikationsverzögerung der Remotedatenbank gemessen wird. |
HEARTBEAT_RECEIVED_TS |
TIMESTAMP(6) |
Zeitpunkt, zu dem ein Zeitstempel von der Remotedatenbank in der lokalen Datenbank empfangen wird. |
REMOTE_DATABASE |
VARCHAR2 |
Remote-Datenbank, in der der Zeitstempel generiert wird. |
DB_NAME |
Zeichenfolge | Name der Remotedatenbank. |
DB_UNIQUE_NAME |
Zeichenfolge | Eindeutiger Remote-Datenbankname. Wenn der eindeutige Datenbankname nicht vorhanden ist, sind DB_NAME und DB_UNIQUE_NAME identisch. Bei einem Switchover auf ein Standby-Szenario ändert sich die db_unique_name, aber der db_name- und der Replikationspfad bleiben gleich |
INCOMING_HEARTBEAT_AGE |
NUMBER |
Das Alter des Heartbeat-Tisches. |
INCOMING_PATH |
VARCHAR2 |
Replikationspfad von der Remotedatenbank zur lokalen Datenbank mit Extract- und Replicat-Komponenten. |
INCOMING_LAG |
NUMBER |
Replikationsverzögerung von der Remotedatenbank zur lokalen Datenbank. Dies ist die Zeit, in der der Heartbeat in der Remotedatenbank generiert wurde, abzüglich der Zeit, in der die Informationen dauerhaft in die Tabelle in der lokalen Datenbank eingefügt wurden. |
OUTGOING_HEARTBEAT_AGE |
NUMBER |
|
OUTGOING_PATH |
VARCHAR2 |
Replikationspfad von der lokalen Datenbank zur Remotedatenbank mit Extract- und Replicat-Komponenten. |
OUTGOING_LAG |
NUMBER |
Replikationsverzögerung von der lokalen Datenbank zur Remotedatenbank. Dies ist die Zeit, in der der Heartbeat in der lokalen Datenbank generiert wurde, abzüglich der Zeit, in der die Informationen dauerhaft in die Tabelle in der Remotedatenbank eingefügt wurden. |
REMOTE_EXTRACT_RESTART_CSN |
String |
Neustartposition für Quellextrakt. |
REMOTE_EXTRACT_RESTART_CSN_TIME |
TIMESTAMP |
Zeitstempel, der der Extract-Redo-Position der Quelle zugeordnet ist. |
REMOTE_DB_OLDEST_OPEN_TXN_AGE |
TIMESTAMP |
Alter der ältesten offenen Transaktion in der Quelldatenbank, die gerade von Extract verarbeitet wird. Diese Spalte kann wie folgt berechnet werden: SYSTIMESTAMP - REMOTE_EXTRACT_RESTART_TIME |
LOCAL_REPLICAT_LWM_CSN |
String |
CSN mit niedrigem Wasserzeichen des lokalen Replicats bei der Verarbeitung des Heartbeats. |
INCOMING_EXTRACT_LAG |
- | - |
INCOMING_ROUTINE_LAG |
- | - |
INCOMING_REPLICAT_READ_LAG |
- | - |
INCOMING_REPICAT_LAG |
- | - |
OUTGOING_EXTRACT_LAG |
- | - |
OUTGOING_ROUTINE_LAG |
- | - |
OUTGOING_REPLICAT_READ_LAG |
- | - |
OUTGOING_REPLICAT_LAG |
- | - |
Heartbeat-Tabellen aktualisieren
Die Spalte HEARTBEAT_TIMESTAMP in der Heartbeat-Seed-Tabelle muss regelmäßig von einem Datenbankjob aktualisiert werden. Das Standard-Heartbeat-Intervall beträgt 1 Minute. Dieses Intervall kann über die Befehlszeile oder die Administration Service-Weboberfläche angegeben oder außer Kraft gesetzt werden.
Bei Oracle AI Database wird der Datenbankjob automatisch erstellt.
Für PostgreSQL können Sie eine automatisierte Aufgabe einrichten, um die Heartbeat-Tabelle zu aktualisieren. Siehe Automatisierungsaufgabe zum Aktualisieren der Heartbeat-Tabelle konfigurieren für PostgreSQL.
Für alle anderen unterstützten Datenbanken müssen Sie Hintergrundjobs erstellen, um den Heartbeat-Zeitstempel mit der datenbankspezifischen Scheduler-Funktion zu aktualisieren.
Weitere Informationen zum Aktualisieren der Heartbeat-Tabelle finden Sie unter [ADD HEARTBEATTABLE](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-126E30A2-DC7A-4C93-93EC-0EB8BA7C13CB), [ALTER HEARTBEATTABLE](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-08BC29F9-8A5D-4AD9-B355-528A270EECC8).
Automatisierungsaufgabe zum Aktualisieren der Heartbeat-Tabelle für PostgreSQL konfigurieren
Die Oracle GoldenGate for PostgreSQL-Weboberfläche bietet die Funktion zum Erstellen eines Cron-Jobs zum regelmäßigen Aktualisieren der Heartbeat-Tabelle.
So erstellen Sie diese Aufgabe über die Weboberfläche:
-
Blenden Sie im linken Navigationsbereich Aufgaben ein, und wählen Sie die Option Heartbeat-Aufgaben aktualisieren aus.
\

\
-
Klicken Sie auf der Seite "Heartbeat-Aufgaben aktualisieren" auf das Pluszeichen. Das Dialogfeld Neue Taktüberwachungsaufgabe erstellen wird angezeigt.\

-
Geben Sie die folgenden Werte im Dialogfeld an, und klicken Sie auf Weiterleiten:
-
Name: Geben Sie einen Namen für die Aufgabe an.
-
Zugangsdatendomain: Wählen Sie den Domainnamen aus der Dropdown-Liste aus.
-
Zugangsdatenalias: Wählen Sie den Zugangsdatenalias für die Datenbankinstanz PostgreSQL aus, für die Sie die Update-Heartbeat-Aufgabe erstellen.
-
Intervall: Geben Sie das Intervall für die Ausführung der Aktualisierungsaufgabe an. Der Mindestwert ist 60 (Standard), und der Höchstwert kann auf 7999 gesetzt werden.
-
Zum Ändern oder Löschen einer Aufgabe "Heartbeat aktualisieren" können Sie die folgenden Schritte ausführen: 1. Wählen Sie im linken Navigationsbereich der Administrationsserviceoberfläche die Option Aufgaben aus.
-
Klicken Sie auf Heartbeat-Aufgaben aktualisieren. Eine Liste der vorhandenen Aufgaben zur Aktualisierung der Taktüberwachung wird angezeigt.
-
Klicken Sie in der Spalte Aktionen auf das Symbol Stift. Das Dialogfeld Update-Heartbeat-Aufgabe bearbeiten wird angezeigt.
-
Sie können die Zugangsdatendomain, den Alias oder das Häufigkeitsintervall ändern oder ändern und auf Weiterleiten klicken. Die geänderte Aufgabe "Heartbeat aktualisieren" wird auf der Seite "Heartbeat-Aufgaben aktualisieren" aufgeführt.
-
Um eine Aufgabe zu löschen, klicken Sie in der Spalte "Aktionen" für die Aufgabe auf das Symbol Löschen. Um den Löschvorgang zu bestätigen, klicken Sie auf "OK".
Heartbeat-Historientabellen löschen
Die Heartbeat-Historientabelle wird regelmäßig mit einem Job gelöscht. Das Standardintervall beträgt 30 Tage. Dieses Intervall kann mit einem Befehlszeilen-Inteface wie Admin Client oder der Administration Service-Weboberfläche angegeben oder außer Kraft gesetzt werden.
Bei Oracle AI Database wird der Datenbankjob automatisch erstellt.
Für alle anderen unterstützten Datenbanken müssen Sie Hintergrundjobs erstellen, um die Heartbeat-Historientabelle mit der datenbankspezifischen Scheduler-Funktion zu löschen.
Best Practice
Oracle empfiehlt, dass Sie:
-
Verwenden Sie dieselbe Taktfrequenz in allen Datenbanken, um die Diagnose zu erleichtern.
-
Passen Sie den Aufbewahrungszeitraum an, wenn Speicherplatz ein Problem darstellt.
-
Behalten Sie die Standardhäufigkeit der Heartbeat-Tabelle bei. Die Häufigkeit von 30 bis 60 Sekunden liefert die besten Ergebnisse für die meisten Workloads.
-
Verwenden Sie Statistiken zur Verzögerungshistorie, um Informationen zur Verzögerung und zum Alter zu erfassen.
Verwenden der automatischen Taktüberwachungsbefehle
Sie können die automatischen Heartbeat-Funktionen von Oracle GoldenGate wie folgt mit den Heartbeat-Tabellenbefehlen steuern.
| Befehl | Beschreibung |
|---|---|
ADD HEARTBEATTABLE |
Erstellt die Heartbeat-Tabellen, die für die automatische Heartbeat-Funktionalität erforderlich sind, einschließlich der Spalten LOGBSN. |
ALTER HEARTBEATTABLE |
Ändert vorhandene Heartbeat-Objekte. |
ALTER HEARTBEATTABLE UPGRADE |
Ändert die Heartbeat-Tabellen, um die LOGBSN-Spalten zu den Heartbeat-Tabellen hinzuzufügen. Diese Einstellung ist optional. |
DELETE HEARTBEATTABLE |
Löscht vorhandene Heartbeat-Objekte. |
DELETE HEARTBEATENTRY |
Löscht Einträge in der Heartbeat-Tabelle. |
INFO HEARTBEATTABLE |
Zeigt Heartbeat-Tabelleninformationen an. |
Berichtsverzögerung
Auf Verzögerungsberichte kann über den Administration Service zugegriffen werden. Sie können eine Aufgabe für den Verzögerungsbericht einrichten, um automatisch Verzögerungsberichte für eine bestimmte Laufzeit zu generieren, und Warnungen ausgeben, wenn der Verzögerungswert den angegebenen Schwellenwert überschreitet. So richten Sie eine automatisierte Aufgabe zum Generieren von Nachlaufzeitberichten ein: 1. Klicken Sie im linken Navigationsbereich des Administrationsservice auf Aufgaben, und wählen Sie Lag-Bericht aus.
-
Die Spalte "Aktion" enthält alle Optionen zum Löschen, Ändern, Aktualisieren und Anzeigen der Aufgabendetails des Nachlaufzeitberichts.
-
Wählen Sie die erforderliche Option.
-
Wenn Sie die Option "Aufgabe ändern" wählen, werden Optionen zum Bearbeiten des Nachlaufzeitberichts angezeigt. Verfügbare Optionen:
-
Aktiviert: Damit wird die Aufgabe "Nachlaufzeitbericht" weiter verarbeitet.
-
Check Every (in minutes): So legen Sie ein Zeitintervall fest, um den Lag-Bericht zu prüfen.
-
Bericht: So generieren Sie einen Nachlaufzeitbericht automatisch, wenn der angegebene Schwellenwert überschritten wird. Sie können den Schwellenwert im Feld "Wenn überschritten" angeben.
-
If Exceeds: So geben Sie einen Schwellenwert an, nach dem eine Warnung ausgelöst wird. Der Wert kann Sekunden, Minuten oder Stunden sein.
-
Warnung: Damit kann eine Warnung generiert werden, falls der Verzögerungsschwellenwert den angegebenen Schwellenwert überschreitet.
-
When Exceeds: Der Lag-Schwellenwert, nach dem die Warnung ausgelöst wird.
-
-
Klicken Sie auf Weiterleiten.
Lag in Replicat identifizieren
So identifizieren Sie Verzögerungen im Replicat-Prozess und ändern Spalten einer Tabelle:
-
Aktivität in der Quelldatenbank für alle Tabellen unterbrechen, die mit Oracle GoldenGate verknüpft sind.
-
Admin-Client starten.
-
Führen Sie diesen Befehl für die Replicat-Gruppe aus:
INFO REPLICAT *group*
-
Prüfen Sie in der Zeile
Checkpoint Lag, ob eine Replicat-Verzögerung vorliegt. Setzen Sie bei BedarfINFO REPLICATfort, bis die Verzögerung Null ist. Dies bedeutet, dass alle Daten im Trail verarbeitet wurden. -
Stoppen Sie die Replicat-Gruppe.
STOP REPLICAT *group*
-
Führen Sie die Tabellenänderungen in den Zieldatenbanken aus.
-
Replicat-Prozess starten
START REPLICAT *group*
- Ermöglicht die Fortsetzung der Benutzeraktivität in allen Quelltabellen, die mit Oracle GoldenGate verknüpft sind.