Aggiornare ed eseguire la migrazione del database nel cloud

Utilizzando questa procedura di migrazione diretta a singolo passo, è possibile eseguire la migrazione del database in locale in Oracle Cloud Infrastructure con un tempo di inattività pressoché pari a zero e contemporaneamente aggiornare il database alla versione più recente. Questa procedura di migrazione riduce i costi, il tempo di migrazione end-to-end e lo sforzo di test necessario per eseguire la migrazione di un database.

Aggiorna a Oracle Database 18c

Ripristinare il backup RMAN del database di origine 11.2.0.3 nella Oracle home 18c ed eseguire l'aggiornamento a Oracle Database 18c.

Con Oracle Database Exadata Cloud Service si presume che il database contenitore di destinazione sia già stato creato. Il backup eseguito dal database in locale viene aggiornato alla versione 18c e collegato come database collegabile in questo contenitore creato in precedenza. Sebbene il backup del database in locale sia 11.2.0.3, è possibile ripristinarlo in una home DB 18c su Oracle Database Exadata Cloud Service.

Usa l'SCN acquisito dal backup RMAN di origine durante la definizione di Set until SCN. Ciò garantisce che il database venga ripristinato in un determinato momento. Si tratta inoltre del punto di partenza per l'applicazione dei delta di modifica da Oracle GoldenGate.

  1. Ripristinare il backup RMAN del database di origine 11.2.0.3 nella Oracle home 18c.

    Ripristinare solo il database. Non aprire il database dopo il ripristino e il recupero. Questo perché si desidera aggiornare il database alla versione 18c.

    Quando si esegue il comando RMAN, il valore di Set until SCN corrisponde all'SCN acquisito dal backup RMAN di origine.

    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. Aggiornare a Oracle Database versione 18c.

    Aprire il database con l'opzione upgrade ed eseguire il comando dbupgrade.

    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. Verificare la versione del fuso orario eseguendo l'istruzione riportata di seguito nel contenitore di destinazione.
    SQL> select * from v$timezone_file;
    
    FILENAME                VERSION     CON_ID
    -------------------- ---------- ----------
    timezlrg_31.dat              31          0
  4. Se il fuso orario del database di origine non è quello più recente, aggiornare il fuso orario del database aggiornato all'ultimo fuso orario nel database cloud.
    Ad esempio, se il fuso orario del database di origine è 14, deve essere aggiornato alla versione più recente del fuso orario nel cloud.

Convertire il database in un database contenitore

Collega il database non contenitore al contenitore di destinazione come database collegabile (PDB).

Dopo l'aggiornamento del fuso orario, il database non contenitore è pronto per essere collegato come database collegabile nel contenitore di destinazione. Poiché la dimensione del database è di grandi dimensioni, è possibile creare il PDB utilizzando la clausola NOCOPY. Quando si utilizza la clausola NOCOPY, lo stesso set di file di dati che appartengono a un database non di contenimento viene riscritto nel database collegabile invece di eseguire un'operazione di copia. Ciò consente di risparmiare tempo e spazio per i database di grandi dimensioni.

Il database non conforme deve essere in modalità READ ONLY per l'operazione di plugin.
  1. Generare un file descrittore di database collegabile (PDB) nel database non di gestione.
    SQL> alter database open read only;
    SQL>BEGIN
    DBMS_PDB.DESCRIBE(pdb_descr_file => '/tmp/bildb.xml');
    END;
    /
    SQL> shutdown immediate
    
  2. Creare un database collegabile nel contenitore di database non contenitore e modificare la sessione.
    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. Aggiornare medata.
    SQL> @/u01/app/oracle/product/18.0.0.0/dbhome_1/rdbms/admin/noncdb_to_pdb.sql

Sincronizza con l'origine

Avviare la sincronizzazione delle modifiche nel database di destinazione per applicare i delta delle modifiche ed eseguire la migrazione dei dati.

Dopo il ripristino e il collegamento del database come database collegabile nel contenitore di destinazione, il caricamento iniziale per Oracle GoldenGate è stato completato. Avvia la sincronizzazione delle modifiche dallo stesso SCN acquisito durante il backup RMAN eseguito dal database di origine.

  1. Avviare il comando replicat sul database di destinazione per la sincronizzazione delle modifiche
    GGSCI (mlib-gghubtgt) 2> START REPLICAT rep18c, ATCSN 2579195632075
    Dopo aver avviato la replica, le modifiche dal database in locale verranno applicate a Oracle Database 18c su Oracle Cloud Infrastructure.
  2. Per il cutover, si consiglia di creare un percorso di replica inverso da Oracle Database 18c nel cloud a Oracle Database 11.2.0.3 in locale. Dopo il cutover, il percorso di replica inverso deve essere abilitato per consentire il flusso delle transazioni dal database cloud al database 11.2.0.3 in locale.