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 con 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
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
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 i passaggi descritti in Creare un'istanza di Oracle Database in una macchina virtuale di Azure.
Preparare l'ambiente del database
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>
Passare all'utente radice:
sudo su -
Aggiungere l'utente
oracle
al file /etc/sudoers:echo "oracle ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
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
Prima di connettersi, impostare la variabile
ORACLE_SID
di ambiente :export ORACLE_SID=test;
È anche necessario aggiungere la
ORACLE_SID
variabile aloracle
file bashrc dell'utente per gli accessi futuri usando il comando seguente:echo "export ORACLE_SID=test" >> ~oracle/.bashrc
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
Creare la posizione per l'area di ripristino veloce:
mkdir /u02/fast_recovery_area
Stabilire la connessione al database:
sqlplus / as sysdba
Avviare il database se non è già in esecuzione:
SQL> startup
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;
Verificare 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 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;
Creare una tabella per testare le operazioni di backup e recupero:
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:
- Configurare File di Azure.
- Montare la condivisione file di Azure nella macchina virtuale.
- Eseguire il backup del database.
- 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 montare 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 della 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:
Nella portale di Azure selezionare + Crea una risorsa e quindi cercare e selezionare Account di archiviazione.
Nel riquadro Crea account di archiviazione:
- Per Gruppo di risorse, selezionare il gruppo di risorse esistente rg-oracle.
- Per Nome account di archiviazione immettere oracbkup1.
- Assicurarsi che Posizione sia impostato sulla stessa area di tutte le altre risorse nel gruppo di risorse.
- Impostare Prestazioni su Standard.
- Per Tipologia account selezionare ArchiviazioneV2 (per utilizzo generico StorageV2).
- Per Replica selezionare Archiviazione con ridondanza locale.
Selezionare la scheda Avanzate. In File di Azure impostare Condivisioni file di grandi dimensioni su Abilitato. Selezionare Rivedi e crea e quindi Crea.
Quando viene creato l'account di archiviazione, passare alla risorsa e selezionare Condivisioni file.
Selezionare + Condivisione file e quindi nel pannello Nuova condivisione file:
In Nome immettere orabkup1.
Impostare Quota su 10240 gibibytes (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. 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.
In Livelli selezionare Transazioni ottimizzate.
Seleziona Crea.
Quando viene creata la condivisione file, selezionare orabkup1 nel riquadro Impostazioni condivisione file.
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.
Montare la condivisione file di Azure nella macchina virtuale
Creare il punto di montaggio:
sudo mkdir /mnt/orabackup
Configurare le credenziali:
if [ ! -d "/etc/smbcredentials" ]; then sudo mkdir /etc/smbcredentials fi
Esegui il comando seguente: 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
Modificare le autorizzazioni per il file delle credenziali:
sudo chmod 600 /etc/smbcredentials/orabackup1.cred
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'
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 viene visualizzato un errore simile all'esempio seguente, il pacchetto COMMON Internet File System (CIFS) 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
Verificare che la condivisione file sia montata correttamente usando il comando seguente:
df -h
L'output dovrebbe essere simile all'esempio seguente:
$ 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.
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';
In questo esempio si limitano le dimensioni delle parti di backup RMAN a 4 GiB. Tuttavia, il valore di backup
maxpiecesize
RMAN può raggiungere fino a 4 TiB, ovvero il limite di dimensioni dei 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;
Confermare i dettagli della modifica della configurazione:
RMAN> show all;
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;
È stato eseguito il backup online del database 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.
L'uso di RMAN e File di Azure per il backup del database offre molti vantaggi. Il tempo di backup e ripristino è collegato alle dimensioni del database. Per i database di grandi dimensioni, queste operazioni possono richiedere molto tempo.
Un'alternativa consiste nell'usare backup di macchine virtuali coerenti con l'applicazione tramite Backup di Azure. Questo meccanismo usa la tecnologia snapshot per eseguire backup rapidi indipendentemente dalle dimensioni del database. L'integrazione con un insieme di credenziali di Servizi di ripristino offre l'archiviazione cloud dei backup di Oracle Database, in modo da potervi accedere da altre macchine virtuali e altre aree di Azure.
Ripristinare e ripristinare il database
Arrestare l'istanza di Oracle:
sqlplus / as sysdba SQL> shutdown abort ORACLE instance shut down.
Rimuovere i file di dati del database:
cd /u02/oradata/TEST rm -f *.dbf
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;
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