Aquí te explico los pasos para configurar RMAN (Oracle Recovery Manager) para realizar backups en Oracle Database 19c:
Conectar a la base de datos con RMAN:
- Abre una sesión de SQL*Plus y conéctate a la base de datos como usuario SYSDBA.
- Inicia RMAN con el comando:
rman target /
Configurar el destino de los backups:
- Utiliza el comando
configurepara establecer el directorio donde se almacenarán los archivos de backup. - Ejemplo:
configure controlfile autobackup format for device type disk to '/rman_backups/autobackup_%F';
Configurar la política de retención:
- Define por cuánto tiempo deseas conservar los archivos de backup.
- Ejemplo:
configure retention policy to recovery window of 30 days;
Configurar el catálogo de recuperación (opcional):
- Si lo deseas, puedes configurar un catálogo de recuperación RMAN para llevar un registro detallado de tus backups.
- Sigue los pasos de creación y configuración del catálogo de recuperación.
Realizar un backup completo:
- Ejecuta el comando
backup databasepara realizar un backup completo de la base de datos. - Ejemplo:
backup database;
Programar backups recurrentes:
- Puedes crear scripts de RMAN o utilizar herramientas de programación de tareas del sistema operativo para programar backups periódicos.
- Ejemplo de script RMAN para backup diario:
run {
backup database format '/rman_backups/db_backup_%d_%t_%s_%p.bkp';
backup current controlfile format '/rman_backups/control_backup_%d_%t_%s.ctl';
}
Monitorizar los backups:
- Revisa los registros de RMAN para asegurarte de que los backups se hayan realizado correctamente.
- Puedes utilizar el comando
list backuppara ver el historial de backups.
Recuerda que estos son los pasos básicos. Dependiendo de tus requisitos específicos, podrías necesitar configurar opciones adicionales, como compresión, cifrado, notificaciones, entre otras.
Práctica
Aquí te presento una práctica completa con diferentes ejemplos de cómo hacer respaldos utilizando RMAN:
Conectar a la base de datos con RMAN:
$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Tue Dec 26 12:34:56 2024
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN>
Configurar el destino de los backups:
RMAN> configure controlfile autobackup format for device type disk to '/rman_backups/autobackup_%F';
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/rman_backups/autobackup_%F';
new RMAN configuration parameters are successfully stored
Configurar la política de retención:
RMAN> configure retention policy to recovery window of 30 days;
new retention policy was successfully set
Realizar un backup completo de la base de datos:
RMAN> backup database;
Starting backup at 26-DIC-24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=12 device type=DISK
channel ORA_DISK_1: starting full database backup
channel ORA_DISK_1: specifying database backup set
channel ORA_DISK_1: starting piece 1 at 26-DIC-24
channel ORA_DISK_1: finished piece 1 at 26-DIC-24
piece handle=/rman_backups/db_backup_20241226_123456_1_1.bkp tag=TAG20241226T123456 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:05:12
Finished backup at 26-DIC-24
Realizar un backup incremental de la base de datos:
RMAN> backup incremental level 1 database;
Starting backup at 27-DIC-24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=12 device type=DISK
channel ORA_DISK_1: starting incremental level 1 database backup
channel ORA_DISK_1: specifying database backup set
channel ORA_DISK_1: starting piece 1 at 27-DIC-24
channel ORA_DISK_1: finished piece 1 at 27-DIC-24
piece handle=/rman_backups/db_backup_inc_20241227_123456_1_1.bkp tag=TAG20241227T123456 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:30
Finished backup at 27-DIC-24
Realizar un backup de los archivos de control:
RMAN> backup current controlfile format '/rman_backups/control_backup_%d_%t_%s.ctl';
Starting backup at 27-DIC-24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=12 device type=DISK
channel ORA_DISK_1: starting controlfile backup
output file name=/rman_backups/control_backup_20241227_123456_2.ctl
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05
Finished backup at 27-DIC-24
Programar un backup diario:
RMAN> run {
2> backup database format '/rman_backups/db_backup_%d_%t_%s_%p.bkp';
3> backup current controlfile format '/rman_backups/control_backup_%d_%t_%s.ctl';
4> }
Starting backup at 28-DIC-24
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=12 device type=DISK
channel ORA_DISK_1: starting full database backup
channel ORA_DISK_1: specifying database backup set
channel ORA_DISK_1: starting piece 1 at 28-DIC-24
channel ORA_DISK_1: finished piece 1 at 28-DIC-24
piece handle=/rman_backups/db_backup_20241228_123456_3_1.bkp tag=TAG20241228T123456 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:05:12
channel ORA_DISK_1: starting controlfile backup
output file name=/rman_backups/control_backup_20241228_123456_4.ctl
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05
Finished backup at 28-DIC-24
Programar un respaldo en shell
Aquí te presento un script de shell en Linux que programa un backup incremental con archivos de control y datafiles utilizando RMAN en Oracle Database 19c:
- Guarda el script en un archivo, por ejemplo,
rman_backup.sh. - Haz que el script sea ejecutable con el comando
chmod +x rman_backup.sh. - Ejecuta el script con el comando
./rman_backup.sh.
#!/bin/bash
# Configuración
ORACLE_HOME="/u01/app/oracle/product/19.0.0/dbhome_1"
ORACLE_SID="orcl"
BACKUP_DIR="/rman_backups"
RETENTION_POLICY="recovery window of 30 days"
# Validar que ORACLE_HOME y ORACLE_SID estén configurados
if [ -z "$ORACLE_HOME" ] || [ -z "$ORACLE_SID" ]; then
echo "Error: ORACLE_HOME y ORACLE_SID deben estar configurados."
exit 1
fi
# Establecer variables de entorno
export ORACLE_HOME
export ORACLE_SID
# Crear el directorio de backups si no existe
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
# Ejecutar el backup incremental con RMAN
$ORACLE_HOME/bin/rman target / <<EOF
configure controlfile autobackup format for device type disk to '$BACKUP_DIR/autobackup_%F';
configure retention policy to $RETENTION_POLICY;
backup incremental level 1 database format '$BACKUP_DIR/db_backup_inc_%d_%t_%s_%p.bkp';
backup current controlfile format '$BACKUP_DIR/control_backup_%d_%t_%s.ctl';
exit;
EOF
echo "Backup incremental completado."
Veamos qué hace este script:
- Establece las variables de configuración:
ORACLE_HOME: la ruta del directorio de instalación de Oracle.ORACLE_SID: el SID de la base de datos.BACKUP_DIR: el directorio donde se almacenarán los backups.RETENTION_POLICY: la política de retención de los backups.
- Valida que
ORACLE_HOMEyORACLE_SIDestén configurados correctamente. - Crea el directorio de backups si no existe.
- Ejecuta el comando RMAN para realizar el backup incremental:
- Configura el formato del autobackup de los archivos de control.
- Configura la política de retención.
- Realiza un backup incremental de nivel 1 de la base de datos.
- Realiza un backup de los archivos de control actuales.
Después de ejecutar el script, podrás encontrar los archivos de backup en el directorio $BACKUP_DIR con los siguientes nombres de archivo:
autobackup_<timestamp>.bkp: archivos de autobackup de los archivos de control.db_backup_inc_<fecha>_<hora>_<secuencia>_<pieza>.bkp: archivos de backup incremental de nivel 1 de la base de datos.control_backup_<fecha>_<hora>_<secuencia>.ctl: archivos de backup de los archivos de control.
Recuerda que este es un ejemplo básico y que deberías adaptarlo a tus requisitos específicos, como agregar opciones de compresión, cifrado o notificaciones.
Si tienes alguna pregunta o necesitas más ayuda, no dudes en consultarme.






Deja un comentario