Datenbankverbindungs-, System- und Parametereinstellungen vorbereiten

Erfahren Sie, wie Sie Datenbankverbindungs-, System- und Parametereinstellungen für Oracle GoldenGate für Oracle konfigurieren.

GoldenGate-Replikations- und Archivmodus aktivieren

Schritt 1: GoldenGate-Replikation aktivieren

Die Datenbankservices, die zur Unterstützung von Oracle GoldenGate Extract und Replicat erforderlich sind, müssen explizit für Oracle AI Database aktiviert sein.

Um die Oracle GoldenGate-Replikation zu aktivieren, legen Sie den folgenden Datenbankinitialisierungsparameter fest. Für alle Instanzen in Oracle RAC muss dieser Wert auf TRUE gesetzt sein, wenn Oracle GoldenGate auf einem der Knoten verwendet wird.

ALTER SYSTEM SET enable_goldengate_replication = true SCOPTE=both;

Weitere Informationen zu diesem Parameter finden Sie unter Initialisierungsparameter.

2. Schritt: Archivierungsmodus aktivieren

Oracle-Datenbanken müssen sich im Modus ARCHIVELOG befinden, damit Extract die Logdateien verarbeiten kann. Um den ARCHIVELOG-Modus zu aktivieren, führen Sie die unter Datenbankarchivierungsmodus ändern angegebenen Schritte aus.

Flashback Query einstellen

Informationen zu den Daten, die Oracle GoldenGate abruft, finden Sie unter Details zur Unterstützung von Oracle-Datentypen und -Objekten.

Standardmäßig verwendet Oracle GoldenGate Flashback Query, um die Werte aus den Undo-(Rollback-)Tablespaces abzurufen. Auf diese Weise kann Oracle GoldenGate ein lesekonsistentes Zeilenimage zu einem bestimmten Zeitpunkt oder zu einer bestimmten SCN rekonstruieren, um dem Redo-Datensatz zu entsprechen.

Um optimale Fetch-Ergebnisse zu erzielen, konfigurieren Sie die Quelldatenbank wie folgt:

  1. Legen Sie eine ausreichende Redo-Aufbewahrung fest, indem Sie die Oracle-Initialisierungsparameter UNDO_MANAGEMENT und UNDO_RETENTION wie folgt (in Sekunden) festlegen.

    UNDO_MANAGEMENT=AUTO
    
    UNDO_RETENTION=86400
    
    UNDO_RETENTION can be adjusted upward in high-volume environments.
  2. Berechnen Sie den Speicherplatz, der im Undo Tablespace benötigt wird, mit der folgenden Formel.

    *undo_space* = UNDO_RETENTION * *UPS* + *overhead*

    Wo:

    • undo_space ist die Anzahl der Undo-Blöcke.

    • UNDO_RETENTION ist der Wert des Parameters UNDO_RETENTION (in Sekunden).

    • UPS ist die Anzahl der Undo-Blöcke pro Sekunde.

    • Overhead ist der minimale Overhead für Metadaten (Transaktionstabellen usw.).

    Verwenden Sie die Systemansicht V$UNDOSTAT, um den UPS- und Overhead zu schätzen.

  3. Führen Sie für Tabellen, die LOBs enthalten, einen der folgenden Schritte aus:

    • Setzen Sie die Speicherklausel LOB auf RETENTION. Dies ist der Standardwert für Tabellen, die erstellt werden, wenn UNDO_MANAGEMENT auf AUTO gesetzt ist.

    • Wenn Sie PCTVERSION anstelle von RETENTION verwenden, setzen Sie PCTVERSION auf einen Anfangswert von 25. Sie können sie basierend auf den Fetch-Statistiken anpassen, die mit dem Befehl STATS EXTRACT gemeldet werden. Wenn der Wert des Feldes STAT_OPER_ROWFETCH CURRENTBYROWID oder STAT_OPER_ROWFETCH_CURRENTBYKEY in diesen Statistiken hoch ist, erhöhen Sie PCTVERSION in Schritten von 10, bis die Statistiken niedrige Werte anzeigen.

Oracle GoldenGate stellt die folgenden Parameter zur Verwaltung des Abrufs bereit.

Parameter oder Befehl Beschreibung
STATS EXTRACT-Befehl mit Option REPORTFETCH Zeigt Extract-Abrufstatistiken bei Bedarf an.
Parameter STATOPTIONS mit Option REPORTFETCH Legt den Befehl STATS EXTRACT so fest, dass immer Fetch-Statistiken angezeigt werden.
Parameter MAXFETCHSTATEMENTS Steuert die Anzahl der offenen Cursor für vorbereitete Abfragen, die Extract in der Quelldatenbank und auch für SQLEXEC-Vorgänge verwaltet.
Parameter MAXFETCHSTATEMENTS Steuert das Standardabrufverhalten von Extract: ob Extract eine Flashback-Abfrage ausführt oder das aktuelle Image aus der Tabelle abruft.
Parameter FETCHOPTIONS mit der Option USELATESTVERSION oder NOUSELATESTVERSION Behandelt den Fehler einer Extract-Flashback-Abfrage, z.B. wenn die Undo-Erhaltung abgelaufen ist oder die Struktur einer Tabelle geändert wurde. Extract kann das aktuelle Image aus der Tabelle abrufen oder den Fehler ignorieren.
Parameter REPFETCHEDCOLOPTIONS Steuert die Antwort von Replicat, wenn Traildatensätze verarbeitet werden, die abgerufene Daten oder Bedingungen für fehlende Spalten enthalten.

Andere Datenbankeigenschaften bearbeiten

Es gibt einige Datenbankeigenschaften, die sich auf Oracle GoldenGate und die Parameter auswirken können, die zum Auflösen oder Umgehen bestimmter Bedingungen verwendet werden.

In der folgenden Tabelle sind die Datenbankeigenschaften und das zugehörige Problem/die zugehörige Lösung aufgeführt.

Datenbankeigenschaft Bedenken/Auflösung
Tabelle mit Intervallpartitionierung Um Tabellen mit Intervallpartitionierung zu unterstützen, stellen Sie sicher, dass der Parameter WILDCARDRESOLVE den Standardwert DYNAMIC aufweist.
Tabelle mit virtuellen Spalten

Virtuelle Spalten werden nicht protokolliert, und Oracle lässt DML für virtuelle Spalten nicht zu. Sie können diese Daten jedoch erfassen und einer Zielspalte zuordnen, die keine virtuelle Spalte ist. Gehen Sie dazu wie folgt vor:

Nehmen Sie die Tabelle in die Extract TABLE-Anweisung auf, und verwenden Sie die Option FETCHCOLS von TABLE, um den Wert aus der virtuellen Spalte in der Datenbank abzurufen.

Ordnen Sie in der Replicat-Anweisung MAP die virtuelle Quellspalte der nicht-virtuellen Zielspalte zu.

Tabelle mit inhärent aktualisierbarer Ansicht Um eine inhärent aktualisierbare View zu replizieren, definieren Sie einen Schlüssel für die eindeutigen Spalten in der aktualisierbaren View, indem Sie eine KEYCOLS-Klausel in derselben MAP-Anweisung verwenden, in der die verknüpften Quell- und Zieltabellen zugeordnet werden.
Redo-Logs oder Archive an verschiedenen Speicherorten Der Parameter TRANLOGOPTIONS enthält Optionen zur Verarbeitung von Umgebungen, in denen die Redo-Logs oder Archive an einem anderen Speicherort als der Datenbankstandard oder auf einer anderen Plattform gespeichert sind als auf der Extract ausgeführt wird.
TRUNCATE-Vorgänge

Um TRUNCATE-Vorgänge zu replizieren, wählen Sie eine der beiden folgenden Optionen:

  • Die Standalone-Unterstützung TRUNCATE mit dem Parameter GETTRUNCATES repliziert TRUNCATE TABLE, jedoch keine anderen TRUNCATE-Optionen. Nur verwenden, wenn keine Oracle GoldenGate-DDL-Unterstützung verwendet wird.

  • Die vollständige DDL-Unterstützung repliziert TRUNCATE TABLE, ALTER TABLE TRUNCATE PARTITION und andere DDL.

Belegnummern

Um DDL für Sequenzen (CREATE, ALTER, DROP, RENAME) zu replizieren, verwenden Sie die Oracle GoldenGate-DDL-Unterstützung.

Um nur Sequence-Werte zu replizieren, verwenden Sie den Parameter SEQUENCE in der Extract-Parameterdatei. Dafür ist die Oracle GoldenGate-DDL-Supportumgebung nicht erforderlich.

Mehrmandanten-Containerdatenbank konfigurieren

Oracle GoldenGate mit Oracle AI Database ermöglicht die Implementierung von integrierbaren Datenbanken (PDBs) für Quelle und Ziel. Extract ist für eine bestimmte PDB registriert, die als "per-PDB Extract" bezeichnet wird.

Hinweis: Der Zugriff auf Root-Ebene mit dem Benutzer c##ggadmin wird nicht empfohlen, außer im Fall einer Downstream-Extract-Konfiguration. Verwenden Sie Extract auf PDB-Ebene anstelle von Extract auf Root-Ebene.

Das folgende Diagramm zeigt die Konfiguration für verschiedene Ansätze in einer mehrmandantenfähigen Containerdatenbankkonfiguration:

Beschreibung von pdb_extract_feedbk.png folgt

Wenn Sie Extract direkt aus der PDB hinzufügen, werden Daten aus isolierten PDBs erfasst. Dabei werden Eigentümer und Verantwortlichkeit auf PDB-Ebene verwaltet.

Mit einem Extract pro PDB können Sie sich als lokaler PDB-Benutzer (z.B. ggadmin) anmelden und diesen Extract dann bei der Datenbank registrieren. Da Sie bereits als PDB-Benutzer angemeldet sind, ist eine zusätzliche container-Klausel nicht erforderlich. Ebenso ist die Benennungskonvention SOURCECATALOG oder eine dreiteilige Benennungskonvention nicht erforderlich.

Informationen zum Einrichten eines Extract finden Sie unter Extract hinzufügen.

Überlegungen zur Konfiguration einer mehrmandantenfähigen Containerdatenbank

Beachten Sie die folgenden Richtlinien, wenn Sie eine mehrmandantenfähige Containerdatenbank für die Datenreplikation mit Oracle GoldenGate konfigurieren:

Informationen zum Hinzufügen eines mehrmandantenfähigen Containerdatenbankbenutzers in Oracle GoldenGate-Zugangsdaten finden Sie unter Datenbankverbindungen hinzufügen. Siehe Benutzerberechtigungen für Oracle Database 21c und niedriger erteilen oder Benutzerberechtigungen für Oracle AI Database 26ai und höher erteilen, je nach der Oracle AI Database-Installation, die Sie konfigurieren müssen.

Reihenfolge für mehrmandantenfähige Containerdatenbank leeren

Sie können den Befehl FLUSH SEQUENCE nur in Oracle GoldenGate verwenden, wenn das Skript sequence.sql die Datenbankprozeduren im Admin-Schema GoldenGate der Datenbank anwendet.

Verwenden Sie den Befehl FLUSH SEQUENCE sofort nach dem ersten Extract-Start bei einer anfänglichen oder erneuten Synchronisierung. Dieser Befehl aktualisiert eine Oracle-Sequenz so, dass anfängliche Redo-Datensätze zu dem Zeitpunkt verfügbar sind, an der Extract die Erfassung von Transaktionsdaten beginnt. Normalerweise wird Redo erst generiert, wenn der aktuelle Cache erschöpft ist. Durch den Flushvorgang erhält Replicat einen anfänglichen Startpunkt für die Synchronisierung mit dem richtigen Sequenzwert auf dem Zielsystem. Ab dann kann Extract den Redo verwenden, der mit der gewöhnlichen Cachereservierung von Sequenzwerten verknüpft ist. 1. Die folgenden Oracle-Prozeduren werden von FLUSH SEQUENCE verwendet:

 | Database | Procedure | User and Privileges |
 | --- | --- | --- |
 | Source | `updateSequence` | Grants `EXECUTE` to the owner of the Oracle GoldenGate DDL objects, or other selected user if not using DDL support. |
 | Target | `replicateSequence` | Grants `EXECUTE` to the Oracle GoldenGate Replicat user. |

 {: summary="This table lists the Oracle procedures used by FLUSH SEQUENCE. It gives the database, procedure, and user and privileges." }

The `sequence.sql` script installs these procedures. Normally, this script is run as part of the Oracle GoldenGate installation process, but make certain that was done before using `FLUSH SEQUENCE`. If `sequence.sql` was not run, the flush fails and an error message similar to the following is generated:

<pre class="copy"><code>Cannot flush sequence {0}. Refer to the Oracle GoldenGate for Oracle documentation for instructions on how to set up and run the sequence.sql script. Error {1}.</code></pre>
  1. Bevor Sie FLUSH SEQUENCE verwenden, melden Sie sich mit dem Befehl DBLOGIN bei der Datenbank an.

FLUSH SEQUENCE muss auf PDB-Ebene abgesetzt werden, um einen Oracle GoldenGate-Benutzer in jeder PDB zu erstellen, für die die Sequenzreplikation erforderlich ist. Melden Sie sich mit DBLOGIN bei dieser PDB an, und führen Sie den Befehl FLUSH SEQUENCE aus.

Es wird empfohlen, dasselbe Schema in jeder PDB zu verwenden, damit es mit der Parameterdatei GGSCHEMA GLOBALS funktioniert.

Im folgenden Beispiel gilt das Umgebungssetup für Oracle 21c to Oracle 21c Replication, mit integriertem Extract und parallelem Replicat mit Oracle GoldenGate 21c (21.3.0).

In der folgenden Tabelle sind die Namen der Quell- und Ziel-CDB, PDBs und die zugehörigen Benutzerzugangsdaten für die Anmeldung bei der Datenbank aufgeführt.

Quell-CDB Ziel-CDB
NORTH SOUTH
PDB-Name: DBEAST PDB-Name: DBWEST

Allgemeiner Benutzer: c##ggadmin

PDB-Benutzer für Sequenzen: ggate

PDB-Benutzer: ggadmin
sqlplus system/manager
ALTER SESSION SESSION SET CONTAINER=CERTMISSN;
CREATE USER ggate IDENTIFIED BY *password* DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS CONTAINER=CURRENT;

@sequence.sql ausführen

sqlplus system/manager
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql

Geben Sie bei entsprechender Aufforderung Folgendes ein:

GGADMIN

Führen Sie den Befehl FLUSH SEQUENCE aus:

DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*

Oracle GoldenGate-Zielkonfiguration:

sqlplus system/manager
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql

Wenn Sie dazu aufgefordert werden, geben Sie den PDB-Benutzernamen ggadmin ein.

Dies gilt auch für das Skript @sequence.sql, das Sie auch auf jeder PDB ausführen müssen, von der aus Sie erfassen möchten.