Sauvegardez et récupérez Oracle Database sur une machine virtuelle Azure Linux à l’aide de Azure Files

S’applique à : ✔️ Machines virtuelles Linux

Cet article explique comment utiliser Azure Files comme support pour sauvegarder et restaurer une base de données Oracle sur une machine virtuelle Azure. Les étapes décrites dans cet article ont été testées sur Oracle 12.1 et les versions ultérieures.

Dans cet article, Oracle Recovery Manager (RMAN) est utilisé pour sauvegarder la base de données vers un partage de fichiers Azure sur une machine virtuelle en utilisant le protocole SMB (Server Message Block). L’utilisation d’Azure Files comme support de sauvegarde est une solution économique et performante. Cela dit, pour les bases de données très volumineuses, le service Sauvegarde Azure constitue une meilleure solution.

Prérequis

  • Pour effectuer le processus de sauvegarde et de récupération, vous devez commencer par créer une machine virtuelle Linux avec une instance d’Oracle Database installée. Nous vous recommandons d’utiliser Oracle 12.x ou une version ultérieure.

  • Créez une instance Oracle Database en suivant la procédure décrite dans l’article Créer une instance Oracle Database dans une machine virtuelle Azure.

Préparation de l'environnement de base de données

  1. Pour créer une session Secure Shell (SSH) avec la machine virtuelle, utilisez la commande suivante. Remplacez <publicIpAddress> par l’adresse publique de la machine virtuelle.

    ssh azureuser@<publicIpAddress>
    
  2. Basculez vers l'utilisateur racine :

    sudo su -
    
  3. Ajoutez l’utilisateur oracle au fichier /etc/sudoers :

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    
  4. Cette étape suppose que vous disposez d’une instance d’Oracle (test) exécutée sur une machine virtuelle nommée vmoracle19c.

    Passez à l’utilisateur oracle :

    sudo su - oracle
    
  5. Avant de vous connecter, vous devez définir la variable d’environnement ORACLE_SID :

    export ORACLE_SID=test;
    

    Vous devez également ajouter la variable ORACLE_SID au fichier utilisateuroracle.bashrc pour les prochaines connexions à l’aide de la commande suivante :

    echo "export ORACLE_SID=test" >> ~oracle/.bashrc
    
  6. Si ce n’est déjà fait, démarrez l’écouteur Oracle :

    lsnrctl start
    

    La sortie doit être semblable à l’exemple suivant :

    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. Créez l’emplacement de la zone de récupération rapide (FRA) :

    mkdir /u02/fast_recovery_area
    
  8. Connectez-vous à la base de données :

    sqlplus / as sysdba
    
  9. Si ce n’est déjà fait, démarrez la base de données :

    SQL> startup
    
  10. Définissez les variables d'environnement de la base de données pour la zone de récupération rapide (FRA) :

    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. Assurez-vous que la base de données soit en mode ARCHIVELOG pour permettre les sauvegardes en ligne.

    Commencez par vérifier le statut de l'archivage des journaux :

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

    Si l’archivage des journaux est en mode NOARCHIVELOG, exécutez les commandes suivantes dans SQL Plus :

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    
  12. Créez une table pour tester les opérations de sauvegarde et de restauration :

    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
    

Effectuer une sauvegarde sur Azure Files

Pour effectuer une sauvegarde sur Azure Files, procédez comme suit :

  1. Configurez Azure Files.
  2. Montez le partage de fichiers Azure sur votre machine virtuelle.
  3. Sauvegardez la base de données.
  4. Restaurez et récupérez la base de données.

Configurer Azure Files

Dans cette section, vous allez sauvegarder la base de données Oracle dans Azure Files à l’aide d’Oracle RMAN. Les partages de fichiers Azure sont des partages de fichiers entièrement gérés dans le Cloud. Vous pouvez y accéder à l’aide du protocole SMB ou du protocole NFS (Network File System).

Cette étape couvre la création d'un partage de fichiers qui utilise le protocole SMB pour procéder au montage sur votre machine virtuelle. Pour plus d’informations sur le montage à l’aide de NFS, voir Comment créer un partage NFS.

Lors du montage du partage de fichier Azure Files, utilisez l’option cache=none pour désactiver la mise en cache des données du partage de fichiers. Pour vous assurer que l’utilisateur oracle est bien propriétaire des fichiers créés dans le partage, définissez les options uid=oracle et gid=oinstall .

Configurez votre compte de stockage :

  1. Sur le Portail Azure Microsoft, sélectionnez + Créer une ressources, puis recherchez et sélectionnez Compte de stockage.

     Capture d’écran montrant où créer une ressource et sélectionner le compte de stockage.

  2. Dans le volet Créer un compte de stockage :

    1. Pour Groupe de ressources, sélectionnez votre groupe de ressources existant, rg-oracle.
    2. Pour Nom du compte de stockage, saisissez oracbkup1.
    3. Assurez-vous que l’Emplacement est défini sur la même région que toutes vos autres ressources du groupe.
    4. Paramétrez les Performances sur Standard.
    5. Pour Type de compte, sélectionnez StockageV2 (usage général v2).
    6. Pour Réplication, sélectionnez Stockage localement redondant (LRS) .

    Capture d’écran représentant les informations de base pour la création d’un compte de stockage.

  3. Cliquez sur l’onglet Avancé. Dans Azure Files , réglez le Partages de fichiers volumineuxsur Activé . Sélectionnez Vérifier + créer, puis Créer.

    Capture d’écran montrant l’onglet permettant d’activer le partage de fichiers volumineux.

  4. Une fois le compte de stockage créé, accédez à la ressource et sélectionnez Partages de fichiers.

    Capture d’écran montrant où sélectionner les partages de fichiers pour une ressource.

  5. Sélectionnez + Partage de fichiers, puis dans le panneau Nouveau partage de fichiers :

    1. Pour Nom, entrez orabkup1.

    2. Définissez Quota sur 10240 gibioctets (Gio).

      Le quota reflète une limite supérieure que le partage de fichiers peut atteindre. Étant donné que vous utilisez le stockage standard dans cet exemple, les ressources sont avec paiement à l’utilisation et ne sont pas approvisionnées. Par conséquent, la définition du quota sur 10 tbioctets (Tio) n’entraîne pas de coûts au-delà de ce que vous utilisez. Si votre stratégie de sauvegarde nécessite davantage de stockage, vous devez fixer un quota supérieur pour pouvoir contenir toutes vos sauvegardes.

    3. Sous Niveaux, sélectionnez Transaction optimisée.

    4. Sélectionnez Create (Créer).

    Capture d’écran montrant les sélections pour ajouter un nouveau partage de fichiers.

  6. Lorsque le partage de fichiers est créé, sélectionnez orabkup1 dans le volet Paramètres du partage de fichiers .

  7. Cliquez sur l'onglet Se connecter pour ouvrir le volet Se connecter, puis cliquez sur l’onglet Linux. Copiez les commandes fournies pour le montage du partage de fichiers à l'aide du protocole SMB.

    Capture d’écran montrant le volet d’accès aux commandes pour connecter un partage de fichiers sur un ordinateur fonctionnant sous Linux.

Montez le partage de fichiers Azure sur votre machine virtuelle.

  1. Créez le point de montage :

    sudo mkdir /mnt/orabackup
    
  2. Configurez les informations d'identification :

    if [ ! -d "/etc/smbcredentials" ]; then
     sudo mkdir /etc/smbcredentials
    fi
    
  3. Exécutez la commande suivante : Remplacez <Your Storage Account Key1>par la clé de compte de stockage que vous avez récupérée précédemment.

    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. Modifiez les autorisations sur le fichier d'informations d’identification :

    sudo chmod 600 /etc/smbcredentials/orabackup1.cred
    
  5. Ajoutez le montage au fichier /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. Exécutez les commandes suivantes pour monter le partage de fichiers Azure à l'aide du protocole 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
    

    Si vous obtenez une erreur similaire à l’exemple suivant, il est possible que le package CIFS (Common Internet File System) ne soit pas installé sur votre hôte Linux :

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

    Pour vérifier sir le package CIFS est installé, exécutez la commande suivante :

    sudo rpm -qa|grep cifs-utils
    

    Si la commande ne renvoie rien, installez le package CIFS à l'aide de la commande suivante : Puis exécutez à nouveau la commande mountpour le montage du partage de fichiers Azure.

    sudo yum install cifs-utils
    
  7. Vérifiez que le partage de fichiers est correctement monté à l'aide de la commande suivante :

    df -h
    

    La sortie doit être semblable à l’exemple qui suit :

    $ 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
    

Sauvegarder la base de données

Dans cette section, vous allez utiliser Oracle RMAN pour effectuer une sauvegarde complète de la base de données et des journaux d’archivage. Vous écrivez ensuite la sauvegarde en tant que jeu de sauvegarde sur le partage de fichiers Azure que vous avez monté précédemment.

  1. Configurez l'outil RMAN pour effectuer la sauvegarde sur le point de montage Azure Files :

    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. Dans cet exemple, nous limitons la taille des éléments de sauvegarde RMAN à 4 Gio. Toutefois, la valeur de sauvegarde RMAN maxpiecesize peut monter jusqu’à 4 Tio, soit la taille maximale de fichier pour les partages de fichiers Azure Standard et Premium . Pour plus d’informations, voir Objectifs de performance et d’extensibilité d’Azure Files.

    RMAN> configure channel device type disk maxpiecesize 4000G;
    
  3. Confirmez les détails du changement de configuration :

    RMAN> show all;
    
  4. Exécutez la sauvegarde. La commande suivante permet d'effectuer une sauvegarde complète de la base de données, fichiers des journaux d'archivage compris, sous forme de jeu de sauvegarde au format compressé :

    RMAN> backup as compressed backupset database plus archivelog;
    

Vous venez de sauvegarder la base de données en ligne à l’aide d’Oracle RMAN et la sauvegarde a été placée dans Azure Files. Étant donné que vous stockez les sauvegardes dans Azure Files, vous pouvez y accéder à partir d’autres machines virtuelles si vous devez la cloner.

L’utilisation de RMAN et d’Azure Files pour la sauvegarde de bases de données présente de nombreux avantages,le temps de sauvegarde et de restauration dépendant de la taille de la base de données. Pour les bases de données très volumineuses, ces opérations peuvent prendre beaucoup de temps.

Une alternative consiste à utiliser des sauvegardes de machines virtuelles cohérentes avec les applications via Sauvegarde Azure. Ce mécanisme utilise la technologie de capture instantanée pour effectuer des sauvegardes rapides, quelle que soit la taille de la base de données. L’intégration à un coffre Recovery Services permet un stockage Cloud de vos sauvegardes Oracle Database, auquel vous pouvez accéder à partir d’autres machines virtuelles et d’autres régions Azure.

Restaurer et récupérer la base de données

  1. Arrêtez l'instance d'Oracle :

    sqlplus / as sysdba
    SQL> shutdown abort
    ORACLE instance shut down.
    
  2. Supprimez les fichiers de données de la base de données :

    cd /u02/oradata/TEST
    rm -f *.dbf
    
  3. Les commandes suivantes utilisent RMAN pour restaurer les fichiers de données manquants et récupérer la base de données :

    rman target /
    RMAN> startup mount;
    RMAN> restore database;
    RMAN> recover database;
    RMAN> alter database open;
    
  4. Assurez-vous que le contenu de la base de données ait bien été récupéré :

    RMAN> SELECT * FROM scott.scott_table;
    

La sauvegarde et la récupération de la base de données Oracle Database 19c sur machine virtuelle Linux Azure sont maintenant terminées.

Supprimer la machine virtuelle

Quand vous n’avez plus besoin de la machine virtuelle, vous pouvez utiliser la commande suivante pour supprimer le groupe de ressources, la machine virtuelle et toutes les ressources associées :

az group delete --name rg-oracle

Étapes suivantes

Créer des machines virtuelles hautement disponibles

Explorer des exemples Azure CLI pour le déploiement de machines virtuelles