Skip to main content
NetApp Solutions
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Migrazione del database dal cloud on-premise al cloud Azure

Collaboratori

In seguito alla decisione di Oracle di eliminare gradualmente i database a singola istanza, molte organizzazioni hanno convertito i database Oracle a singola istanza in database container multi-tenant. In questo modo è possibile spostare facilmente un sottoinsieme di database container chiamato PDB nel cloud con l'opzione di massima disponibilità, riducendo al minimo i tempi di inattività durante la migrazione.

Tuttavia, se si dispone ancora di una singola istanza di un database Oracle, è possibile prima convertirla in un database container multi-tenant in uso prima di tentare il trasferimento di PDB.

Le sezioni seguenti forniscono dettagli sulla migrazione dei database Oracle on-premise nel cloud Azure in entrambi gli scenari.

Conversione di una singola istanza non CDB in una PDB in una CDB multi-tenant

Se si dispone ancora di un database Oracle a istanza singola, è necessario convertirlo in un database container multi-tenant, sia che si desideri migrare nel cloud o meno, perché Oracle smetterà di supportare i database a istanza singola a breve.

Le seguenti procedure collegano un database a singola istanza in un database container come database collegabile o PDB.

  1. Creare un database di container shell sullo stesso host del database a istanza singola in un database separato ORACLE_HOME.

  2. Arrestare il database a singola istanza e riavviarlo in modalità di sola lettura.

  3. Eseguire DBMS_PDB.DESCRIBE procedura per generare i metadati del database.

    BEGIN
      DBMS_PDB.DESCRIBE(
        pdb_descr_file => '/home/oracle/ncdb.xml');
    END;
    /
  4. Chiudere il database a istanza singola.

  5. Avviare il database container.

  6. Eseguire DBMS_PDB.CHECK_PLUG_COMPATIBILITY Funzione per determinare se il non-CDB è compatibile con il CDB.

    SET SERVEROUTPUT ON
    DECLARE
      compatible CONSTANT VARCHAR2(3) :=
        CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
               pdb_descr_file => '/disk1/oracle/ncdb.xml',
               pdb_name       => 'NCDB')
        WHEN TRUE THEN 'YES'
        ELSE 'NO'
    END;
    BEGIN
      DBMS_OUTPUT.PUT_LINE(compatible);
    END;
    /

    Se l'output è sì, il non-CDB è compatibile ed è possibile passare alla fase successiva.

    Se l'output è NO, il non-CDB non è compatibile ed è possibile controllare PDB_PLUG_IN_VIOLATIONS visualizza per scoprire perché non è compatibile. Tutte le violazioni devono essere corrette prima di continuare. Ad esempio, qualsiasi errata corrispondenza di versioni o patch deve essere risolta eseguendo un aggiornamento o l'utility di opatch. Dopo aver corretto le violazioni, eseguire DBMS_PDB.CHECK_PLUG_COMPATIBILITY Anche in questo caso, per garantire che il non-CDB sia compatibile con il CDB.

  7. Collegare la singola istanza non CDB.

    CREATE PLUGGABLE DATABASE ncdb USING '/home/oracle/ncdb.xml'
      COPY
      FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/')
    ;
    Nota Se lo spazio sull'host non è sufficiente, il NOCOPY È possibile utilizzare questa opzione per creare la PDB. In tal caso, una singola istanza non CDB non può essere utilizzata dopo il plug-in come PDB perché i file di dati originali sono stati utilizzati per la PDB. Assicurarsi di creare un backup prima della conversione in modo che vi sia qualcosa da ripristinare se qualcosa va storto.
  8. Iniziare con l'aggiornamento PDB dopo la conversione se la versione tra la singola istanza non CDB di origine e la CDB di destinazione sono diverse. Per la conversione della stessa versione, questo passaggio può essere ignorato.

    sqlplus / as sysdba;
    alter session set container=ncdb
    alter pluggable database open upgrade;
    exit;
    dbupgrade -c ncdb -l /home/oracle

    Esaminare il file di log dell'aggiornamento in /home/oracle directory.

  9. Aprire il database collegabile, verificare la presenza di violazioni del plug-in pdb e ricompilare gli oggetti non validi.

    alter pluggable database ncdb open;
    alter session set container=ncdb;
    select message from pdb_plug_in_violations where type like '%ERR%' and status <> 'RESOLVED';
    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -c 'ncdb' -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql
  10. Eseguire noncdb_to_pdb.sql per aggiornare il dizionario dati.

    sqlplus / as sysdba
    alter session set container=ncdb;
    @$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql;

    Arrestare e riavviare il database dei container. L'ncdb viene disconnesso dalla modalità limitata.

Migrare i database Oracle on-premise in Azure con il trasferimento dei dati PDB

Il trasferimento di Oracle PDB con l'opzione di massima disponibilità utilizza la tecnologia di clonazione a caldo PDB, che consente la disponibilità del PDB di origine mentre il PDB esegue la copia nella destinazione. Allo switchover, le connessioni degli utenti vengono reindirizzate automaticamente al PDB di destinazione. In questo modo, il downtime viene ridotto al minimo indipendentemente dalle dimensioni del PDB. NetApp offre un toolkit basato su Ansible che automatizza la procedura di migrazione.

  1. Creare una CDB nel cloud pubblico Azure su una macchina virtuale Azure con la stessa versione e lo stesso livello di patch.

  2. Dal controller Ansible, clonare una copia del toolkit di automazione.

    git clone https://github.com/NetApp-Automation/na_ora_aws_migration.git
  3. Leggere le istruzioni nel file README.

  4. Configurare i file delle variabili host Ansible per i server Oracle di origine e di destinazione e per il file di configurazione dell'host del server DB per la risoluzione dei nomi.

  5. Installare i prerequisiti del controller Ansible sul controller Ansible.

    ansible-playbook -i hosts requirements.yml
    ansible-galaxy collection install -r collections/requirements.yml --force
  6. Eseguire qualsiasi attività di pre-migrazione sul server on-premise.

    ansible-playbook -i hosts ora_pdb_relocate.yml -u admin -k -K -t ora_pdb_relo_onprem
    Nota L'utente admin è l'utente di gestione dell'host server Oracle on-premise con privilegi sudo. L'utente admin viene autenticato con una password.
  7. Eseguire il trasferimento di Oracle PDB dall'host Azure Oracle on-premise all'host Oracle di destinazione.

    ansible-playbook -i hosts ora_pdb_relocate.yml -u azureuser --private-key db1.pem -t ora_pdb_relo_primary
    Nota Il controller Ansible può essere collocato on-premise o nel cloud Azure. Il controller deve essere collegato all'host server Oracle on-premise e all'host VM Oracle di Azure. La porta del database Oracle (ad esempio 1521) è aperta tra l'host del server Oracle on-premise e l'host Azure Oracle VM.

Opzioni aggiuntive per la migrazione dei database Oracle

Consultare la documentazione Microsoft per ulteriori opzioni di migrazione: "Processo decisionale per la migrazione dei database Oracle".