Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Migration einer Oracle-Datenbank von AWS EC2 zu AWS RDS, Teil 4

Wir untersuchen die Migration einer Oracle-Datenbank von einer EC2-Instance zu einem Managed Service RDS. Im ersten von vier Artikeln, „Migration einer Oracle-Datenbank von AWS EC2 zu AWS RDS, Teil 1“, haben wir Datenbankinstanzen auf EC2 und RDS erstellt. Im zweiten Artikel „Migration einer Oracle-Datenbank von AWS EC2 zu AWS RDS, Teil 2“ haben wir einen IAM-Benutzer für die Datenbankmigration und auch eine zu migrierende Datenbanktabelle erstellt. Nur im zweiten Artikel haben wir eine Replikationsinstanz und Replikationsendpunkte erstellt. Im dritten Artikel „Migration einer Oracle-Datenbank von AWS EC2 zu AWS RDS, Teil 3“ haben wir eine Migrationsaufgabe erstellt, um vorhandene Änderungen zu migrieren. In diesem Folgeartikel migrieren wir laufende Datenänderungen. Dieser Artikel hat die folgenden Abschnitte:

  • Erstellen und Ausführen einer Replikationsaufgabe zum Migrieren laufender Änderungen
  • Zusätzliche Protokollierung hinzufügen
  • Hinzufügen einer Tabelle zu einer Oracle-Datenbankinstanz auf EC2
  • Hinzufügen von Tabellendaten
  • Erkunden der replizierten Datenbanktabelle
  • Daten löschen und neu laden
  • Stoppen und Starten einer Aufgabe
  • Datenbanken löschen
  • Schlussfolgerung

Erstellen und Ausführen einer Replikationsaufgabe zum Migrieren laufender Änderungen

In den folgenden Unterabschnitten werden wir eine Aufgabe erstellen, um laufende Änderungen zu replizieren. Um die fortlaufende Replikation zu demonstrieren, starten wir zuerst die Aufgabe und erstellen anschließend eine Tabelle und fügen Daten hinzu. Löschen Sie die Tabelle DVOHRA.WLSLOG , wie in Abbildung 1 gezeigt; Wir werden dieselbe Tabelle erstellen, um die fortlaufende Replikation zu demonstrieren.


Abbildung 1: Löschen der Tabelle DVOHRA.WLSLOG

Zusätzliche Protokollierung hinzufügen

Datenbankmigrationsdienst erfordert, dass die zusätzliche Protokollierung aktiviert ist, um die Änderungsdatenerfassung (CDC) zu aktivieren, die zum Replizieren laufender Änderungen verwendet wird. Bei der ergänzenden Protokollierung werden Informationen darüber gespeichert, welche Datenzeilen in einer Tabelle geändert wurden. Die zusätzliche Protokollierung fügt zusätzliche oder zusätzliche Spaltendaten in Redo-Protokolldateien hinzu, wenn eine Aktualisierung für eine Tabelle durchgeführt wird. Die geänderten Spalten werden als zusätzliche Daten in Redo-Log-Dateien zusammen mit einem Identifizierungsschlüssel aufgezeichnet, der der Primärschlüssel oder ein eindeutiger Index sein kann. Wenn eine Tabelle keinen Primärschlüssel oder eindeutigen Index hat, werden alle Skalarspalten in den Redo-Log-Dateien aufgezeichnet, um eine Datenzeile eindeutig zu identifizieren, wodurch die Redo-Log-Dateien sehr groß werden könnten. Oracle Database unterstützt die folgenden Arten von zusätzlicher Protokollierung:

  • Minimale zusätzliche Protokollierung: In Redo-Log-Dateien wird nur die minimale Datenmenge aufgezeichnet, die LogMiner für die DML-Änderungen benötigt.
  • Schlüsselprotokollierung zur Identifizierung auf Datenbankebene: Es werden verschiedene Arten der Protokollierung von Identifikationsschlüsseln auf Datenbankebene unterstützt – ALL, PRIMARY KEY, UNIQUE und FOREIGN KEY. Beim ALL-Level werden alle Spalten (außer LOBs, Longs und ADTs) in Redo-Log-Dateien aufgezeichnet. Für PRIMARY KEY werden nur Primärschlüsselspalten in Redo-Log-Dateien gespeichert, wenn eine Zeile, die einen Primärschlüssel enthält, aktualisiert wird; Es ist nicht erforderlich, dass eine Primärschlüsselspalte aktualisiert wird. Die Art FOREIGN KEY speichert nur die Fremdschlüssel einer Zeile in Redo-Log-Dateien, wenn eine der Red-Log-Dateien aktualisiert wird. Die Art UNIQUE speichert nur die Spalten in einem eindeutigen zusammengesetzten Schlüssel oder Bitmap-Index, wenn sich eine Spalte im eindeutigen zusammengesetzten Schlüssel oder Bitmap-Index geändert hat.
  • Zusätzliche Protokollierung auf Tabellenebene: Gibt auf Tabellenebene an, welche Spalten in Redo-Log-Dateien gespeichert werden. Die Protokollierung von Identifikationsschlüsseln auf Tabellenebene unterstützt die gleichen Ebenen wie die Protokollierung von Identifikationsschlüsseln auf Datenbankebene; ALL, PRIMARY KEY, UNIQUE und FOREIGN KEY. Auf Tabellenebene werden auch benutzerdefinierte Zusatzprotokollgruppen unterstützt, mit denen ein Benutzer definieren kann, welche Spalten zusätzlich protokolliert werden sollen. Die benutzerdefinierten zusätzlichen Protokollgruppen können bedingt oder unbedingt sein.

Für die fortlaufende Replikation müssen wir die minimale zusätzliche Protokollierung und die zusätzliche Protokollierung auf Tabellenebene für ALLE Spalten festlegen.

Führen Sie in SQL*Plus die folgende Anweisung aus, um die minimale zusätzliche Protokollierung festzulegen:

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

Die Ausgabe sieht wie folgt aus:

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Database altered.

Führen Sie die folgende Anweisung aus, um den Status der minimalen zusätzlichen Protokollierung zu ermitteln. Und wenn die Ausgabe einen SUPPLEME-Spaltenwert von YES hat, ist die minimale zusätzliche Protokollierung aktiviert.

SQL> SELECT supplemental_log_data_min FROM v$database;

SUPPLEME
--------
YES

Das Einstellen der minimalen zusätzlichen Protokollierung und die Überprüfung der Statusausgabe ist in Abbildung 2 dargestellt.


Abbildung 2: Einstellen und Überprüfen der minimalen zusätzlichen Protokollierung

Wir werden auch die Protokollierung von Identifikationsschlüsseln auf Tabellenebene festlegen, wenn wir Tabellen- und Tabellendaten hinzufügen, um die fortlaufende Replikation zu demonstrieren, nachdem die Aufgabe gestartet wurde. Wenn wir Tabellen und Tabellendaten hinzufügen, bevor wir eine Aufgabe erstellen und starten, können wir keine fortlaufende Replikation nachweisen.

Um eine Aufgabe für die fortlaufende Replikation zu erstellen, klicken Sie auf Aufgabe erstellen , wie in Abbildung 3 gezeigt.


Abbildung 3: Aufgaben>Aufgabe erstellen

In der Aufgabe erstellen Assistenten, geben Sie einen Aufgabennamen und eine Beschreibung ein und wählen Sie die Replikationsinstanz, den Quellendpunkt und den Zielendpunkt aus, wie in Abbildung 4 gezeigt. Wählen Sie Migrationstyp aus als Vorhandene Daten migrieren und laufende Änderungen replizieren .


Abbildung 4: Auswählen des Migrationstyps für die laufende Replikation

Eine in Abbildung 5 gezeigte Meldung weist darauf hin, dass die zusätzliche Protokollierung für die laufende Replikation aktiviert werden muss. Die Meldung soll nicht darauf hinweisen, dass die zusätzliche Protokollierung nicht aktiviert wurde, sondern nur als Erinnerung. Wir haben die zusätzliche Protokollierung bereits aktiviert. Aktivieren Sie das Kontrollkästchen Aufgabe beim Erstellen starten .


Abbildung 5: Nachricht über zusätzliche Protokollierungsanforderungen zum Replizieren laufender Änderungen

Die Aufgabeneinstellungen sind die gleichen wie bei der reinen Migration bestehender Daten (siehe Abbildung 6).


Abbildung 6: Aufgabeneinstellungen

Für Tabellenzuordnungen ist mindestens eine Auswahlregel erforderlich. Fügen Sie eine Auswahlregel hinzu, um alle Tabellen in die DVOHRA aufzunehmen Tabelle, wie in Abbildung 7 gezeigt.


Abbildung 7: Hinzufügen einer Auswahlregel

Die hinzugefügte Auswahlregel ist in Abbildung 8 dargestellt.


Abbildung 8: Auswahlregel

Klicken Sie auf Aufgabe erstellen um die Aufgabe zu erstellen, wie in Abbildung 9 gezeigt.


Abbildung 9: Aufgabe erstellen

Eine neue Aufgabe mit dem Status Wird erstellt wird hinzugefügt , wie in Abbildung 10 gezeigt.


Abbildung 10: Aufgabe hinzugefügt mit Status Wird erstellt

Wenn die Auswahl- und Transformationsregeln für alle vorhandenen Daten angewendet und Daten migriert wurden, lautet der Aufgabenstatus Laden abgeschlossen, Replikation läuft (siehe Abbildung 11).


Abbildung 11: Laden abgeschlossen, Replikation läuft

Die Tabellenstatistik tab listet keine Tabellen als migriert oder repliziert auf, wie in Abbildung 12 gezeigt.


Abbildung 12: Tabellenstatistik

Um die CloudWatch-Protokolle zu durchsuchen, klicken Sie auf Protokolle Registerkarte und klicken Sie auf den Link, wie in Abbildung 13 gezeigt.


Abbildung 13: Protokolle

Die CloudWatch-Protokolle werden angezeigt, wie in Abbildung 14 gezeigt. Der letzte Eintrag in den Protokollen betrifft das Starten der Replikation. Die laufende Replikationstask wird nach dem Laden vorhandener Daten, falls vorhanden, nicht beendet, sondern läuft weiter.


Abbildung 14: CloudWatch-Protokolle

Hinzufügen einer Tabelle zu einer Oracle-Datenbankinstanz auf EC2

Erstellen Sie als Nächstes eine Tabelle und fügen Sie Tabellendaten hinzu, um die fortlaufende Replikation zu demonstrieren. Führen Sie die folgenden beiden Anweisungen zusammen aus, damit die zusätzliche Protokollierung auf Tabellenebene festgelegt wird, wenn die Tabelle erstellt wird. Ändern Sie das Skript, um das Schema anders zu gestalten.

CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,
   category VARCHAR2(255),type VARCHAR2(255),servername
   VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255));
alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns;

Die zusätzliche Protokollierung auf Tabellenebene wird festgelegt, wenn die Tabelle erstellt wird.

SQL> CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255)
   PRIMARY KEY,category VARCHAR2(255),type VARCHAR2(255),servername
   VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255));
alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns;
Table created.
SQL>
Table altered.

Die Ausgabe wird in SQL*Plus in Abbildung 15 gezeigt.


Abbildung 15: Tabelle erstellen und Zusatzprotokollierung einstellen

Bisher haben wir nur die Tabelle erstellt und keine Tabellendaten hinzugefügt. Die DDL für die Tabelle wird migriert, wie in den Tabellenstatistiken in Abbildung 16 angegeben.


Abbildung 16: DDLs für migrierte Tabellen

Hinzufügen von Tabellendaten

Führen Sie als Nächstes das folgende SQL-Skript aus, um der erstellten Tabelle Daten hinzuzufügen. Ändern Sie das Skript, um das Schema anders zu gestalten.

SQL> INSERT INTO DVOHRA.wlslog(time_stamp,category,type,
   servername,code,msg) VALUES('Apr-8-2014-7:06:16-PM-PDT',
   'Notice','WebLogicServer','AdminServer','BEA-000365','Server
   state changed to STANDBY');
INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,
   code,msg) VALUES('Apr-8-2014-7:06:17-PM-PDT','Notice',
   'WebLogicServer','AdminServer','BEA-000365','Server state
   changed to STARTING');
INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,
   code,msg) VALUES('Apr-8-2014-7:06:18-PM-PDT','Notice',
   'WebLogicServer','AdminServer','BEA-000365','Server state
   changed to ADMIN');
INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,code,
   msg) VALUES('Apr-8-2014-7:06:19-PM-PDT','Notice',
   'WebLogicServer','AdminServer','BEA-000365','Server state
   changed to RESUMING');
INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,code,
   msg) VALUES('Apr-8-2014-7:06:20-PM-PDT','Notice',
   'WebLogicServer','AdminServer','BEA-000361','Started WebLogic
   AdminServer');
INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,code,
   msg) VALUES('Apr-8-2014-7:06:21-PM-PDT','Notice',
   'WebLogicServer','AdminServer','BEA-000365','Server state
   changed to RUNNING');

1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL>
1 row created.

Führen Sie anschließend die Commit-Anweisung aus.

SQL> COMMIT;
Commit complete.

Erkunden der replizierten Datenbanktabelle

Die Tabellenstatistik listet Einfügungen als Anzahl der hinzugefügten Datenzeilen auf, wie in Abbildung 17 gezeigt.


Abbildung 17: Tabellenstatistikliste 6 Einsätze

Die Aufgabe wird nach dem Replizieren laufender Änderungen weiter ausgeführt. Fügen Sie eine weitere Datenzeile hinzu.

SQL> INSERT INTO DVOHRA.wlslog(time_stamp,category,type,
   servername,code,msg) VALUES('Apr-8-2014-7:06:22-PM-PDT',
   'Notice','WebLogicServer','AdminServer','BEA-000360','Server
   started in RUNNING mode');

1 row created.
SQL> COMMIT;

Commit complete.

SQL>

Klicken Sie auf Daten aktualisieren vom Server, wie in Abbildung 18 gezeigt.


Abbildung 18: Daten vom Server aktualisieren

Die Gesamtzahl der Inserts in Table-Statistiken beträgt 7, wie in Abbildung 19 gezeigt.


Abbildung 19: Tabellenstatistik mit Einfügungen als 7

Daten löschen und neu laden

Um Tabellendaten zu löschen und neu zu laden, klicken Sie auf Tabellendaten löschen und neu laden , wie in Abbildung 20 gezeigt.


Abbildung 20: Tabellendaten löschen und neu laden

Klicken Sie auf Daten vom Server aktualisieren (siehe Abbildung 21).


Abbildung 21: Daten vom Server aktualisieren

Das Symbol und Status Spalte für die Tabelle gibt an, dass die Tabelle neu geladen wird, wie in Abbildung 22 gezeigt.


Abbildung 22: Tabelle wird neu geladen

Wenn das Neuladen der Tabelle abgeschlossen ist, wird die Statusspalte der Tabelle zu Tabelle abgeschlossen , wie in Abbildung 23 gezeigt. Nach dem erneuten Laden der Tabellendaten werden die Full Load Rows zeigt einen Wert von 7 und Inserts ist 0, da ein Reload keine fortlaufende Replikation ist, sondern ein vollständiger Ladevorgang.

Abbildung 23: Neuladen der Tabelle abgeschlossen

Da die Tabellendaten gelöscht und neu geladen werden und sich die Quelltabellendaten nicht geändert haben, enthalten die CloudWatch-Protokolle eine Meldung „Einige Änderungen aus der Quelldatenbank hatten keine Auswirkungen, als sie auf die Zieldatenbank angewendet wurden“, wie in Abbildung 24 gezeigt. P>


Abbildung 24: Einige Änderungen aus der Quelldatenbank hatten keine Auswirkungen, als sie auf die Zieldatenbank angewendet wurden

Beim Neuladen der DVOHRA.wlslog Tabelle abgeschlossen ist, wird die Meldung „Laden für Tabelle DVOHRA.wlslog abgeschlossen. 7 Zeilen empfangen“ wird angezeigt, wie in Abbildung 25 gezeigt.


Abbildung 25: CloudWatch-Protokollnachricht für den Abschluss des Ladevorgangs

Stoppen und Starten einer Aufgabe

Eine Aufgabe des Typs, der eine laufende Replikation umfasst, wird nicht von selbst angehalten, es sei denn, es tritt ein Fehler auf. Um die Aufgabe zu stoppen, klicken Sie auf Stop (siehe Abbildung 26).


Abbildung 26: Anhalten einer Aufgabe

In der Aufgabe stoppen Klicken Sie im Dialogfeld auf Stopp , wie in Abbildung 27 gezeigt.


Abbildung 27: Bestätigungsdialog zum Beenden einer Aufgabe

Der Aufgabenstatus wird zu Wird gestoppt , wie in Abbildung 28 gezeigt.


Abbildung 28: Stoppen einer Aufgabe

Wenn eine Aufgabe angehalten wird, ändert sich der Status zu Gestoppt , wie in Abbildung 29 gezeigt.


Abbildung 29: Aufgabe gestoppt

Um eine angehaltene Aufgabe zu starten, klicken Sie auf Starten/Fortsetzen , wie in Abbildung 30 gezeigt.


Abbildung 30: Eine Aufgabe starten oder fortsetzen

In der Aufgabe starten klicken Sie auf Start um die Aufgabe vom gestoppten Punkt aus zu starten (siehe Abbildung 31). Die andere Möglichkeit besteht darin, die Aufgabe neu zu starten.


Abbildung 31: Starten der Aufgabe nach dem Stoppen

Der Aufgabenstatus wird zu Wird gestartet , wie in Abbildung 32 gezeigt.


Abbildung 32: Aufgabe starten

Wenn die Migration vorhandener Daten abgeschlossen ist, wird die Aufgabe mit dem Status Laden abgeschlossen, Replikation läuft weiter ausgeführt , wie in Abbildung 33 gezeigt.


Abbildung 33: Laden abgeschlossen, Replikation läuft

Datenbanken löschen

Die RDS-DB-Instance kann mit Instance Actions>Delete gelöscht werden Befehl. Die Oracle-Datenbank auf der EC2-Instance kann mit Actions>Instance State>Stop gestoppt werden , wie in Abbildung 34 gezeigt.


Abbildung 34: Anhalten der EC2-Instanz

Schlussfolgerung

In vier Artikeln haben wir die Migration einer Oracle-Datenbank von AWS EC2 zu AWS RDS besprochen.