Restaurar un Backup de RMAN en otro Servidor



El objectivo de este documento es explicar como restaurar un Backup de Rman en un servidor diferente del Original.

NOTA: Este documento Usa como ejemplo un UNIX

Restaurando un Backup en otro nodo

El ejemplo Asume:

  1. La BBDD Origen está en el Host A
  2. La BBDD a Restarura está en el Host B
  3. La estrucutra de directorios del B es diferente de A
  4. El SID no cambiará en la BBDD Restaruada
  5. Se usa Recovery Catalog

Serán necesarios los pasos siguientes:

  • Backup del Origen en el host A
  • Listado de los PATHs del Host A
  • Llevarse los Backups al Host B
  • Copiar el init.ora en el Host B
  • Editar el init.ora para hacer los cambios de la estructura de directorios
  • Configurar SQL*Net desde el Host hasta el recovery catalog y la bbdd duplicada
  • Añadir el password file a la BBDD Duplicada
  • Startup nomount de la BBDD duplicada
  • RMAN restaurar los controlfile(s)
  • Alter database mount (Duplicada)
  • Restore y renombrado de los datafiles
  • Recover y open de la BBDD

Backup de la BBDD

Evidentemente antes de porder hacer la restauracion hemos de haber hecho el Backup del Origen con rman:

En el siguiente ejemplo se hace un Backup ONLINE, y contra disco.

  run {
    allocate channel t1 type disk;
    allocate channel t2 type disk;
    allocate channel t3 type disk;
    #backup de la BBDD
    backup
       tag BCK_bbdd_Open
       format '/oracle/backups/BFS/df_%u'
    database;
    # switch out of the current logfile
    sql 'alter system archive log current';
    #backup de loa archived logs
    backup archivelog all
       format '/oracle/backups/BFS/al_%u';
    # Backup de los controlfile
    backup current controlfile tag = cf1 format '/oracle/backups/BFS/cf_%u';
    }

Listado de los PATHS (Host A)


Necesitaremos los nº y Path de los datafiles. Éstos cambiaran en el Host B

SVRMGR> select file#, name from v$datafile;
file# name
----- ------------------------------
1 /oracle/OFA_base/u01/oradata/V805X/system01.dbf
2 /oracle/OFA_base/u01/oradata/V805X/rbs01.dbf
3 /oracle/OFA_base/u01/oradata/V805X/temp01.dbf
4 /oracle/OFA_base/u01/oradata/V805X/tools01.dbf
5 /oracle/OFA_base/u01/oradata/V805X/users01.dbf
6 /oracle/OFA_base/u01/oradata/V805X/users02.dbf
7 /oracle/OFA_base/u01/oradata/V805X/rbs02.dbf
8 /oracle/OFA_base/u01/oradata/V805X/rcvcat.dbf
SVRMGR> select group#, member from v$logfile;
group# member
----- ------------------------------
1 /oracle/OFA_base/u01/oradata/V805X/redo01.log
2 /oracle/OFA_base/u01/oradata/V805X/redo02.log
3 /oracle/OFA_base/u01/oradata/V805X/redo03.log

Llevar los Backups al host B

Disk Backups

Para el Restore, RMAN espera encontrar los ficheros en el mismo directorios en que se hicieron los Backups. Para los Backaups en disco, el DBA podrá solucionar esto, con un NFS, Creando el miso directorio en el el Host B, o creando links simbólicos con la estructura del Host A. Personalmente aconsejo los Links simbólicos.

Backups en Cinta

El software de Backups tiene que estar configurado en el Host B

init.ora en el host B

El “init.ora” tiene que estar disponible en el Host B. Tenemos que modificar:

* ifile
* *_dump_dest
* log_archive_dest*
* control_files

Configuración del SQL*Net

Si Ejecutamos rman desde el Host A:

* Configurar el tnsnames.ora en el Host A para conectarse al host B * Configurar el listener.ora en el Host B Para aceptar conexiones de la BBDD duplicada

Si Ejecutamos rman desde el Host B:

* Configurar el tnsnames.ora en el host B Para conectarse al Catálogo * Configurar el tnsnames.ora en el Host B para conectarse a la BBDD duplicada en el Host B

Password File

Para permitir a RMAN la conexiones remotas tenemos que crear el password file:

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=kernel

Recover de la BBDD duplicada

startup nomount
SVRMGR> startup nomount pfile=<location of init.ora>
Restaurar los controlfile(s)

Por ejemplo:

  run{
     allocate channel c1 type disk;
     restore controlfile;
  }
Montar la BBDD
SVRMGR> alter database mount;
Renombrar y restaurar los Datafiles, y el Recovery

RMAN puede usarse para cambiar la localizacion de los datafiles

Por ejemplo:

  run {
    allocate channel c1 type disk;
    allocate channel c2 type disk;
    allocate channel c3 type disk;
    set newname for datafile 1 to '/oracle/datafiles/system01.dbf';
    set newname for datafile 2 to '/oracle/datafiles/rbs01.dbf';
    set newname for datafile 3 to '/oracle/datafiles/temp01.dbf';
    set newname for datafile 4 to '/oracle/datafiles/tools01.dbf';
    set newname for datafile 5 to '/oracle/datafiles/users01.dbf';
    set newname for datafile 6 to '/oracle/datafiles/users02.dbf';
    set newname for datafile 7 to '/oracle/datafiles/rbs02.dbf';
    set newname for datafile 8 to '/oracle/datafiles/rcvcat.dbf';
    restore database;
    switch datafile all;
  }

Recover y open de la BBDD

Hacer un 'incomplete recovery:'


SVRMGR> recover database using backup controlfile until cancel;

SVRMGR> alter database open resetlogs;

NOTA: Esto creará los Online redo logs en el mismo ligar que en Host A. Si este directorio no existe, Fallara con:

 ora-344 : unable to recreate online log <name>

El workaround es renombrar los logfiles y abrir la BBDD:

SVRMGR> alter database rename file '<host A location>' to '<host B location>';

O otra manera es borrar los Grupos de LOGFILES y recrearlos


Discusión

Enter your comment (wiki syntax is allowed):

Herramientas personales