Copia de seguridad y recuperación de Oracle Database en una máquina virtual Azure Linux mediante Azure Files

Se aplica a: ✔️ Máquinas virtuales Linux

En este artículo se muestra el uso de Azure Files como medio para realizar copias de seguridad y restaurar una base de datos Oracle que se ejecuta en una máquina virtual (VM) Azure. Los pasos de este artículo se han probado con Oracle 12.1 y versiones posteriores.

En este artículo, se utiliza Oracle Recovery Manager (RMAN) para realizar una copia de seguridad de la base de datos en un recurso compartido de archivos de Azure montado en una VM mediante el protocolo de Bloque de mensajes del servidor (SMB). El uso de Azure Files como medio de copia de seguridad es rentable y eficaz. Sin embargo, en el caso de las bases de datos de gran tamaño, Azure Backup ofrece una mejor solución.

Requisitos previos

  • Para llevar a cabo el proceso de copia de seguridad y recuperación, primero debe crear una máquina virtual Linux que tenga una instancia de Oracle Database instalada. Se recomienda utilizar Oracle 12.x o una versión superior.

  • Cree una instancia de Oracle Database siguiendo los pasos descritos en Crear una instancia de Oracle Database en una VM Azure.

Preparación del entorno de la base de datos

  1. Para crear una sesión de Secure Shell (SSH) con la máquina virtual, use el siguiente comando. Sustituya <publicIpAddress> por el valor de la dirección pública de su VM.

    ssh azureuser@<publicIpAddress>
    
  2. Cambie al usuario root:

    sudo su -
    
  3. Añada el usuario oracle al archivo /etc/sudoers:

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    
  4. Este paso supone que tiene una instancia de Oracle (prueba) que se ejecuta en una VM denominada vmoracle19c.

    Cambie al usuario oracle:

    sudo su - oracle
    
  5. Antes de conectarse, configure la variable de entorno ORACLE_SID:

    export ORACLE_SID=test;
    

    También debe añadir la variable ORACLE_SID al archivo .bashrc del usuario oracle para futuros inicios de sesión mediante el siguiente comando:

    echo "export ORACLE_SID=test" >> ~oracle/.bashrc
    
  6. Inicie el cliente de escucha de Oracle si todavía no está en ejecución:

    lsnrctl start
    

    La salida debería tener un aspecto similar al ejemplo siguiente:

    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. Cree la ubicación para el área de recuperación rápida:

    mkdir /u02/fast_recovery_area
    
  8. Conéctese a la base de datos:

    sqlplus / as sysdba
    
  9. Inicie la base de datos si todavía no está en ejecución:

    SQL> startup
    
  10. Establezca las variables de entorno de la base de datos para el área de recuperación rápida:

    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. Asegúrese de que la base de datos está en modo ARCHIVELOG para activar las copias de seguridad en línea.

    Compruebe el estado del archivo de registro:

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

    Si el archivo de registro está en modo NOARCHIVELOG, ejecute los siguientes comandos en SQL Plus:

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    
  12. Cree una tabla para probar las operaciones de copia de seguridad y restauración:

    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
    

Copia de seguridad en Azure Files

Siga estos pasos para hacer una copia de seguridad en Azure Files:

  1. Configuración de Azure Files.
  2. Monte el recurso compartido de archivos de Azure en la máquina virtual.
  3. Realice una copia de seguridad de la base de datos.
  4. Restauración y recuperación de una base de datos.

Configuración de Azure Files

En esta sección, se realiza una copia de seguridad de la base de datos Oracle en Azure Files mediante Oracle RMAN. Los archivos compartidos de Azure son archivos compartidos totalmente administrados que permanecen en la nube. Puede acceder a ellos mediante el protocolo SMB o el protocolo NFS (Network File System).

Los siguientes procedimientos cubren la creación de un recurso compartido de archivos que utiliza el protocolo SMB para montar en su VM. Para obtener información sobre cómo montar mediante NFS, consulte Crear un recurso compartido NFS.

Cuando monte el recurso compartido de archivos Azure, utilice la opción cache=none para desactivar el almacenamiento en caché de los datos del recurso compartido de archivos. Para asegurarse de que el usuario oracle es el propietario de los archivos creados en el recurso compartido, configure las opciones uid=oracle y gid=oinstall.

Configure su cuenta de almacenamiento:

  1. En el Azure Portal, seleccione + Crear un recurso y, a continuación, busque y seleccione Cuenta de almacenamiento.

    Captura de pantalla que muestra dónde crear un recurso y seleccionar una cuenta de almacenamiento.

  2. En el panel Crear cuenta de almacenamiento:

    1. En Grupo de recursos, seleccione su grupo de recursos existente, rg-oracle.
    2. En Nombre de cuenta de almacenamiento, introduzca oracbkup1.
    3. Asegúrese de que Ubicación está configurada en la misma región que los demás recursos del grupo de recursos.
    4. Establezca Rendimiento en Estándar.
    5. Para Tipo de cuenta, seleccione AlmacenamientoV2 (propósito general v2).
    6. En Replicación, seleccione Almacenamiento con redundancia local (LRS) .

    Captura de pantalla que muestra información básica para crear una cuenta de almacenamiento.

  3. Seleccione la ficha Avanzado. En Azure Files, establezca Compartir archivos grandes en Activado. Seleccione Revisar y crear y, luego, Crear.

    Captura de pantalla que muestra la pestaña para activar los archivos compartidos de gran tamaño.

  4. Una vez creada la cuenta de almacenamiento, vaya al recurso y seleccione Ficheros compartidos.

    Captura de pantalla que muestra dónde seleccionar los archivos compartidos para un recurso.

  5. Seleccione +Fichero compartido y, a continuación, en el panel Nuevo fichero compartido:

    1. En Nombre, introduzca oabkup1.

    2. Establezca Cuota en 10240 gibibytes (GiB).

      La cuota refleja un límite superior hasta el que puede crecer el recurso compartido de archivos. Dado que en este ejemplo se utiliza almacenamiento estándar, los recursos se pagan por uso y no se aprovisionan. Por lo tanto, establecer la cuota en 10 tebibytes (TiB) no incurrirá en costes más allá de lo que utilice. Si su estrategia de copia de seguridad requiere más almacenamiento, establezca la cuota en un nivel adecuado para almacenar todas las copias de seguridad.

    3. En Niveles, seleccione Transacción optimizada.

    4. Seleccione Crear.

    Captura de pantalla que muestra las selecciones para añadir un nuevo archivo compartido.

  6. Cuando se cree el recurso compartido de archivos, seleccione oabkup1 en el panel Configuración del recurso compartido de archivos.

  7. Seleccione la pestaña Conectar para abrir el panel Conectar y, a continuación, seleccione la ficha Linux. Copie los comandos proporcionados para montar el archivo compartido utilizando el protocolo SMB.

    Captura de pantalla que muestra el panel para acceder a los comandos para conectar un archivo compartido a un ordenador Linux.

Monte el recurso compartido de archivos de Azure en la máquina virtual

  1. Cree el punto de montaje:

    sudo mkdir /mnt/orabackup
    
  2. Establezca las credenciales:

    if [ ! -d "/etc/smbcredentials" ]; then
     sudo mkdir /etc/smbcredentials
    fi
    
  3. Ejecute el siguiente comando: Sustituya <Your Storage Account Key1> por la clave de la cuenta de almacenamiento que recuperó anteriormente.

    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. Cambie los permisos en el archivo de credenciales:

    sudo chmod 600 /etc/smbcredentials/orabackup1.cred
    
  5. Agregue el montaje al archivo/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. Ejecute los comandos para montar el recurso compartido de archivos Azure utilizando el protocolo 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 obtiene un error similar al del ejemplo siguiente, es posible que el paquete Common Internet File System (CIFS) no esté instalado en su host Linux:

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

    Para comprobar si el paquete CIFS está instalado, ejecute el siguiente comando:

    sudo rpm -qa|grep cifs-utils
    

    Si el comando no devuelve ningún resultado, instale el paquete CIFS mediante el siguiente comando. A continuación, vuelva a ejecutar el comando mount para montar el recurso compartido de archivos Azure.

    sudo yum install cifs-utils
    
  7. Compruebe que el recurso compartido de archivos se ha montado correctamente mediante el siguiente comando:

    df -h
    

    La salida debería tener un aspecto similar a este ejemplo:

    $ 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
    

Copia de seguridad de la base de datos

En esta sección, se utiliza Oracle RMAN para realizar una copia de seguridad completa de la base de datos y los registros de archivo. A continuación, escriba la copia de seguridad como un conjunto de copias de seguridad en el recurso compartido de archivos de Azure que montó anteriormente.

  1. Configure RMAN para que haga copias de seguridad en el punto de montaje de 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. En este ejemplo, está limitando el tamaño de los fragmentos de copia de seguridad de RMAN a 4 GiB. Sin embargo, el valor maxpiecesize de la copia de seguridad de RMAN puede llegar hasta 4 TiB, que es el límite de tamaño de archivo para los recursos compartidos de archivos estándar y los recursos compartidos de archivos premium de Azure. Para más información, consulte Objetivos de escalabilidad y rendimiento de Azure Files.

    RMAN> configure channel device type disk maxpiecesize 4000G;
    
  3. Confirme los detalles de las modificaciones de la configuración:

    RMAN> show all;
    
  4. Ejecutar la copia de seguridad. El siguiente comando toma una copia de seguridad completa de la base de datos, incluidos los archivos de registro de archivo, como un conjunto de copias de seguridad en formato comprimido:

    RMAN> backup as compressed backupset database plus archivelog;
    

Ahora ha realizado una copia de seguridad de la base de datos en línea mediante Oracle RMAN, con la copia de seguridad ubicada en Azure Files. Dado que almacena las copias de seguridad en Azure Files, puede acceder a ellas desde otras máquinas virtuales si necesita clonar la base de datos.

Aunque el uso de RMAN y Azure Files para la copia de seguridad de la base de datos tiene muchas ventajas, el tiempo de copia de seguridad y restauración está vinculado al tamaño de la base de datos. Para bases de datos de grande tamaño, estas operaciones pueden llevar un tiempo considerable.

Una alternativa es utilizar copias de seguridad de máquinas virtuales coherentes con la aplicación a través de Azure Backup. Este mecanismo utiliza la tecnología de instantáneas para realizar copias de seguridad rápidas independientemente del tamaño de la base de datos. La integración con un almacén de Recovery Services proporciona almacenamiento en la nube de las copias de seguridad de Oracle Database, para que pueda acceder a ellas desde otras máquinas virtuales y otras regiones de Azure.

Restauración y recuperación de una base de datos

  1. Cierre la instancia de Oracle:

    sqlplus / as sysdba
    SQL> shutdown abort
    ORACLE instance shut down.
    
  2. Quite los archivos de datos de la base de datos:

    cd /u02/oradata/TEST
    rm -f *.dbf
    
  3. Los siguientes comandos usan RMAN para restaurar los archivos de datos que faltan y recuperar la base de datos:

    rman target /
    RMAN> startup mount;
    RMAN> restore database;
    RMAN> recover database;
    RMAN> alter database open;
    
  4. Compruebe que el contenido de la base de datos está totalmente recuperado:

    RMAN> SELECT * FROM scott.scott_table;
    

La copia de seguridad y la recuperación de la base de datos Oracle Database 19c en una VM Azure Linux ya han finalizado.

Eliminación de la máquina virtual

Cuando ya no necesite la máquina virtual, puede usar el comando siguiente para quitar el grupo de recursos, la máquina virtual y todos los recursos relacionados:

az group delete --name rg-oracle

Pasos siguientes

Creación de máquinas virtuales de alta disponibilidad

Ejemplos de la CLI de Azure para la implementación de máquinas virtuales