{"id":1351,"date":"2026-08-20T17:09:13","date_gmt":"2026-08-20T23:09:13","guid":{"rendered":"https:\/\/folken-it.com\/?p=1351"},"modified":"2026-08-21T08:32:49","modified_gmt":"2026-08-21T14:32:49","slug":"oracle-rman-para-backup-y-recovery","status":"publish","type":"post","link":"https:\/\/folken-it.com\/?p=1351","title":{"rendered":"Oracle RMAN para Backup y Recovery"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Oracle RMAN (<strong>Recovery Manager<\/strong>) es una de las herramientas fundamentales para administrar <strong>respaldos, restauraci\u00f3n y recuperaci\u00f3n de bases de datos Oracle<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si trabajas como DBA, Production Support, SRE o administrador de infraestructura Oracle, conocer RMAN puede ser fundamental cuando necesitas responder preguntas como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00bfTenemos un backup v\u00e1lido?<\/li>\n\n\n\n<li>\u00bfCu\u00e1ndo fue el \u00faltimo backup?<\/li>\n\n\n\n<li>\u00bfPodemos recuperar la base de datos?<\/li>\n\n\n\n<li>\u00bfFalta alg\u00fan archive log?<\/li>\n\n\n\n<li>\u00bfC\u00f3mo restauramos un datafile?<\/li>\n\n\n\n<li>\u00bfC\u00f3mo recuperamos una base completa?<\/li>\n\n\n\n<li>\u00bfC\u00f3mo validamos los backups sin restaurarlos?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En esta gu\u00eda veremos algunos de los comandos RMAN m\u00e1s utilizados en operaciones diarias.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Importante:<\/strong> Los ejemplos son educativos. Los procedimientos reales dependen de la versi\u00f3n de Oracle, arquitectura, FRA, ASM\/filesystem, Recovery Catalog, pol\u00edtica de retenci\u00f3n, encryption, RAC y estrategia de recuperaci\u00f3n de cada organizaci\u00f3n. Antes de ejecutar <code>RESTORE<\/code>, <code>RECOVER<\/code>, <code>DELETE<\/code>, <code>CROSSCHECK<\/code> o cambios de configuraci\u00f3n en producci\u00f3n, valida el procedimiento correspondiente.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">1. Conectarse a RMAN<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Para conectarnos a la base de datos local:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rman target \/\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos especificar un servicio:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rman target sys@PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">RMAN mostrar\u00e1 informaci\u00f3n similar a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>connected to target database: PROD\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si utilizamos Recovery Catalog:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rman target \/ catalog rman@RCAT\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Conceptualmente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN\n \u2193\nTarget Database\n \u2193\nControl File\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Opcionalmente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN\n \u2193\nTarget Database\n +\nRecovery Catalog\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">2. Revisar la configuraci\u00f3n de RMAN<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Uno de los primeros comandos que debemos conocer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; SHOW ALL;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este comando muestra la configuraci\u00f3n persistente de RMAN.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos encontrar par\u00e1metros relacionados con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Retention Policy\nDevice Type\nControlfile Autobackup\nParallelism\nCompression\nEncryption\nBackup Optimization\nArchivelog Deletion Policy\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de modificar una estrategia de backup, conviene entender primero la configuraci\u00f3n existente.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">3. Mostrar informaci\u00f3n de los backups<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Para listar todos los backups conocidos por RMAN:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mostrar un resumen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP SUMMARY;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esta es una de las consultas m\u00e1s pr\u00e1cticas para operaciones diarias.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos consultar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP OF DATABASE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Controlfile:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP OF CONTROLFILE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">SPFILE:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP OF SPFILE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Archive logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP OF ARCHIVELOG ALL;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">4. Generar un backup completo de la base<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Un backup b\u00e1sico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP DATABASE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para incluir archive logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP DATABASE PLUS ARCHIVELOG;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este \u00faltimo es un comando muy conocido porque permite respaldar la base junto con los archive logs necesarios para recuperaci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">5. Backup comprimido<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos generar backupsets comprimidos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP AS COMPRESSED BACKUPSET DATABASE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Base de datos y archive logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La compresi\u00f3n puede reducir almacenamiento, aunque tambi\u00e9n puede incrementar consumo de CPU.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">6. Backup de un tablespace<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">No siempre necesitamos respaldar toda la base.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP TABLESPACE USERS;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Otro tablespace:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP TABLESPACE APP_DATA;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">7. Backup de un datafile<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos respaldar un datafile espec\u00edfico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP DATAFILE 5;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n es posible identificar datafiles desde SQL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n    file_id,\n    tablespace_name,\n    file_name\nFROM dba_data_files\nORDER BY file_id;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">8. Backup del Control File<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">El control file es cr\u00edtico para la recuperaci\u00f3n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP CURRENT CONTROLFILE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos configurar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; CONFIGURE CONTROLFILE AUTOBACKUP ON;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verificar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; SHOW CONTROLFILE AUTOBACKUP;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En muchos ambientes productivos, mantener habilitado el autobackup del control file es una parte importante de la estrategia de recuperaci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">9. Backup del SPFILE<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP SPFILE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos respaldar SPFILE y controlfile juntos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP CURRENT CONTROLFILE;\nRMAN&gt; BACKUP SPFILE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando <code>CONTROLFILE AUTOBACKUP<\/code> est\u00e1 habilitado, RMAN puede proteger autom\u00e1ticamente informaci\u00f3n cr\u00edtica relacionada con controlfile y SPFILE en determinados escenarios de backup.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">10. Backup de Archive Logs<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Todos los archive logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP ARCHIVELOG ALL;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos respaldarlos y posteriormente eliminarlos, seg\u00fan la pol\u00edtica establecida:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP ARCHIVELOG ALL DELETE INPUT;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mucho cuidado con <code>DELETE INPUT<\/code>.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este comando elimina archive logs respaldados conforme RMAN procesa la operaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de utilizarlo debemos comprender:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data Guard;<\/li>\n\n\n\n<li>pol\u00edticas de retenci\u00f3n;<\/li>\n\n\n\n<li>replicas;<\/li>\n\n\n\n<li>necesidades de recuperaci\u00f3n;<\/li>\n\n\n\n<li>FRA;<\/li>\n\n\n\n<li>archive destinations.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">No deber\u00edamos borrar archive logs \u00fanicamente porque el filesystem est\u00e1 lleno.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">11. Forzar generaci\u00f3n de Archive Log antes del backup<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Desde SQL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER SYSTEM ARCHIVE LOG CURRENT;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n RMAN puede manejar archive logs dentro de operaciones como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP DATABASE PLUS ARCHIVELOG;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">12. Revisar qu\u00e9 backups existen<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Resumen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP SUMMARY;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por base:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP OF DATABASE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por archive logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP OF ARCHIVELOG ALL;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST COPY;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La diferencia conceptual importante es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Backup Set\nvs.\nImage Copy\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Un backupset utiliza el formato interno de RMAN.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una image copy es una copia de un archivo de base de datos administrada por RMAN.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">13. Reportar backups obsoletos<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; REPORT OBSOLETE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">RMAN utiliza la pol\u00edtica de retenci\u00f3n configurada para determinar qu\u00e9 backups considera obsoletos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos revisar la pol\u00edtica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; SHOW RETENTION POLICY;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CONFIGURE RETENTION POLICY TO REDUNDANCY 2;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">o una Recovery Window:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">No debemos confundir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OBSOLETE\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EXPIRED\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Son conceptos diferentes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">14. Eliminar backups obsoletos<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Primero:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; REPORT OBSOLETE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s, si la pol\u00edtica y el procedimiento lo permiten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; DELETE OBSOLETE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">RMAN solicitar\u00e1 confirmaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Existe tambi\u00e9n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; DELETE NOPROMPT OBSOLETE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">pero automatizar eliminaciones requiere todav\u00eda m\u00e1s cuidado.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">15. CROSSCHECK<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Uno de los comandos fundamentales:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; CROSSCHECK BACKUP;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; CROSSCHECK ARCHIVELOG ALL;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>CROSSCHECK<\/code> compara la informaci\u00f3n que RMAN tiene registrada con la disponibilidad f\u00edsica de los archivos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conceptualmente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN Repository\n      \u2193\n\u00bfExiste f\u00edsicamente?\n      \u2193\nBackup \/ Archive Log\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">16. Backup EXPIRED<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s de un <code>CROSSCHECK<\/code>, RMAN puede marcar determinados objetos como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EXPIRED\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos consultar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST EXPIRED BACKUP;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para archive logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST EXPIRED ARCHIVELOG ALL;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eliminar las referencias expiradas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; DELETE EXPIRED BACKUP;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; DELETE EXPIRED ARCHIVELOG ALL;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto elimina registros del repositorio RMAN correspondientes a objetos que ya no se encuentran disponibles; no es lo mismo que eliminar un backup f\u00edsico v\u00e1lido.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">17. Validar un backup<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Que un backup aparezca en:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>LIST BACKUP\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">no significa que debamos asumir autom\u00e1ticamente que todo est\u00e1 perfecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RMAN proporciona mecanismos de validaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; VALIDATE DATABASE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP VALIDATE DATABASE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Estas operaciones pueden utilizarse para comprobar la capacidad de RMAN para leer bloques y detectar determinados problemas sin crear necesariamente un backup normal.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">18. Validar una restauraci\u00f3n sin restaurar realmente<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Uno de los comandos m\u00e1s \u00fatiles:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RESTORE DATABASE VALIDATE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto permite verificar si RMAN encuentra los backups necesarios para realizar la restauraci\u00f3n, sin efectuar la restauraci\u00f3n real de la base.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos usar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RESTORE DATAFILE 5 VALIDATE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este concepto es muy importante:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Tener backups no es lo mismo que demostrar que podemos restaurarlos.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">19. RESTORE vs RECOVER<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Esta diferencia debe quedar muy clara.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RESTORE<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">RMAN obtiene los archivos desde el backup.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Backup\n  \u2193\nRESTORE\n  \u2193\nDatafile\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">RECOVER<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Oracle aplica redo\/archive logs para llevar esos archivos hacia un estado consistente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Restored Datafile\n      \u2193\nArchive Logs \/ Redo\n      \u2193\nRECOVER\n      \u2193\nRecovered Datafile\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso normalmente hablamos de:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RESTORE\n+\nRECOVER\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">20. Restaurar un datafile<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que perdimos el datafile 5.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos identificarlo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n    file_id,\n    tablespace_name,\n    file_name\nFROM dba_data_files\nWHERE file_id = 5;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Conceptualmente, el procedimiento puede involucrar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RESTORE DATAFILE 5;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">seguido por:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RECOVER DATAFILE 5;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Los pasos exactos de disponibilidad\/offline\/online dependen del escenario y de la versi\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">21. Restaurar un tablespace<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RESTORE TABLESPACE USERS;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RECOVER TABLESPACE USERS;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una recuperaci\u00f3n real puede requerir colocar temporalmente el tablespace offline dependiendo del escenario.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">22. Restaurar toda la base<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Un procedimiento conceptual t\u00edpico es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SHUTDOWN IMMEDIATE;\nSTARTUP MOUNT;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RESTORE DATABASE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RECOVER DATABASE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Finalmente, dependiendo del tipo de recuperaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER DATABASE OPEN;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">o podr\u00eda ser necesario:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER DATABASE OPEN RESETLOGS;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>RESETLOGS<\/code> no debe ejecutarse autom\u00e1ticamente.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su necesidad depende del escenario de recuperaci\u00f3n, especialmente en recuperaciones incompletas o determinadas restauraciones del controlfile.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">23. Point-in-Time Recovery<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">RMAN puede recuperar una base hasta un momento espec\u00edfico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RUN {\n    SET UNTIL TIME \"TO_DATE('2026-08-20 14:30:00','YYYY-MM-DD HH24:MI:SS')\";\n    RESTORE DATABASE;\n    RECOVER DATABASE;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s de una recuperaci\u00f3n incompleta normalmente existe un procedimiento espec\u00edfico para abrir la base, frecuentemente involucrando <code>RESETLOGS<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este tipo de recuperaci\u00f3n debe estar cuidadosamente planificado.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">24. Recovery por SCN<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos recuperar hasta un SCN:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RUN {\n    SET UNTIL SCN 123456789;\n    RESTORE DATABASE;\n    RECOVER DATABASE;\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">25. Recovery por sequence<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">En determinados escenarios:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RUN {\n    SET UNTIL SEQUENCE 10500;\n    RESTORE DATABASE;\n    RECOVER DATABASE;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En ambientes RAC debemos considerar tambi\u00e9n los redo threads correspondientes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">26. Restaurar Control File<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Si perdimos el controlfile y tenemos autobackup:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primero podemos iniciar la instancia:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>STARTUP NOMOUNT;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RESTORE CONTROLFILE FROM AUTOBACKUP;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Posteriormente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER DATABASE MOUNT;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">y continuar con el procedimiento de recuperaci\u00f3n correspondiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La recuperaci\u00f3n del controlfile es uno de los motivos por los que:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CONFIGURE CONTROLFILE AUTOBACKUP ON;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">es una configuraci\u00f3n tan importante.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">27. Restaurar SPFILE<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Si se pierde el SPFILE, dependiendo del escenario podemos arrancar la instancia con los par\u00e1metros m\u00ednimos necesarios y utilizar RMAN.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conceptualmente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RESTORE SPFILE FROM AUTOBACKUP;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s podremos continuar con el procedimiento de startup correspondiente.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">28. Revisar fallos detectados<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dependiendo de la versi\u00f3n y funcionalidad disponible:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST FAILURE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; ADVISE FAILURE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y en escenarios soportados:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; REPAIR FAILURE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Estas funciones pertenecen al Data Recovery Advisor, cuya disponibilidad y uso dependen de la versi\u00f3n\/edici\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">29. Revisar el FRA<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Muchas instalaciones Oracle utilizan Fast Recovery Area.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Desde SQL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n    name,\n    space_limit\/1024\/1024\/1024 AS limit_gb,\n    space_used\/1024\/1024\/1024 AS used_gb,\n    space_reclaimable\/1024\/1024\/1024 AS reclaimable_gb\nFROM v$recovery_file_dest;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM v$flash_recovery_area_usage;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Un FRA lleno puede provocar problemas importantes con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Archive Logs\nRMAN Backups\nFlashback Logs\nDatabase availability\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">No debemos resolver autom\u00e1ticamente un FRA lleno eliminando archivos desde Linux.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RMAN debe mantener consistencia entre:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Archivos f\u00edsicos\n        \u2195\nRMAN Repository\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">30. Revisar jobs de RMAN desde Oracle<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos consultar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n    session_key,\n    input_type,\n    status,\n    start_time,\n    end_time\nFROM v$rman_backup_job_details\nORDER BY start_time DESC;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para revisar duraci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n    input_type,\n    status,\n    start_time,\n    end_time,\n    elapsed_seconds\nFROM v$rman_backup_job_details\nORDER BY start_time DESC;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto resulta muy \u00fatil para monitoring y Production Support.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">31. Revisar progreso de una operaci\u00f3n<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Para determinadas operaciones de larga duraci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n    sid,\n    serial#,\n    opname,\n    sofar,\n    totalwork,\n    units\nFROM v$session_longops\nWHERE totalwork &gt; 0\nAND sofar &lt;&gt; totalwork;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puede ayudarnos a identificar operaciones RMAN activas y su progreso.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">32. Configurar paralelismo<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; CONFIGURE DEVICE TYPE DISK PARALLELISM 4;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El paralelismo puede mejorar rendimiento, pero tambi\u00e9n puede aumentar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU\nI\/O\nStorage throughput\nNetwork utilization\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00e1s channels no significan autom\u00e1ticamente backups m\u00e1s r\u00e1pidos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">33. Configurar compresi\u00f3n<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos revisar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; SHOW COMPRESSION ALGORITHM;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y configurar un algoritmo soportado por nuestra versi\u00f3n\/licenciamiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La decisi\u00f3n debe balancear:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Menor almacenamiento\n        \u2195\nMayor consumo CPU\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">34. Backup Optimization<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos habilitar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; CONFIGURE BACKUP OPTIMIZATION ON;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Consultar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; SHOW BACKUP OPTIMIZATION;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La optimizaci\u00f3n puede evitar determinados backups redundantes cuando RMAN determina que ya existe una copia apropiada seg\u00fan sus reglas.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">35. Crear un backup con TAG<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Los tags ayudan much\u00edsimo a identificar backups.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP DATABASE TAG 'WEEKLY_FULL';\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Archive logs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; BACKUP ARCHIVELOG ALL TAG 'ARCH_DAILY';\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; LIST BACKUP TAG 'WEEKLY_FULL';\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">36. Un bloque RUN<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">RMAN permite agrupar comandos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RMAN&gt; RUN {\n    BACKUP DATABASE;\n    BACKUP ARCHIVELOG ALL;\n    BACKUP CURRENT CONTROLFILE;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto es muy com\u00fan en scripts automatizados.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">37. Ejemplo de script de backup<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Un ejemplo conceptual:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\nexport ORACLE_SID=PROD\nexport ORACLE_HOME=\/u01\/app\/oracle\/product\/19c\/dbhome_1\nexport PATH=$ORACLE_HOME\/bin:$PATH\n\nrman target \/ &lt;&lt;EOF\n\nRUN {\n    BACKUP AS COMPRESSED BACKUPSET DATABASE\n        TAG 'PROD_DB_BACKUP';\n\n    BACKUP ARCHIVELOG ALL\n        TAG 'PROD_ARCH_BACKUP';\n\n    BACKUP CURRENT CONTROLFILE\n        TAG 'PROD_CONTROLFILE';\n}\n\nEXIT;\n\nEOF\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En producci\u00f3n debemos agregar aspectos como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Logging\nError handling\nMonitoring\nExit codes\nNotifications\nRetention\nSecurity\nScheduling\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">38. Comandos que deber\u00edas memorizar<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Si est\u00e1s comenzando con RMAN, yo empezar\u00eda por estos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rman target \/\n\nSHOW ALL;\n\nLIST BACKUP SUMMARY;\n\nLIST BACKUP OF DATABASE;\n\nLIST BACKUP OF ARCHIVELOG ALL;\n\nBACKUP DATABASE;\n\nBACKUP DATABASE PLUS ARCHIVELOG;\n\nBACKUP AS COMPRESSED BACKUPSET DATABASE;\n\nBACKUP ARCHIVELOG ALL;\n\nBACKUP CURRENT CONTROLFILE;\n\nCROSSCHECK BACKUP;\n\nREPORT OBSOLETE;\n\nLIST EXPIRED BACKUP;\n\nVALIDATE DATABASE;\n\nRESTORE DATABASE VALIDATE;\n\nRESTORE DATABASE;\n\nRECOVER DATABASE;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Y desde SQL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM v$rman_backup_job_details\nORDER BY start_time DESC;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">39. Flujo de troubleshooting de backups<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que recibimos la alerta:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#8220;El backup nocturno de Oracle fall\u00f3.&#8221;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En lugar de volver a ejecutar inmediatamente el backup, podemos investigar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u00bfLa base est\u00e1 disponible?\n        \u2193\nRevisar estado de DB\n        \u2193\n\u00bfRMAN puede conectarse?\n        \u2193\nrman target \/\n        \u2193\n\u00bfD\u00f3nde fall\u00f3 el job?\n        \u2193\nV$RMAN_BACKUP_JOB_DETAILS\n        \u2193\nRevisar RMAN log\n        \u2193\nIdentificar ORA-\/RMAN- errors\n        \u2193\n\u00bfHay espacio disponible?\n        \u2193\nFilesystem \/ ASM \/ FRA\n        \u2193\n\u00bfArchive destination est\u00e1 lleno?\n        \u2193\nFRA \/ Archive Logs\n        \u2193\n\u00bfExiste problema de I\/O?\n        \u2193\nStorage\n        \u2193\n\u00bfBackup repository est\u00e1 consistente?\n        \u2193\nCROSSCHECK\n        \u2193\nCorregir causa\n        \u2193\nEjecutar \/ validar backup\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">40. Flujo conceptual de recuperaci\u00f3n<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando existe p\u00e9rdida de un archivo, piensa primero en:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u00bfQu\u00e9 se perdi\u00f3?\n      \u2193\nDatafile?\nControlfile?\nSPFILE?\nToda la base?\n      \u2193\n\u00bfQu\u00e9 backups tenemos?\n      \u2193\nLIST BACKUP\n      \u2193\n\u00bfSon utilizables?\n      \u2193\nRESTORE ... VALIDATE\n      \u2193\n\u00bfHasta qu\u00e9 punto debemos recuperar?\n      \u2193\nLatest?\nTime?\nSCN?\nSequence?\n      \u2193\nRESTORE\n      \u2193\nRECOVER\n      \u2193\nValidaci\u00f3n\n      \u2193\nOPEN \/ RESETLOGS si corresponde\n      \u2193\nValidaci\u00f3n funcional\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">La regla m\u00e1s importante de RMAN<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Existe una diferencia enorme entre decir:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>&#8220;Tenemos backups.&#8221;<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">y poder decir:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>&#8220;Sabemos que podemos restaurar la base.&#8221;<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Un backup exitoso es solamente una parte de una estrategia de recuperaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una estrategia madura deber\u00eda considerar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Backup\n   \u2193\nMonitoring\n   \u2193\nRetention\n   \u2193\nValidation\n   \u2193\nRestore Testing\n   \u2193\nRecovery Testing\n   \u2193\nRTO \/ RPO\n   \u2193\nDocumentaci\u00f3n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">RPO y RTO<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dos conceptos fundamentales:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>RPO \u2014 Recovery Point Objective<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfCu\u00e1ntos datos podemos permitirnos perder?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>RTO \u2014 Recovery Time Objective<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfCu\u00e1nto tiempo podemos permitirnos estar sin servicio?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estos dos objetivos deber\u00edan influir directamente en la estrategia de RMAN.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, tener un backup completo diario puede parecer suficiente t\u00e9cnicamente, pero si el negocio exige:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RPO = 15 minutos\nRTO = 1 hora\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">la arquitectura de recuperaci\u00f3n necesita dise\u00f1arse espec\u00edficamente para cumplir esos objetivos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El verdadero objetivo de RMAN no es crear archivos de backup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es garantizar que, cuando ocurra una falla, podamos <strong>restaurar los datos correctos, recuperar hasta el punto requerido y devolver el servicio dentro de los objetivos establecidos por el negocio<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00bfCu\u00e1ndo fue la \u00faltima vez que validaste una restauraci\u00f3n de tus backups de Oracle?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oracle RMAN (Recovery Manager) es una de las herramientas fundamentales para administrar respaldos, restauraci\u00f3n y recuperaci\u00f3n de bases de datos Oracle. Si [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1352,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[56,55],"tags":[],"class_list":["post-1351","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-databases","category-oracle"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/folken-it.com\/wp-content\/uploads\/2026\/08\/rman.png?fit=1536%2C1024&ssl=1","_links":{"self":[{"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/posts\/1351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1351"}],"version-history":[{"count":1,"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/posts\/1351\/revisions"}],"predecessor-version":[{"id":1353,"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/posts\/1351\/revisions\/1353"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=\/wp\/v2\/media\/1352"}],"wp:attachment":[{"href":"https:\/\/folken-it.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/folken-it.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}