Sie können Ihre selbstverwaltete Oracle-Datenbank so konfigurieren, dass sie mit den folgenden CDC-Methoden funktioniert:
Mit diesen Methoden wird festgelegt, wie Datastream auf Ihre Protokolldateien zugreift. Weitere Informationen zum Binärprotokollleser 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.
Selbst verwaltete Oracle-Datenbank für Binärlog-Leseprogramm konfigurieren
So konfigurieren Sie Ihre selbstverwaltete Oracle-Datenbank für die Verwendung mit der CDC-Methode des Binärprotokolllesegeräts:
Wählen Sie eine der folgenden Methoden aus, um auf Ihre Protokolldateien zuzugreifen:
- Automatic Storage Management (ASM): Wenn Sie diese Option auswählen, müssen Sie eine spezielle ASM-Verbindung erstellen und die entsprechenden Details angeben, wenn Sie das Verbindungsprofil erstellen.
- Datenbankverzeichnisse: Wenn Sie diese Option auswählen, müssen Sie Datenbankverzeichnisobjekte erstellen, die auf die Protokolldateien für die Wiederherstellung und die archivierten Protokolldateien 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-Transaktionsprotokolldateien.
- DIRECTORY_NAME_2: der Name des Verzeichnisses für die archivierten Protokolldateien für die Wiederherstellung.
- ONLINE_REDO_LOGS_PATH: der Pfad zum Verzeichnis, in dem die Online-Transaktionsprotokolldateien gespeichert werden sollen.
- ARCHIVED_REDO_LOGS_PATH: Der Pfad zum Verzeichnis, in dem die archivierten Protokolldateien gespeichert werden sollen.
- USER_NAME: der Name des Datenbanknutzers, dem Sie
READ
-Zugriff gewähren möchten.
Wenn Sie die Methode „Binary Log Reader“ auswählen und Datenbankverzeichnisse verwenden, müssen Sie beim Erstellen des Streams die Namen der Verzeichnisse für das Protokoll mit den rückgängig zu machenden Änderungen und das archivierte Protokoll angeben.
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;
- Wenn das Ergebnis
ARCHIVELOG
ist, fahren Sie mit dem nächsten Schritt fort. - Wenn das Ergebnis
NOARCHIVELOG
ist, müssen Sie denARCHIVELOG
-Modus für Ihre Datenbank aktivieren. Führen Sie die folgenden Befehle aus, wenn Sie als
SYSDBA
angemeldet sind:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
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 einem Speicherplatzmangel und dem Absturz des Streams aufgrund des Verlusts der Protokollposition verwalten.
- Wenn das Ergebnis
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.
Kehren Sie zum SQL-Prompt des Datenbanktools zurück, mit dem Sie die Rotationsrichtlinie für Oracle-Logdateien konfigurieren. Wir empfehlen, eine maximale Logdateigröße von maximal 512 MB festzulegen.
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 Änderungen protokolliert werden sollen.
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;
Gewähren Sie dem Nutzerkonto die entsprechenden Berechtigungen, mit dem Sie die Verbindung zu Ihrer Datenbank herstellen. Dazu müssen Sie folgende Befehle ausführen:
rdsadmin.rdsadmin_util.grant_sys_object('GV_$LOG','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$LOGFILE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$ARCHIVED_LOG','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$INSTANCE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$PDBS','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSPORTABLE_PLATFORM','USER_NAME',
'SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('GV_$STANDBY_LOG','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('COL$','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES','USER_NAME','SELECT'); rdsadmin.rdsadmin_util.grant_sys_object('DBA_ENCRYPTED_COLUMNS','USER_NAME','SELECT'); 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, mit dem Sie eine Verbindung zu Ihrer Datenbank herstellen möchten.
Selbst verwaltete Oracle-Datenbank für LogMiner konfigurieren
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;
- Wenn das Ergebnis
ARCHIVELOG
ist, fahren Sie mit Schritt 2 fort. - Wenn das Ergebnis
NOARCHIVELOG
ist, müssen Sie denARCHIVELOG
-Modus für Ihre Datenbank aktivieren. Führen Sie die folgenden Befehle aus, wenn Sie als
SYSDBA
angemeldet sind:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
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 einem Speicherplatzmangel und dem Absturz des Streams aufgrund des Verlusts der Protokollposition verwalten.
- Wenn das Ergebnis
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.
Kehren Sie zum SQL-Prompt des Datenbanktools zurück, mit dem Sie die Rotationsrichtlinie für Oracle-Logdateien konfigurieren. Wir empfehlen, eine maximale Logdateigröße von maximal 512 MB festzulegen.
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 Änderungen protokolliert werden sollen.
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;
Gewähren Sie dem Nutzerkonto die entsprechenden Berechtigungen, mit dem Sie die Verbindung zu Ihrer Datenbank herstellen. Dazu müssen Sie folgende Befehle ausführen:
GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$ARCHIVED_LOG 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 SELECT ANY TRANSACTION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME;
Wenn in Ihrer Organisation die
GRANT SELECT ANY TABLE
-Berechtigung nicht gewährt werden darf, verwenden Sie die Lösung, die im Abschnitt Oracle Change Data Capture (CDC) auf der Seite mit den FAQs zu Datastream beschrieben wird.Wenn Ihre Quelldatenbank Oracle 12c oder höher ist, gewähren Sie die folgende zusätzliche Berechtigung:
GRANT LOGMINING TO USER_NAME;
Gewähren Sie dem Nutzerkonto
SELECT
Zugriff auf die AnsichtDBA_EXTENTS
in Ihrer Datenbank. Mit diesem Berechtigung können Sie dasROWID
-basierte Backfill für Ihre Oracle-Quelle verwenden:GRANT SELECT ON DBA_EXTENTS TO USER_NAME;