Datenbank für Oracle GoldenGate vorbereiten
Erfahren Sie, wie Sie das zusätzliche Logging in den Quelldatenbanktabellen aktivieren, die für die Erfassung durch den Extract for SQL Server verwendet werden sollen, und wie Sie ältere CDC-Staging-Daten löschen.
Weitere Informationen zu CDC Capture finden Sie unter:
Oracle GoldenGate for SQL Server CDC Capture-Replikation http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/sql_cdcrep/sql_cdcrep.html verwenden.
Zusätzliches CDC-Logging aktivieren
Mit dem CDC-Extrakt erfolgt die Erfassung von Änderungsdaten über SQL Server Change Data Capture-Tabellen. Daher müssen Sie unbedingt die folgenden Verfahren und Anforderungen befolgen, damit Änderungsdaten korrekt von Extract aktiviert, verwaltet und erfasst werden.
Sie aktivieren zusätzliches Logging mit dem Befehl ADD TRANDATA, damit Extract die Informationen erfassen kann, die zum Rekonstruieren von Transaktionen erforderlich sind.
ADD TRANDATA muss für alle Tabellen ausgegeben werden, die von Oracle GoldenGate erfasst werden sollen. Dazu muss ein gültiges Schema verwendet werden, um die erforderlichen Oracle GoldenGate-Tabellen und Stored Procedures zu erstellen.
Wenn Sie zusätzliches Logging für einen CDC-Extrakt aktivieren, geschieht Folgendes:
-
Aktiviert SQL Server Change Data Capture auf Datenbankebene, sofern noch nicht aktiviert.
-
Erstellt eine Change Data Capture-Staging-Tabelle für jede Basistabelle, die mit zusätzlichem Logging aktiviert ist, indem
EXECUTE sys.sp_cdc_enable_tableausgeführt wird. Außerdem wird ein Trigger für jede CDC-Tabelle erstellt. Die CDC-Tabelle ist als Teil der Systemtabellen in der Datenbank vorhanden und hat eine Benennungskonvention wiecdc.OracleGG_basetableobjectid_CT. -
Erstellt eine Verfolgungstabelle mit der Benennungskonvention
ggschema.OracleGGTranTables. Diese Tabelle wird zum Speichern von Transaktionsindikatoren für die CDC-Tabellen verwendet und wird aufgefüllt, wenn der Trigger für eine CDC-Tabelle ausgelöst wird. Eigentümer der Tabelle ist das Schema, das im ParameterGGSCHEMAder DateiGLOBALSaufgeführt wird. -
Erstellt eine eindeutige Fetch Stored Procedure für jede CDC-Tabelle sowie mehrere andere Stored Procedures, die für die Funktion von Extract erforderlich sind. Diese gespeicherten Prozeduren gehören zu dem Schema, das im Parameter
GGSCHEMAder DateiGLOBALSaufgeführt ist. -
Im Rahmen der Aktivierung von CDC für Tabellen erstellt SQL Server außerdem zwei Jobs pro Datenbank:
cdc.dbname_capturecdc.dbname_cleanup -
Der CDC Capture-Job ist der Job, der das SQL Server-Transaktionslog liest und die Daten in die CDC-Tabellen auffüllt. Aus diesen CDC-Tabellen erfasst der Extract die Transaktionen. Daher ist es äußerst wichtig, dass der CDC-Capture-Job jederzeit ausgeführt wird. Dies erfordert auch, dass SQL Server Agent so eingestellt ist, dass er jederzeit ausgeführt wird, und dass er automatisch ausgeführt wird, wenn SQL Server gestartet wird.
Hinweis: Wenn die SQL Server-Transaktionsreplikation auch für die Datenbank aktiviert ist, ist der CDC Capture-Job nicht vorhanden. Stattdessen ist nur der SQL Server-Log Reader Agent-Job vorhanden.
-
Der CDC Capture-Job kann optimiert werden, um den Durchsatz zu verbessern. Informationen zur Optimierung finden Sie unter Überlegungen zu betrieblichen CDC Capture-Methoden.
-
Der von Microsoft erstellte CDC-Bereinigungsjob hat keine Abhängigkeiten davon, ob der Oracle GoldenGate-Extrakt Daten in den CDC-Tabellen erfasst hat oder nicht. Daher sind zusätzliche Schritte erforderlich, um den CDC-Bereinigungsjob unmittelbar nach der Aktivierung von
TRANDATAzu deaktivieren oder zu löschen und die eigene Aufgabe "Änderungsdaten löschen" von Oracle GoldenGate zu aktivieren. Weitere Informationen finden Sie unter CDC-Staging-Daten löschen.
Um zusätzliches Logging über die Befehlszeilenschnittstelle zu aktivieren, gehen Sie wie folgt vor:
-
Prüfen Sie das Thema "Datenbankbenutzer und -berechtigungen vorbereiten", um die erforderlichen Berechtigungen und Schritte zum Aktivieren der Datenbank für Change Data Capture zu bestimmen, sofern diese noch nicht festgelegt ist. Erhöhte Berechtigungen können für GoldenGate erforderlich sein, wenn die Datenbank nicht für CDC aktiviert ist, aber negiert werden kann, indem ein Administrator die Datenbank für Change Data Capture manuell aktiviert.
-
Für Google Cloud SQL for SQL Server muss die Datenbank von einem Serviceadministrator manuell für Change Data Capture aktiviert werden und den folgenden Befehl ausführen:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database'; -
Wenn Sie
TRANDATAfür SQL Server und Azure SQL Managed Instance hinzufügen, wird versucht, die Datenbank für Change Data Capture festzulegen, wenn der Benutzer über Systemadministratorberechtigungen verfügt. Andernfalls kann ein Datenbankadministrator die Datenbank für CDC manuell aktivieren, bevor SieTRANDATAhinzufügen, indem er den folgenden Befehl für die Quelldatenbank ausführt:EXEC sys.sp_cdc_enable_db; -
Wenn Sie
TRANDATAfür Amazon RDS for SQL Server hinzufügen, wird auch versucht, die Datenbank für Change Data Capture festzulegen, wenn dem Benutzer die Berechtigung erteilt wurde. Andernfalls kann ein Datenbankadministrator mit Masterzugangsdaten die Datenbank für CDC manuell aktivieren, bevor SieTRANDATAhinzufügen, indem Sie den folgenden Befehl für die Quelldatenbank ausführen:EXEC msdb.dbo.rds_cdc_enable_db 'source_database'
-
-
Stellen Sie in der Oracle GoldenGate-Quellinstallation sicher, dass die Datei
GLOBALSden ParameterGGSCHEMA schemanameenthält und dass der verwendete Schemaname (CREATE SCHEMA schemaname) in der Quelldatenbank erstellt wurde. Dieses Schema wird von allen nachfolgenden Oracle GoldenGate-Komponenten verwendet, die in der Datenbank erstellt wurden. Daher wird empfohlen, ein eindeutiges Schema zu erstellen, das ausschließlich von Oracle GoldenGate verwendet wird, wie z.B. "ggschema", und die SQL Server-Schemasdboodercdcnicht zu verwenden. -
Öffnen Sie auf dem Oracle GoldenGate-Quellsystem die Befehlszeilenschnittstelle (Admin-Client).
-
Melden Sie sich mit den Anmeldedaten der Datenbank bei der Datenbank an.
-
Geben Sie den folgenden Befehl für jede Tabelle aus, die von einem Extract erfasst werden soll. Sie können mehrere Tabellennamen mit einem Platzhalter angeben.
ADD TRANDATA owner.tableADD TRANDATA owner.*Optional können Sie die Dateigruppe festlegen, in der die Staging-Tabellen von SQL Server-Change Data Capture abgelegt werden. Verwenden Sie hierzu die Option
FILEGROUPmit einem vorhandenen Dateigruppennamen.ADD TRANDATA owner.table FILEGROUP cdctablesSee ADD TRANDATA
Weitere Informationen finden Sie unter "ADD TRANDATA".
CDC-Staging-Daten löschen
Wenn Sie zusätzliches Logging aktivieren, werden Daten, die von Extract zum Rekonstruieren von Transaktionen benötigt werden, in einer Reihe von SQL Server-CDC-Systemtabellen sowie in Oracle GoldenGate-Objekten gespeichert, mit denen die Vorgangsreihenfolge innerhalb einer Transaktion verfolgt wird. Diese Tabellen erfordern ein routinemäßiges Löschen, um den Datenspeicher in der Datenbank zu reduzieren. Beim Aktivieren des zusätzlichen Loggings mit TRANDATA erstellt SQL Server einen eigenen Job zur Bereinigung der Änderungsdatenerfassung. Dieser Job ist jedoch nicht bewusst, dass ein Extract möglicherweise noch Daten aus diesen CDC-Systemtabellen benötigt und diese Daten entfernen kann, bevor der Extract sie erfassen kann.
Wenn Daten, die während der Verarbeitung extrahiert werden müssen, aus den CDC-Systemtabellen gelöscht wurden, ist möglicherweise eine der folgenden Korrekturmaßnahmen erforderlich:
-
Ändern Sie den Extract so, dass er ab einem späteren Zeitpunkt erfasst wird, für den CDC-Daten verfügbar sind (und einen möglichen Datenverlust auf dem Ziel akzeptieren).
-
Synchronisieren Sie die Quell- und Zieltabellen erneut, und starten Sie dann die Oracle GoldenGate-Umgebung erneut.
Um die Situation zu beheben, dass CDC-Daten entfernt werden, bevor ein Extract sie verarbeiten kann, muss in Oracle GoldenGate für SQL Server eine Aufgabe "Änderungsdaten löschen" erstellt werden. Diese Aufgabe löscht CDC-Staging-Daten und stellt gleichzeitig sicher, dass keine Daten gelöscht werden, die der Extract noch verarbeiten muss.
Führen Sie die folgenden Schritte sofort aus, nachdem Sie zusätzliches Logging (TRANDATA) aktiviert haben, und bevor Sie Extract starten, um die Aufgabe "Oracle GoldenGate-Änderungsdaten löschen" zu erstellen. Die Aufgabe "Änderungsdaten löschen" wird im Administrationsservice ausgeführt und löscht beim ersten Erstellen automatisch den SQL Server CDC-Bereinigungsjob. Für die Aufgabe "Änderungsdaten löschen" ist kein SQL Server-Agent-Job vorhanden, da er vom Administrationsservice ausgeführt wird. Daher muss der Administrationsservice ausgeführt werden, damit die Bereinigungsaufgabe ordnungsgemäß funktioniert.
So erstellen Sie eine Aufgabe zum Löschen von Änderungsdaten:
In Oracle GoldenGate for Microservices Architecture muss nach dem Hinzufügen von TRANDATA zu Tabellen, aber vor dem Starten von Extract eine Aufgabe Änderungsdaten löschen erstellt werden, um eine CDC-Bereinigung in der Datenbank durchzuführen. Dies kann durch eine der folgenden Aktionen erfolgen:
-
Manuelle REST-API-Anforderungen
-
Administration Server - Web-UI
So erstellen Sie eine Aufgabe zum Löschen von Änderungsdaten mit der Web-UI des Administrationsservice: 1. Blenden Sie im linken Bereich den Abschnitt Aufgaben ein.
-
Klicken Sie auf der Seite Aufgaben auf Änderungsdaten löschen.
-
Klicken Sie auf das Pluszeichen, um ein Formular anzuzeigen, und füllen Sie die erforderlichen Felder aus, um eine neue Aufgabe "Änderungsdaten löschen" zu erstellen.
-
Arbeitsvorgangsname: Die Bezeichnung der zu erstellenden Löschaufgabe.
-
Aktiviert: Setzen Sie die Aufgabe auf "Aktiviert", was der Standardwert ist.
-
Zugangsdatendomain und Zugangsdatenalias: Wählen Sie einen vorhandenen Zugangsdatenalias für die Quelldatenbank aus.
-
Regel beibehalten: Dieser Wert bestimmt in Stunden oder Tagen die Menge der CDC-Staging-Daten, die in der Quelldatenbank gespeichert werden sollen. Je nach Version von Oracle GoldenGate sind die Standardwerte entweder 3 Tage oder 1 Stunde. Niedrigere CDC-Datenaufbewahrungszeiträume reduzieren die Menge der in der Datenbank gespeicherten CDC-Staging-Daten, begrenzen jedoch die Möglichkeit für einen Benutzer, den Extract auf eine Zeit zurückzusetzen, die älter ist als die in den Staging-Tabellen vorhandenen Daten.
-
Löschhäufigkeit: Dieser Wert gibt an, wie oft die Aufgabe ausgeführt wird. Der Standardwert beträgt alle 10 Minuten. Es wird empfohlen, den Standardwert beizubehalten, es sei denn, der Overhead aus der Löschaufgabe beeinträchtigt die Datenbankperformance in Zeiten hoher Benutzeraktivitäten. Hinweis: Erstellen Sie nur eine Aufgabe "Änderungsdaten löschen" pro Quelldatenbank.
-
Weitere Informationen zum Oracle GoldenGate CDC-Bereinigungsjob finden Sie unter Operative Überlegungen zur CDC-Erfassungsmethode.
Bi-Directional Loop Detection aktivieren
Die Loop-Erkennung ist eine Anforderung für bidirektionale Implementierungen von Oracle GoldenGate, sodass ein Extract für eine Quelldatenbank keine Transaktionen wieder erfasst, die von einem Replicat aus einer anderen Quelldatenbank gesendet werden.
Mit der Erfassungsmethode "CDC-Extraktion" erfasst standardmäßig jede Transaktion, die von einem Replicat in einer Datenbank festgeschrieben wird, in der ein Extract konfiguriert ist, diese Transaktion aus dem Replicat erneut, solange das zusätzliche Logging für die Tabellen aktiviert ist, an die das Replicat liefert.
Um die erneute Erfassung von Transaktionen zu ignorieren, die von einem Replicat angewendet werden, müssen Sie den Parameter TRANLOGOPTIONS EXCLUDEFILTERTABLE für den CDC-Extrakt verwenden. Die als Filtertabelle verwendete Tabelle ist die Oracle GoldenGate-Checkpoint-Tabelle, die Sie für das Replicat erstellen müssen.
So erstellen Sie eine Filtertabelle und aktivieren ergänzendes Logging:
Die folgenden Schritte erfordern einen Datenbankbenutzer, der Mitglied der Rolle "SQL Server-Systemadministratoren" (sysadmin) ist.
-
Führen Sie auf dem Quellsystem den Admin Client aus.
-
Stellen Sie eine Verbindung zum Deployment über den Admin-Client her.
-
Um sich bei der Datenbank anzumelden, setzen Sie den folgenden Befehl ab.
DBLOGIN USERIDALIAS alias -
Erstellen Sie die Oracle GoldenGate-Checkpoint-Tabelle, die vom Replicat verwendet wird, um Daten an die Quelldatenbank zu übermitteln.
Beispiel:
ADD CHECKPOINTTABLE ogg.ggchkptEs wird empfohlen, denselben Schemanamen wie im Parameter
GGSCHEMAder DateiGLOBALSzu verwenden. -
Aktivieren Sie zusätzliches Logging für die neu erstellte Checkpoint-Tabelle.
Beispiel:
ADD TRANDATA ogg.ggchkpt -
Fügen Sie das Replicat mit den Checkpoint-Tabelleninformationen hinzu.
Beispiel:
ADD REPLICAT repe, EXTTRAIL north/ea,checkpointtable ogg.ggchkpt -
Konfigurieren Sie den Extract mit dem Parameter
EXCLUDEFILTERTABLE. Verwenden Sie dazu die Checkpoint-Tabelle von Replicat für die Filtertabelle.TRANLOGOPTIONS EXCLUDEFILTERTABLE ogg.ggchkpt