Share via


Eseguire il backup e il ripristino di Oracle Database in una macchina virtuale Linux di Azure usando File di Azure

Si applica a: ✔️ Macchine virtuali Linux

Questo articolo illustra l'uso di File di Azure come supporto per eseguire il backup e il ripristino di un database Oracle in esecuzione in una macchina virtuale di Azure. I passaggi descritti in questo articolo sono stati testati in Oracle 12.1 e versioni successive.

In questo articolo si usa Oracle Gestione ripristino (RMAN) per eseguire il backup del database in una condivisione file di Azure montata in una macchina virtuale tramite il protocollo SMB (Server Message Block). L'uso di File di Azure per i supporti di backup è conveniente ed efficiente. Tuttavia, per i database di grandi dimensioni, Backup di Azure offre una soluzione migliore.

Prerequisiti

  • Per eseguire il processo di backup e ripristino, è prima necessario creare una macchina virtuale Linux con un'istanza installata di Oracle Database. È consigliabile usare Oracle 12.x o versione successiva.

  • Creare un'istanza di Oracle Database seguendo la procedura descritta in Creare un'istanza di Oracle Database in una macchina virtuale di Azure.

Preparare l'ambiente del database

  1. Per creare una sessione Secure Shell, SSH con la macchina virtuale, usare il comando seguente. Sostituire <publicIpAddress> con il valore dell'indirizzo pubblico per la macchina virtuale.

    ssh azureuser@<publicIpAddress>
    
  2. Passare all'utente radice:

    sudo su -
    
  3. Aggiungere l'utente oracle al file /etc/sudoers :

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    
  4. Questo passaggio presuppone che si disponga di un'istanza Oracle (test) in esecuzione in una macchina virtuale denominata vmoracle19c.

    Passare all'utente oracle:

    sudo su - oracle
    
  5. Prima di connettersi, impostare la variabile ORACLE_SIDdi ambiente :

    export ORACLE_SID=test;
    

    È anche necessario aggiungere la ORACLE_SID variabile al oracle file con estensione bashrc dell'utente per gli accessi futuri usando il comando seguente:

    echo "export ORACLE_SID=test" >> ~oracle/.bashrc
    
  6. Avviare il listener Oracle se non è già in esecuzione:

    lsnrctl start
    

    L'output deve essere simile all'esempio seguente:

    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 18-SEP-2020 03:23:49
    
    Copyright (c) 1991, 2019, Oracle.  All rights reserved.
    
    Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...
    
    TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    System parameter file is /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Log messages written to /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                18-SEP-2020 03:23:49
    Uptime                    0 days 0 hr. 0 min. 0 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening Endpoints Summary...
     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    The listener supports no services
    The command completed successfully
    
  7. Creare la posizione per l'area di ripristino rapido:

    mkdir /u02/fast_recovery_area
    
  8. Connettersi al database:

    sqlplus / as sysdba
    
  9. Avviare il database se non è già in esecuzione:

    SQL> startup
    
  10. Impostare le variabili di ambiente del database per l'area di ripristino rapido:

    SQL> alter system set db_recovery_file_dest_size=4096M scope=both;
    SQL> alter system set db_recovery_file_dest='/u02/fast_recovery_area' scope=both;
    
  11. Assicurarsi che il database sia in ARCHIVELOG modalità per abilitare i backup online.

    Controllare lo stato dell'archivio dei log:

    SQL> SELECT log_mode FROM v$database;
    
    LOG_MODE
    ------------
    NOARCHIVELOG
    

    Se l'archivio dei log è in NOARCHIVELOG modalità , eseguire i comandi seguenti in SQL Plus:

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    
  12. Creare una tabella per testare le operazioni di backup e ripristino:

    SQL> create user scott identified by tiger quota 100M on users;
    SQL> grant create session, create table to scott;
    SQL> connect scott/tiger
    SQL> create table scott_table(col1 number, col2 varchar2(50));
    SQL> insert into scott_table VALUES(1,'Line 1');
    SQL> commit;
    SQL> quit
    

Eseguire il backup in File di Azure

Per eseguire il backup in File di Azure, completare questi passaggi:

  1. Configurare File di Azure.
  2. Montare la condivisione file di Azure nella macchina virtuale.
  3. Eseguire il backup del database.
  4. Ripristinare e ripristinare il database.

Configurare File di Azure

In questa sezione viene eseguito il backup del database Oracle in File di Azure usando Oracle RMAN. Le condivisioni file di Azure sono condivisioni file completamente gestite che rimangono nel cloud. È possibile accedervi usando il protocollo SMB o il protocollo NFS (Network File System).

Le procedure seguenti illustrano la creazione di una condivisione file che usa il protocollo SMB per il montaggio nella macchina virtuale. Per informazioni su come montare tramite NFS, vedere Creare una condivisione NFS.

Quando si monta la condivisione file di Azure, usare l'opzione per disabilitare la cache=none memorizzazione nella cache dei dati di condivisione file. Per assicurarsi che l'utente oracle sia proprietario dei file creati nella condivisione, impostare le uid=oracle opzioni e gid=oinstall .

Configurare l'account di archiviazione:

  1. Nella portale di Azure selezionare + Crea una risorsa e quindi cercare e selezionare Account di archiviazione.

    Screenshot che mostra dove creare una risorsa e selezionare un account di archiviazione.

  2. Nel riquadro Crea account di archiviazione :

    1. Per Gruppo di risorse selezionare il gruppo di risorse esistente , rg-oracle.
    2. Per Nome account di archiviazione immettere oracbkup1.
    3. Assicurarsi che Località sia impostata sulla stessa area di tutte le altre risorse nel gruppo di risorse.
    4. Impostare Prestazioni su Standard.
    5. Per Tipo di account selezionare ArchiviazioneV2 (utilizzo generico v2).
    6. Per Replica selezionare Archiviazione con ridondanza locale.

    Screenshot che mostra le informazioni di base per la creazione di un account di archiviazione.

  3. Selezionare la scheda Avanzate. In File di Azure impostare Condivisioni file di grandi dimensioni su Abilitato. Selezionare Rivedi e crea e quindi Crea.

    Screenshot che mostra la scheda per abilitare condivisioni file di grandi dimensioni.

  4. Quando viene creato l'account di archiviazione, passare alla risorsa e selezionare Condivisioni file.

    Screenshot che mostra dove selezionare le condivisioni file per una risorsa.

  5. Selezionare + Condivisione file e quindi nel pannello Nuova condivisione file :

    1. In Nome immettere orabkup1.

    2. Impostare Quota su 10240 gibibyte (GiB).

      La quota riflette un limite superiore in base al quale la condivisione file può aumentare. Poiché si usa l'archiviazione standard in questo esempio, le risorse vengono con pagamento in base al consumo e non ne viene effettuato il provisioning. Pertanto, l'impostazione della quota su 10 tebibyte (TiB) non comporta costi oltre a quanto usato. Se la strategia di backup richiede più spazio di archiviazione, impostare la quota su un livello appropriato per contenere tutti i backup.

    3. In Livelli selezionare Ottimizzato per le transazioni.

    4. Selezionare Crea.

    Screenshot che mostra le selezioni per l'aggiunta di una nuova condivisione file.

  6. Quando viene creata la condivisione file, selezionare orabkup1 nel riquadro Impostazioni condivisione file .

  7. Selezionare la scheda Connetti per aprire il pannello Connetti e quindi selezionare la scheda Linux . Copiare i comandi forniti per montare la condivisione file usando il protocollo SMB.

    Screenshot che mostra il pannello per accedere ai comandi per connettere una condivisione file a un computer Linux.

Montare la condivisione file di Azure nella macchina virtuale

  1. Creare il punto di montaggio:

    sudo mkdir /mnt/orabackup
    
  2. Configurare le credenziali:

    if [ ! -d "/etc/smbcredentials" ]; then
     sudo mkdir /etc/smbcredentials
    fi
    
  3. Eseguire il comando indicato di seguito. Sostituire <Your Storage Account Key1> con la chiave dell'account di archiviazione recuperata in precedenza.

    if [ ! -f "/etc/smbcredentials/orabackup1.cred" ]; then
      sudo bash -c 'echo "username=orabackup1" >> /etc/smbcredentials/orabackup1.cred'
      sudo bash -c 'echo "password=<Your Storage Account Key1>" >> /etc/smbcredentials/orabackup1.cred'
    fi
    
  4. Modificare le autorizzazioni per il file delle credenziali:

    sudo chmod 600 /etc/smbcredentials/orabackup1.cred
    
  5. Aggiungere il montaggio al file /etc/fstab :

    sudo bash -c 'echo "//orabackup1.file.core.windows.net/orabackup /mnt/orabackup cifs nofail,vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall" >> /etc/fstab'
    
  6. Eseguire i comandi per montare la condivisione file di Azure usando il protocollo SMB:

    sudo mount -t cifs //orabackup1.file.core.windows.net/orabackup /mnt/orabackup -o vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall
    

    Se si verifica un errore simile all'esempio seguente, il pacchetto CIFS (Common Internet File System) potrebbe non essere installato nell'host Linux:

    mount: wrong fs type, bad option, bad superblock on //orabackup1.file.core.windows.net/orabackup
    

    Per verificare se il pacchetto CIFS è installato, eseguire il comando seguente:

    sudo rpm -qa|grep cifs-utils
    

    Se il comando non restituisce alcun output, installare il pacchetto CIFS usando il comando seguente. Eseguire quindi di nuovo il mount comando per montare la condivisione file di Azure.

    sudo yum install cifs-utils
    
  7. Verificare che la condivisione file sia montata correttamente usando il comando seguente:

    df -h
    

    L'output dovrebbe essere simile a questo esempio:

    $ df -h
    Filesystem                                    Size  Used Avail Use% Mounted on
    devtmpfs                                      3.3G     0  3.3G   0% /dev
    tmpfs                                         3.3G     0  3.3G   0% /dev/shm
    tmpfs                                         3.3G   17M  3.3G   1% /run
    tmpfs                                         3.3G     0  3.3G   0% /sys/fs/cgroup
    /dev/sda2                                      30G  9.1G   19G  34% /
    /dev/sdc1                                      59G  2.7G   53G   5% /u02
    /dev/sda1                                     497M  199M  298M  41% /boot
    /dev/sda15                                    495M  9.7M  486M   2% /boot/efi
    tmpfs                                         671M     0  671M   0% /run/user/54321
    /dev/sdb1                                      14G  2.1G   11G  16% /mnt/resource
    tmpfs                                         671M     0  671M   0% /run/user/54322
    //orabackup1.file.core.windows.net/orabackup   10T     0   10T   0% /mnt/orabackup
    

Eseguire il backup del database

In questa sezione si usa Oracle RMAN per eseguire un backup completo del database e dei log di archiviazione. Si scrive quindi il backup come set di backup nella condivisione file di Azure montata in precedenza.

  1. Configurare RMAN per eseguire il backup nel punto di montaggio File di Azure:

    rman target /
    RMAN> configure snapshot controlfile name to '/mnt/orabkup/snapcf_ev.f';
    RMAN> configure channel 1 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    RMAN> configure channel 2 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    
  2. In questo esempio si limitano le dimensioni delle parti di backup di RMAN a 4 GiB. Tuttavia, il valore di backup maxpiecesize RMAN può passare fino a 4 TiB, ovvero il limite di dimensioni del file per le condivisioni file standard di Azure e le condivisioni file Premium. Per altre informazioni, vedere Obiettivi di scalabilità e prestazioni per File di Azure.

    RMAN> configure channel device type disk maxpiecesize 4000G;
    
  3. Confermare i dettagli della modifica della configurazione:

    RMAN> show all;
    
  4. Eseguire il backup. Il comando seguente esegue un backup completo del database, inclusi i file di log di archiviazione, come set di backup in formato compresso:

    RMAN> backup as compressed backupset database plus archivelog;
    

È ora stato eseguito il backup del database online usando Oracle RMAN, con il backup che si trova in File di Azure. Poiché si archiviano i backup in File di Azure, è possibile accedervi da altre macchine virtuali se è necessario clonare il database.

Sebbene l'uso di RMAN e File di Azure per il backup del database abbia molti vantaggi, il tempo di backup e ripristino è collegato alle dimensioni del database. Per i database molto grandi, queste operazioni possono richiedere molto tempo.

Un'alternativa consiste nell'usare i backup delle macchine virtuali coerenti con l'applicazione tramite Backup di Azure. Questo meccanismo usa la tecnologia snapshot per eseguire backup veloci indipendentemente dalle dimensioni del database. L'integrazione con un insieme di credenziali di Servizi di ripristino offre l'archiviazione cloud dei backup del database Oracle, in modo da poter accedervi da altre macchine virtuali e da altre aree di Azure.

Ripristinare e ripristinare il database

  1. Arrestare l'istanza oracle:

    sqlplus / as sysdba
    SQL> shutdown abort
    ORACLE instance shut down.
    
  2. Rimuovere i file di dati del database:

    cd /u02/oradata/TEST
    rm -f *.dbf
    
  3. I comandi seguenti USANO RMAN per ripristinare i file di dati mancanti e ripristinare il database:

    rman target /
    RMAN> startup mount;
    RMAN> restore database;
    RMAN> recover database;
    RMAN> alter database open;
    
  4. Verificare che il contenuto del database sia completamente ripristinato:

    RMAN> SELECT * FROM scott.scott_table;
    

Il backup e il ripristino del database Oracle Database 19c in una macchina virtuale Linux di Azure sono stati completati.

Eliminare la macchina virtuale

Quando la macchina virtuale non è più necessaria, è possibile usare il comando seguente per rimuovere il gruppo di risorse, la macchina virtuale e tutte le risorse correlate:

az group delete --name rg-oracle

Passaggi successivi

Creare VM a disponibilità elevata

Esplorare gli esempi dell'interfaccia della riga di comando di Azure per la distribuzione di macchine virtuali