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:
- La BBDD Origen está en el Host A
- La BBDD a Restarura está en el Host B
- La estrucutra de directorios del B es diferente de A
- El SID no cambiará en la BBDD Restaruada
- 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