Übersicht
Database Migration Service unterstützt kontinuierliche Migrationen von Quelldatenbanken zu AlloyDB for PostgreSQL-Zieldatenbanken.
Zu den unterstützten Quelldatenbanken für Oracle gehören folgende Versionen:
- Oracle 11g, Version 11.2.0.4
- Oracle 12c, Version 12.1.0.2
- Oracle 12c, Version 12.2.0.1
- Oracle 18c
- Oracle 19c
- Oracle 21c
- Oracle Real Application Clusters (RAC)
Der Database Migration Service nutzt die Oracle LogMiner API, die Teil der Oracle-Datenbank ist, um archivierte Redo-Logdateien abzufragen. Redo-Logdateien enthalten Informationen zum Verlauf der Aktivitäten in einer Datenbank. Weitere Informationen zur Funktionsweise von Database Migration Service mit diesen Logdateien finden Sie unter Datenfluss bei Oracle-Migrationen.
Oracle-Quelldatenbank konfigurieren
Bevor Sie Database Migration Service zum Abrufen von Daten aus der Oracle-Quelldatenbank verwenden können, müssen Sie Ihre Datenbank so konfigurieren:
Richten Sie Archivierungs-Logging ein, um Änderungen in der Datenbank zu verfolgen, z. B. die Vorgänge
INSERT
,UPDATE
,DELETE
undRENAME
.Gewähren Sie dem Nutzerkonto, mit dem Sie eine Verbindung zu Ihrer Datenbank herstellen und auf Schema- und Codeobjekte zugreifen, die entsprechenden Berechtigungen.
Standardmäßig versucht der Database Migration Service, über DBA_VIEWS auf alle Objektdefinitionen zuzugreifen. Der Zugriff auf
DBA_VIEWS
wird mit der BerechtigungSELECT ANY DICTIONARY
gewährt. Wenn das Migrationsnutzerkonto nicht auf DBA-Ansichten zugreifen kann, greift der Database Migration Service auf ALL_VIEWS zurück. Dieser Ansatz bietet Ihnen die größte Flexibilität bei der Definition eines Sicherheitsmodells, das Ihren Anforderungen am besten entspricht.Wenn der Database Migration Service nur auf einen bestimmten Teil Ihrer Objektdefinitionen zugreifen soll, weisen Sie dem Migrationsnutzer anstelle von
SELECT ANY DICTIONARY
eine Rolle mit einer detaillierteren Berechtigungskonfiguration zu.Definieren Sie eine Datenaufbewahrungsrichtlinie für Ihre Datenbank, um unter anderem zu bestimmen, welche Daten archiviert werden, wie lange sie aufbewahrt werden sollen und ob die Daten am Ende der Aufbewahrungsdauer archiviert oder gelöscht werden.
Der Database Migration Service funktioniert derzeit mit den folgenden Arten von Oracle-Datenbanken:
Amazon RDS für Oracle-Datenbank konfigurieren
Prüfen Sie, ob die Datenbank im Modus
ARCHIVELOG
ausgeführt wird. Dazu führen Sie den folgenden Befehl aus:SELECT LOG_MODE FROM V$DATABASE;
Wenn das Ergebnis
ARCHIVELOG
ist, fahren Sie mit Schritt c fort.Wenn das Ergebnis
NOARCHIVELOG
ist, müssen Sie denARCHIVELOG
-Modus für Ihre Datenbank aktivieren.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 Informationsverfügbarkeit und Speicherplatz verwalten.
Führen Sie den folgenden Befehl aus, um eine Datenaufbewahrungsrichtlinie für die Datenbank zu definieren:
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
Wir empfehlen, Sicherungen und Archivlogs mindestens 4 Tage aufzubewahren. 7 Tage wird empfohlen.
Konfigurieren Sie die Rotationsrichtlinie für Oracle-Logdateien. Wir empfehlen, eine maximale Logdateigröße von maximal 512 MB festzulegen. Weitere Informationen zum Verwalten der Protokollauslagerung finden Sie unter Mit Redo-Logdateien der Oracle-Datenbank arbeiten.
Aktivieren Sie zusätzliche Logdaten. Aktivieren Sie dazu zuerst das zusätzliche Logging in der Datenbank, indem Sie den folgenden Befehl ausführen:
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
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 an der SQL-Eingabeaufforderung den folgenden Befehl aus, um zusätzliche Logdaten für die gesamte Datenbank zu aktivieren:
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
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 CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','USER_NAME','EXECUTE'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','USER_NAME','EXECUTE'); GRANT SELECT ANY TRANSACTION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
Wenn Ihre Quelldatenbank Oracle 12c oder höher ist, gewähren Sie die folgende zusätzliche Berechtigung:
GRANT LOGMINING TO USER_NAME;
Selbst gehostete Oracle-Datenbank konfigurieren
Prüfen Sie, ob die Datenbank im Modus
ARCHIVELOG
ausgeführt wird. Dazu führen Sie 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 Informationsverfügbarkeit und Speicherplatz verwalten.
Legen Sie mit dem folgenden Befehl des Oracle Recovery Manager (RMAN) eine Datenaufbewahrungsrichtlinie für Ihre Datenbank fest:
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 zusätzliche Logging in der Datenbank, 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 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 SELECT ON SYS.V_$LOGMNR_LOGS 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; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
Wenn Ihre Quelldatenbank Oracle 12c oder höher ist, gewähren Sie die folgende zusätzliche Berechtigung:
GRANT LOGMINING TO USER_NAME;
Selbst gehostete Oracle-Plug-in-Datenbank konfigurieren
Der Database Migration Service unterstützt die mehrmandantenfähige Architektur von Oracle, bei der eine einzelne Containerdatenbank (CDB) eine oder mehrere Plug-in-Datenbanken (PDBs) enthält. Jede Plug-in-Datenbank ist eine eigenständige Datenbank mit einer eindeutigen ID und einem eindeutigen Namen und kann unabhängig verwaltet werden.
So konfigurieren Sie eine selbst gehostete Oracle-Plug-in-Datenbank, damit Sie sie mit Database Migration Service verwenden können:
Prüfen Sie, ob die Datenbank im Modus
ARCHIVELOG
ausgeführt wird. Führen Sie dazu den folgenden Befehl im ContainerCDB$ROOT
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 Informationsverfügbarkeit und Speicherplatz verwalten.
Legen Sie mit dem folgenden Befehl des Oracle Recovery Manager (RMAN) eine Datenaufbewahrungsrichtlinie für Ihre Datenbank fest:
CDB$ROOT
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 zusätzliche Logging in der Datenbank auf
CDB$ROOT
-Ebene, 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 Plug-in-Datenbank aktiviert werden soll.
Wenn Sie Änderungen nur für bestimmte Tabellen protokollieren möchten, stellen Sie eine Verbindung zum Pluggable Database Container her und führen Sie für jede zu replizierende Tabelle den folgenden Befehl 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 Ä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;
Erstellen Sie einen gemeinsamen Nutzer. Ein allgemeiner Nutzer hat dieselbe Identität im
CDB$ROOT
-Container und in den Plug-in-Datenbanken. Ein normaler Nutzer kann eine Verbindung zum Stammverzeichnis und zu jeder Plug-in-Datenbank herstellen und Vorgänge darin ausführen, für die er Berechtigungen hat. Der gemeinsame Nutzername muss mitC##
oderc##
beginnen.Gewähren Sie dem gemeinsamen Nutzer, mit dem Sie die Verbindung zu Ihrer Datenbank herstellen, die entsprechenden Berechtigungen. Auf
CDB$ROOT
-Container- und Pluggable Database-Ebene sind unterschiedliche Berechtigungen erforderlich.Stellen Sie eine Verbindung zum Container
CDB$ROOT
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 ANY DICTIONARY 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 DBA_SUPPLEMENTAL_LOGGING TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;