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 grandes, Azure Backup ofrece una mejor solución.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
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
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>
Cambie al usuario root:
sudo su -
Añada el usuario
oracle
al archivo /etc/sudoers:echo "oracle ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
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
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 usuariooracle
para futuros inicios de sesión mediante el siguiente comando:echo "export ORACLE_SID=test" >> ~oracle/.bashrc
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
Cree la ubicación para el área de recuperación rápida:
mkdir /u02/fast_recovery_area
Conéctese a la base de datos:
sqlplus / as sysdba
Inicie la base de datos si todavía no está en ejecución:
SQL> startup
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;
Compruebe que la base de datos esté en modo
ARCHIVELOG
para habilitar 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;
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:
- Configuración de Azure Files.
- Monte el recurso compartido de archivos de Azure en la máquina virtual.
- Realice una copia de seguridad de la base de datos.
- 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:
En el Azure Portal, seleccione + Crear un recurso y, a continuación, busque y seleccione Cuenta de almacenamiento.
En el panel Crear cuenta de almacenamiento:
- En Grupo de recursos, seleccione su grupo de recursos existente, rg-oracle.
- En Nombre de cuenta de almacenamiento, introduzca oracbkup1.
- Asegúrese de que Ubicación está configurada en la misma región que los demás recursos del grupo de recursos.
- Establezca Rendimiento en Estándar.
- Para Tipo de cuenta, seleccione AlmacenamientoV2 (propósito general v2).
- En Replicación, seleccione Almacenamiento con redundancia local (LRS) .
Seleccione la ficha Avanzado. En Azure Files, establezca Compartir archivos grandes en Activado. Seleccione Revisar y crear y, luego, Crear.
Una vez creada la cuenta de almacenamiento, vaya al recurso y seleccione Ficheros compartidos.
Seleccione +Fichero compartido y, a continuación, en el panel Nuevo fichero compartido:
En Nombre, introduzca oabkup1.
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. Establecer la cuota en 10 tebibytes (TiB) no incurre 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.
En Niveles, seleccione Transacción optimizada.
Seleccione Crear.
Cuando se cree el recurso compartido de archivos, seleccione oabkup1 en el panel Configuración del recurso compartido de archivos.
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.
Monte el recurso compartido de archivos de Azure en la máquina virtual
Cree el punto de montaje:
sudo mkdir /mnt/orabackup
Establezca las credenciales:
if [ ! -d "/etc/smbcredentials" ]; then sudo mkdir /etc/smbcredentials fi
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
Cambie los permisos en el archivo de credenciales:
sudo chmod 600 /etc/smbcredentials/orabackup1.cred
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'
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
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.
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';
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;
Confirme los detalles de las modificaciones de la configuración:
RMAN> show all;
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;
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.
El uso de RMAN y Azure Files para la copia de seguridad de bases 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 grandes, 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
Cierre la instancia de Oracle:
sqlplus / as sysdba SQL> shutdown abort ORACLE instance shut down.
Quite los archivos de datos de la base de datos:
cd /u02/oradata/TEST rm -f *.dbf
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;
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