Plug-in-Oracle-Datenbank konfigurieren

Datastream unterstützt die mehrmandantenfähige Architektur von Oracle, bei der eine einzelne Containerdatenbank (CDB) eine oder mehrere Plug-in-Datenbanken (PDBs) enthält. Jede PDB ist eine in sich geschlossene Datenbank mit einer eindeutigen ID und einem eindeutigen Namen und kann unabhängig verwaltet werden.

Sie können Ihre einsteckbare Oracle-Datenbank für die Verwendung mit den folgenden CDC-Methoden konfigurieren:

Weitere Informationen zum Binärlog-Reader und zur LogMiner API finden Sie unter Mit Redo-Logdateien der Oracle-Datenbank arbeiten.

Eine detaillierte Anleitung zum Konfigurieren Ihrer Oracle-Quelldatenbank für jede dieser Methoden finden Sie in den folgenden Abschnitten.

Einsteckbare Oracle-Datenbank für Binärlog-Leseprogramm konfigurieren

Führen Sie die folgenden Schritte aus, um Ihre einbindbare Oracle-Datenbank für die Verwendung mit der CDC-Methode des Binärlog-Readers zu konfigurieren:

  1. Wählen Sie eine der folgenden Methoden aus, um auf Ihre Logdateien zuzugreifen:

    • Automatic Storage Management (ASM): Wenn Sie diese Option auswählen, müssen Sie eine spezielle ASM-Verbindung erstellen und deren Details beim Erstellen Ihres Verbindungsprofils angeben.
    • Datenbankverzeichnisse: Wenn Sie diese Option auswählen, müssen Sie Datenbankverzeichnisobjekte erstellen, die auf die Redo-Logdateien und die archivierten Logdateien verweisen, und Ihrem Datenbanknutzer READ-Zugriff auf die Verzeichnisse gewähren:
    CREATE DIRECTORY DIRECTORY_NAME_1 as 'ONLINE_REDO_LOGS_PATH';
    CREATE DIRECTORY DIRECTORY_NAME_2 as 'ARCHIVED_REDO_LOGS_PATH';
    GRANT READ ON DIRECTORY DIRECTORY_NAME_1 to USER_NAME;
    GRANT READ ON DIRECTORY DIRECTORY_NAME_2 to USER_NAME;

    Ersetzen Sie Folgendes:

    • DIRECTORY_NAME_1: Der Name des Verzeichnisses für die Online-Redo-Logdateien.
    • DIRECTORY_NAME_2: der Name des Verzeichnisses für die archivierten Redo-Logdateien.
    • ONLINE_REDO_LOGS_PATH: der Pfad zum Verzeichnis, in dem Online-Redo-Logdateien gespeichert werden sollen.
    • ARCHIVED_REDO_LOGS_PATH: Der Pfad zum Verzeichnis, in dem archivierte Logdateien gespeichert werden sollen.
    • USER_NAME: Der Name des Datenbanknutzers, dem Sie READ-Zugriff gewähren möchten.

    Wenn Sie die Methode „Binäres Log lesen“ auswählen und Datenbankverzeichnisse verwenden, müssen Sie beim Erstellen des Streams die Namen der Verzeichnisse für Redo-Logs und archivierte Logs angeben.

  2. Prüfen Sie, ob die Datenbank im Modus ARCHIVELOG ausgeführt wird.

    Melden Sie sich dazu in Ihrer Oracle-Datenbank an und führen Sie an der SQL-Eingabeaufforderung den folgenden Befehl aus:

    SELECT LOG_MODE FROM V$DATABASE;
    
    1. Wenn das Ergebnis ARCHIVELOG ist, fahren Sie mit dem nächsten Schritt fort.
    2. Wenn das Ergebnis NOARCHIVELOG ist, müssen Sie den ARCHIVELOG-Modus für Ihre Datenbank aktivieren.
    3. Führen Sie die folgenden Befehle aus, wenn Sie als SYSDBA angemeldet sind:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. Archivierte Logdateien belegen Speicherplatz. Daher sollten Sie den Parameter DB_RECOVERY_FILE_DEST_SIZE für Ihre Datenbank konfigurieren. Verwenden Sie diesen Parameter, um (in Byte) die harte Grenze für den Gesamtspeicherplatz anzugeben, der von den Wiederherstellungsdateien der Zieldatenbank verwendet werden soll. Durch Festlegen dieses Parameters können Sie den Kompromiss zwischen dem Schutz der Datenbank vor Speicherplatzmangel und dem Fehler des Streams aufgrund von Logpositionsverlust verwalten.

  3. Legen Sie mit diesen Befehlen des Oracle Recovery Manager (RMAN) eine Datenaufbewahrungsrichtlinie für Ihre Datenbank fest:

    TARGET /
    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;

    Wir empfehlen, Sicherungen und Archivlogs mindestens 4 Tage aufzubewahren. 7 Tage wird empfohlen.

  4. Kehren Sie zur SQL-Eingabeaufforderung des Datenbanktools zurück, das Sie zum Konfigurieren der Rotationsrichtlinie für Oracle-Logdateien verwenden. Wir empfehlen, eine maximale Logdateigröße von maximal 512 MB festzulegen.

  5. Aktivieren Sie zusätzliche Logdaten. Aktivieren Sie dazu zuerst das minimale zusätzliche Logging auf Datenbankebene, indem Sie den folgenden Befehl ausführen:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

    Wählen Sie als Nächstes aus, ob das Logging für bestimmte Tabellen oder für die gesamte Datenbank aktiviert werden soll.

    Führen Sie den folgenden Befehl für jede zu replizierende Tabelle aus, um Änderungen nur für bestimmte Tabellen zu protokollieren:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    Ersetzen Sie Folgendes:

    • SCHEMA: der Name des Schemas, das die Tabelle enthält.
    • TABLE: Der Name der Tabelle, für die Sie Änderungen protokollieren möchten.

    Wenn Sie die meisten oder alle Tabellen in Ihrer Datenbank replizieren möchten, sollten Sie das Logging für die gesamte Datenbank aktivieren. Führen Sie den folgenden Befehl aus, um zusätzliche Logdaten für die gesamte Datenbank zu aktivieren:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
  6. Gewähren Sie dem Nutzerkonto, das für die Verbindung zur einsteckbaren Datenbank verwendet wird, die entsprechenden Berechtigungen. Dazu müssen Sie folgende Befehle ausführen:

    GRANT SELECT ON GV_$LOG TO USER_NAME;
    GRANT SELECT ON GV_$LOGFILE TO USER_NAME;
    GRANT SELECT ON GV_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON GV_$INSTANCE TO USER_NAME;
    GRANT SELECT ON GV_$STANDBY_LOG TO USER_NAME;
    GRANT SELECT ON V_$INSTANCE TO USER_NAME;
    GRANT SELECT ON V_$PDBS TO USER_NAME;
    GRANT SELECT ON V_$TRANSPORTABLE_PLATFORM TO USER_NAME;
    GRANT SELECT ON V_$DATABASE TO USER_NAME;
    GRANT SELECT ON V_$PARAMETER TO USER_NAME;
    GRANT SELECT ON COL$ TO USER_NAME;
    GRANT SELECT ON DBA_OBJECTS TO USER_NAME;
    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
    
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME;
    GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;

    Ersetzen Sie USER_NAME durch den Namen des Nutzerkontos, das Sie für die Verbindung zu Ihrer Datenbank verwenden möchten.

Plug-in-fähige Oracle-Datenbank für LogMiner konfigurieren

So konfigurieren Sie eine selbst gehostete Oracle-PDB, damit Sie sie mit der LogMiner API verwenden können:

  1. Prüfen Sie, ob die Datenbank im Modus ARCHIVELOG ausgeführt wird. Führen Sie dazu den folgenden Befehl über den CDB$ROOT-Container aus:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Wenn das Ergebnis ARCHIVELOG ist, fahren Sie mit Schritt 2 fort.
    2. Wenn das Ergebnis NOARCHIVELOG ist, müssen Sie den ARCHIVELOG-Modus für Ihre Datenbank aktivieren.
    3. Führen Sie die folgenden Befehle aus, wenn Sie als SYSDBA angemeldet sind:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
      
    4. Archivierte Logdateien belegen Speicherplatz. Daher sollten Sie den Parameter DB_RECOVERY_FILE_DEST_SIZE für Ihre Datenbank konfigurieren. Verwenden Sie diesen Parameter, um (in Byte) die harte Grenze für den Gesamtspeicherplatz anzugeben, der von den Wiederherstellungsdateien der Zieldatenbank verwendet werden soll. Durch Festlegen dieses Parameters können Sie den Kompromiss zwischen dem Schutz der Datenbank vor Speicherplatzmangel und dem Fehler des Streams aufgrund von Logpositionsverlust verwalten.

  2. Legen Sie mit dem folgenden RMAN-Befehl (Oracle Recovery Manager) eine Datenaufbewahrungsrichtlinie für Ihre Datenbank fest. Führen Sie den Befehl im CDB$ROOT-Container aus:

    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
    

    Mit dem Befehl wird die Datenaufbewahrungsrichtlinie für alle einsteckbaren Datenbanken in Ihrer Containerdatenbank definiert.

    Wir empfehlen, Sicherungen und Archivlogs mindestens 4 Tage aufzubewahren. 7 Tage wird empfohlen.

  3. Kehren Sie zur SQL-Eingabeaufforderung des Datenbanktools zurück, das Sie zum Konfigurieren der Rotationsrichtlinie für Oracle-Logdateien verwenden. Wir empfehlen, eine maximale Logdateigröße von maximal 512 MB festzulegen.

  4. Aktivieren Sie zusätzliche Logdaten. Aktivieren Sie dazu zuerst das zusätzliche Logging in der Datenbank auf Containerebene CDB$ROOT, indem Sie den folgenden Befehl ausführen:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    

    Wählen Sie als Nächstes aus, ob das Logging für bestimmte Tabellen oder für die gesamte PDB aktiviert werden soll.

    Wenn Sie Änderungen nur für bestimmte Tabellen protokollieren möchten, stellen Sie eine Verbindung zum einsteckbaren Datenbankcontainer her und führen Sie den folgenden Befehl für jede zu replizierende Tabelle aus:

    ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    

    Ersetzen Sie Folgendes:

    • SCHEMA: der Name des Schemas, das die Tabelle enthält.
    • TABLE: Der Name der Tabelle, für die Sie Änderungen protokollieren möchten.

    Wenn Sie mehrere oder alle Tabellen in Ihrer Datenbank replizieren möchten, sollten Sie das Logging für die gesamte Datenbank aktivieren.

    Führen Sie den folgenden Befehl aus, um zusätzliche Logdaten für die gesamte Datenbank zu aktivieren:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    
  5. Erstellen Sie einen gemeinsamen Nutzer. Ein allgemeiner Nutzer hat dieselbe Identität im CDB$ROOT-Container und in den Plug-in-Datenbanken. Ein allgemeiner Nutzer kann eine Verbindung zum CDB$ROOT-Container und zu jeder Plug-in-Datenbank herstellen, in der er Berechtigungen hat, und Vorgänge darin ausführen. Der gemeinsame Nutzername muss mit C## oder c## beginnen.

  6. Gewähren Sie dem gemeinsamen Nutzer, der für die Verbindung zu Ihrer Datenbank verwendet wird, die entsprechenden Berechtigungen. Auf Container- und Plug-in-Datenbankebene sind unterschiedliche Berechtigungen erforderlich.CDB$ROOT

    • Stellen Sie eine Verbindung zum CDB$ROOT-Container her und führen Sie die folgenden Befehle aus:
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SET CONTAINER TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME;
    GRANT LOGMINING TO USER_NAME;
    GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    
    • Stellen Sie eine Verbindung zur Plug‑in-Datenbank her und führen Sie die folgenden Befehle aus:
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SET CONTAINER TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOG TO USER_NAME; -- for primary databases
    GRANT SELECT ON SYS.V_$STANDY_LOG TO USER_NAME; -- for standby databases
    GRANT SELECT ON SYS.V_$LOGFILE TO USER_NAME;
    GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON DBA_SUPPLEMENTAL_LOGGING TO USER_NAME;
    GRANT SELECT ON SYS.V_$PARAMETER TO USER_NAME;
    
  7. Gewähren Sie dem gemeinsamen Nutzer SELECT Zugriff auf die Ansicht DBA_EXTENTS in Ihrer Datenbank. Mit dieser Berechtigung können Sie den ROWID-basierten Backfill für Ihre Oracle-Quelle verwenden:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
  8. Wenn Ihre Datenbank die transparente Datenverschlüsselung (Transparent Data Encryption, TDE) verwendet, gewähren Sie die folgenden Berechtigungen:

    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;

Nächste Schritte