Datenbank upgraden und in die Cloud migrieren

Mit dieser Vorgehensweise der direkten Migration können Sie Ihre On-Premise-Datenbank mit nahezu keiner Ausfallzeit in Oracle Cloud Infrastructure migrieren und gleichzeitig ein Upgrade der Datenbank auf die neueste Version durchführen. Diese Migrationsprozedur reduziert die Zeit für die Migration von Kosten, End-to-End-Migration und den für die Migration einer Datenbank erforderlichen Testaufwand.

Upgrade auf Oracle Database 18c

Stellen Sie das RMAN-Backup der Quelldatenbank 11.2.0.3 unter 18c Oracle Home wieder her, und nehmen Sie ein Upgrade auf Oracle Database 18c vor.

Bei Oracle Database Exadata Cloud Service wird davon ausgegangen, dass die Zielcontainerdatenbank bereits erstellt ist. Das Backup der On-Premise-Datenbank wird auf 18c upgegradet und als integrierbare Datenbank (PDB) in diesem bereits erstellten Container integriert. Obwohl das On-Premise-Datenbankbackup 11.2.0.3 ist, können Sie es in einem 18c DB-Home in Oracle Database Exadata Cloud Service wiederherstellen.

Verwenden Sie die aus dem RMAN-Quellbackup erfasste SCN, wenn Sie Set until SCN definieren. Dadurch wird sichergestellt, dass die Datenbank bis zu einem bestimmten Zeitpunkt wiederhergestellt wird. Dies ist auch der Ausgangspunkt, um mit der Anwendung unserer Änderungsdeltasn aus Oracle GoldenGate zu beginnen.

  1. Stellen Sie das RMAN-Backup der Quelldatenbank 11.2.0.3 unter dem Oracle Home 18c wieder her.

    Stellen Sie nur die Datenbank wieder her. Datenbank nach Zurückschreiben und Recovery nicht öffnen. Dies liegt daran, dass wir unsere Datenbank auf 18c upgraden möchten.

    Bei der Ausführung des RMAN-Befehls ist der Wert für Set until SCN die SCN, die aus dem RMAN-Quellbackup erfasst wurde.

    RMAN> restore controlfile from '/rman_backups/cntrl_882_1_1005936032';
    
    RMAN> alter database mount;
    SQL "alter database rename file ''/oradata/bildb/bildb/onlinelog/thread1/redo1_1.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb_mirr/bildb/onlinelog/thread1/redo1_2.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb/bildb/onlinelog/thread1/redo2_1.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb_mirr/bildb/onlinelog/thread1/redo2_2.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb/bildb/onlinelog/thread1/redo3_1.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb_mirr/bildb/onlinelog/thread1/redo3_2.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb/bildb/onlinelog/thread1/redo30_1.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb_mirr/bildb/onlinelog/thread1/redo30_2.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb/bildb/onlinelog/thread1/redo31_1.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb_mirr/bildb/onlinelog/thread1/redo31_2.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb/bildb/onlinelog/thread1/redo32_1.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb_mirr/bildb/onlinelog/thread1/redo32_2.log'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb/bildb/onlinelog/thread1/redo40_1.dbf'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb_mirr/bildb/onlinelog/thread1/redo40_2.dbf'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb/bildb/onlinelog/thread1/redo41_1.dbf'' to ''+RECOC1''";
    SQL "alter database rename file ''/oradata/bildb_mirr/bildb/onlinelog/thread1/redo41_2.dbf'' to ''+RECOC1''";
    
    RMAN> run
    {
    allocate channel ch1 type DISK ;
    allocate channel ch24 type DISK ;
    set until scn 2579195632075;
    set newname for database to '+DATAC1';
    restore database;
    switch datafile all;
    switch tempfile all;
    recover database;
    release channel ch1;
    release channel ch24;
    }
    
  2. Upgrade auf Oracle Database Version 18c.

    Öffnen Sie die Datenbank mit der Option upgrade, und führen Sie den Befehl dbupgrade aus.

    SQL> alter database open resetlogs upgrade
    $ORACLE_HOME/bin/dbupgrade -n 20
    SQL> @?/rdbms/admin/utlu122s.sql
    SQL> @?/rdbms/admin/catuppst.sql 
    SQL> @?/rdbms/admin/utlrp.sql
    
  3. Überprüfen Sie die Zeitzonenversion, indem Sie die folgende Anweisung im Zielcontainer ausführen.
    SQL> select * from v$timezone_file;
    
    FILENAME                VERSION     CON_ID
    -------------------- ---------- ----------
    timezlrg_31.dat              31          0
  4. Wenn die Zeitzone der Quelldatenbank nicht die neueste Zeitzone ist, aktualisieren Sie die Zeitzone der upgegradeten Datenbank auf die neueste Zeitzone in der Clouddatenbank.
    Beispiel: Wenn die Zeitzone der Quelldatenbank 14 ist, muss sie auf die neueste Zeitzonenversion in der Cloud aktualisiert werden.

Datenbank in eine Containerdatenbank konvertieren

Die Nicht-Containerdatenbank als integrierbare Datenbank (PDB) in den Zielcontainer integrieren.

Nachdem die Zeitzone aktualisiert wurde, kann die Nicht-Containerdatenbank als integrierbare Datenbank im Zielcontainer integriert werden. Da die Datenbankgröße sehr groß ist, können Sie die PDB mit der NOCOPY-Klausel erstellen. Wenn Sie die NOCOPY-Klausel verwenden, wird dieselbe Gruppe mit Datendateien, die zu einer Nicht-Containerdatenbank gehören, erneut in die integrierbare Datenbank aufgenommen, anstatt einen Kopiervorgang auszuführen. Dadurch sparen Sie Zeit und Speicherplatz für weniger Datenbanken.

Die Nicht-Containerdatenbank muss sich im READ ONLY-Modus für den Plug-in-Vorgang befinden.
  1. Generieren Sie eine Deskriptordatei für eine integrierbare Datenbank (PDB) in der Nicht-Containerdatenbank.
    SQL> alter database open read only;
    SQL>BEGIN
    DBMS_PDB.DESCRIBE(pdb_descr_file => '/tmp/bildb.xml');
    END;
    /
    SQL> shutdown immediate
    
  2. Erstellen Sie eine PDB im Nicht-Container der Datenbank, und ändern Sie die Session.
    SQL> SET SERVEROUTPUT ON;
    DECLARE
    compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file => '/tmp/bildb.xml')
    WHEN TRUE THEN 'YES'
    ELSE 'NO'
    END;
    BEGIN
    DBMS_OUTPUT.PUT_LINE(compatible);
    END;
    /
    SQL> CREATE PLUGGABLE DATABASE bildb USING '/tmp/bildb.xml' SOURCE_FILE_NAME_CONVERT=('+DATA/bildb/DATAFILE','+DATA/bildb/DATAFILE','+DATA/bildb/TEMPFILE','+DATA/bildb/TEMPFILE') NOCOPY TEMPFILE REUSE;
    Pluggable database created.
    SQL>
    
    SQL> alter session set container=bildb;
    Session altered.
    
    SQL> show con_name
    CON_NAME
    ------------------------------
    BILDB
  3. Aktualisieren Sie die Media.
    SQL> @/u01/app/oracle/product/18.0.0.0/dbhome_1/rdbms/admin/noncdb_to_pdb.sql

Mit Quelle synchronisieren

Starten Sie die Änderungssynchronisierung in der Zieldatenbank, um Änderungsdeltasn anzuwenden und die Daten zu migrieren.

Nachdem die Datenbank wiederhergestellt und als integrierbare Datenbank im Zielcontainer angeschlossen wurde, ist die anfängliche Belastung für Oracle GoldenGate abgeschlossen. Starten Sie die Änderungssynchronisierung von derselben SCN, die Sie während des RMAN-Backups erfasst haben, das aus der Quelldatenbank übernommen wurde.

  1. Starten Sie den Befehl replicat in der Zieldatenbank für die Änderungssynchronisierung
    GGSCI (mlib-gghubtgt) 2> START REPLICAT rep18c, ATCSN 2579195632075
    Nach dem Starten der Replikation werden die Änderungen der On-Premise-Datenbank auf Oracle Database 18c in Oracle Cloud Infrastructure angewendet.
  2. Daher wird empfohlen, einen umgekehrten Replikationspfad von einem Oracle Database 18c in der Cloud zu einem lokalen Oracle Database 11.2.0.3 zu erstellen. Nach dem Cutover muss der umgekehrte Replikationspfad aktiviert werden, damit Transaktionen von der Clouddatenbank in die On-Premise-11.2.0.3-Datenbank übertragen werden können.