Restore con RMAN

El restore depende de como se ha hecho el backup: es así.

Si recordamos los pasos a seguir en el restore, en caso de desastre total:

  1. initSID.ora
  2. spfile
  3. controlfile
  4. datafiles
  5. archivelogs

Una de las dificultades es recuperar hasta el controlfile: En efecto, el controlfile contiene el catálogo del backup, pero hasta que no lo hayamos recuperado, no nos podemos apoyar en ningún catálogo.

Alternativas:

  • Utilizar un catálogo de RMAN en BBDD para recuperar el spfile y el controlfile.
    • Personalmente no lo recomiendo
  • Guardar el backup de estos ficheros en un fichero que sepamos su nombre:
    • De esta forma, lo podemos recuperar sin problemas.

Restore del initSID.ora

Ya hemos dicho que se recomienda utilizar spfile y, entonces, este fichero solo contiene una linea constante:

spfile='/nombre/completo/del/fichero/spfile'

Por tanto, la restauración es manual editando el fichero.

Restore del spfile

Recordemos que en el paso de backup, aconsejamos parametrizar el backup según:

CONFIGURE CONTROLFILE AUTOBACKUP ON; 
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/directorio/completo/%F';

De esta forma, cada backup incluye, al final el backup del controlfile y el spfile y se deja en un directorio conocido.

El formato %F especificado, se substituye por la fecha (dia y hora del backup).

Debemos recordar que el fichero generado es un backup set y se debe recuperar con RMAN.

La restauración se realizará según:

A continuación, para restaurar de cinta, ejecutar:

rman TARGET /
RMAN> SET DBID 1447326980 # El DBID obtenido antes del backup
RMAN> STARTUP FORCE NOMOUNT; # Para arrancar con un spfile ficticio
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE sbt TO '%F';
RMAN> RUN
{
  ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
  RESTORE SPFILE TO '/nombre/completo/spfile' FROM AUTOBACKUP; # FROM AUTOBACKUP es necesario si se utiliza NOCATALOG
}
RMAN> STARTUP FORCE NOMOUNT; # ahora, se arranca con el spfile

Para restaurar de disco, ejecutar:

rman TARGET /
RMAN> SET DBID 1447326980 # El DBID obtenido antes del backup
RMAN> STARTUP FORCE NOMOUNT; # Para arrancar con un spfile ficticio
RMAN> RUN
{
  RESTORE SPFILE TO '/nombre/completo/spfile' FROM AUTOBACKUP RECOVERY AREA '/path/al/directorio/de/autobackup';
            # FROM AUTOBACKUP es necesario si se utiliza NOCATALOG
}
RMAN> STARTUP FORCE NOMOUNT; # ahora, se arranca con el spfile

Restore del Controlfile

Una vez restaurado el spfile y arrancado la BBDD, se debe restaurar el controlfile, también a partir de un autobackup y de forma similar al spfile.

rman TARGET /
RMAN> SET DBID 1447326980 # El DBID obtenido antes del backup
  RESTORE CONTROLFILE FROM /path/completo/del/fichero/de/autobackup';
RMAN> STARTUP FORCE MOUNT; # ahora, se arranca con el controlfile

Restore de los datafiles

Al haber restaurado el controlfile, ya tenemos el catalogo de los backups hechos con RMAN

Para restaurar desde cinta:

rman TARGET /
RMAN> RUN
{
  ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
  RESTORE DATABASE;
}

Para restaurar desde disco:

rman TARGET /
RMAN> RUN
{
  RESTORE DATABASE;
}

Es asi de sencillo.

Por supuesto, podemos utilizar más opciones:

Antes del restore, podemos utilizar una cláusule

SET UNTIL ...

Para indicar hasta cuando queremos restaurar.

etc.