🧪 RMAN al Rescate: Guía completa de Backup y Recovery en Oracle 12c y 19c

🧪 La Botica del DBA – Edición Especial
"No hay nada más valioso que un backup… hasta que necesitas restaurarlo."
— Todo DBA alguna vez.
🧠 ¿Por qué este artículo?
Porque como buen boticario del dato, debes tener a mano tus fórmulas magistrales. Aquí te comparto un recetario práctico para dominar Oracle RMAN en escenarios reales, desde respaldos simples hasta recuperación de catástrofes, clonación de bases y restauración puntual de tablas.
🛠️ Preparando la botica: configuración base de RMAN
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/fast_recovery_area/%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
💾 Fórmulas magistrales para backups
🔸 Backup completo
BACKUP DATABASE PLUS ARCHIVELOG;
🔸 Backup incremental
Nivel 0 (completo):
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;
Nivel 1 (diferencial):
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG;
🔸 Backup de tablespaces específicos
BACKUP TABLESPACE users, example;
💥 Procedimientos de restauración
🔄 Recuperación completa
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
📦 Restaurar tablespaces
RESTORE TABLESPACE users, example;
RECOVER TABLESPACE users, example;
🔍 Recuperar datafiles dañados
- Identifica:
SELECT FILE#, STATUS, ERROR, CHANGE#, TIME FROM V$RECOVER_FILE;
- Restaura y recupera:
RESTORE DATAFILE '/ruta/archivo.dbf';
RECOVER DATAFILE '/ruta/archivo.dbf';
⚙️ Casos especiales y avanzados
🧠 Restaurar controlfile perdido
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM AUTOBACKUP;
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
🔁 Pérdida total de redo logs
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN RESETLOGS;
📂 Restaurar archived logs
RESTORE ARCHIVELOG ALL;
⏳ Point-in-Time Recovery (PITR)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RUN {
SET UNTIL TIME "TO_DATE('2023-05-15 14:00:00', 'YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}
ALTER DATABASE OPEN RESETLOGS;
🧬 Recuperación de una tabla eliminada
CREATE TABLE users_temp AS
SELECT * FROM users AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' DAY);
INSERT INTO users SELECT * FROM users_temp;
COMMIT;
DROP TABLE users_temp;
🔎 Verificación y mantenimiento de backups
CROSSCHECK BACKUP;
LIST BACKUP;
DELETE OBSOLETE;
VALIDATE BACKUPSET <backup_set_key>;
📂 Restauración de archivos segmentados o overflow
RESTORE DATAFILE <file_number>;
RECOVER DATAFILE <file_number>;
-- o
RESTORE DATAFILE '/path/to/overflow_file.dbf';
RECOVER DATAFILE '/path/to/overflow_file.dbf';
🚫 Tablespaces de solo lectura
BACKUP TABLESPACE read_only_tbs;
RESTORE TABLESPACE read_only_tbs;
RECOVER TABLESPACE read_only_tbs;
🧪 Clonación con RMAN
DUPLICATE TARGET DATABASE TO clone_db
FROM ACTIVE DATABASE
SPFILE
SET DB_NAME='clone_db'
SET DB_UNIQUE_NAME='clone_db'
NOFILENAMECHECK;
🧾 Conclusión del boticario
Tener tus fórmulas listas no solo te salva de errores, te da paz.
Estos scripts han sido probados en entornos reales y están listos para que los adaptes a tu laboratorio o producción.
Recuérdalo siempre: el DBA preparado es el DBA con buenas recetas y un buen boticario.
📢 ¿Te gustaría más contenido práctico así?
a nuestra newsletter semanal en LaBoticaDelDBA.com y recibe dosis semanales de pasillas , recetas y elixires para DBAs.






