Restaurar backup de RMAN en otro servidor windows con las mismas rutas
Hola.
En este post voy a explicar cómo
restaurar un backup RMAN de
Oracle 11g en otro
servidor windows. Hace tiempo escribí otro artículo similar sobre la restauración de una base de datos
Oracle en otro servidor pero este artículo es utilizando
Recovery Manager exclusivamente y con ambas bases de datos usando las
mismas rutas.
En este caso la
base de datos origen y la base de datos destino se encuentran en la misma ubicación y tienen el mismo nombre:
D:\app\<ORACLE_BASE>\
Archivos necesarios.
Primero debemos obtener los archivos necesarios de la base de datos origen para la restauración en el nuevo servidor.
1.- Backup de la base de datos origen
2.- Password file
3.- Pfile de la base de datos origen
Para obtener estos archivos, sigan los siguientes pasos:
1.- Backup de la base de datos origen con RMAN
RMAN> BACKUP DATABASE;
.
piece handle=D:\app\<ORACLE_BASE>\flash_recovery_area\DATABASE\BACKUPSET\2019_10_06\O1_MF_
NNNDF_TAG20191006T150022_GSNGG8C7_.BKP tag=TAG20191006T150022 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:02:16
Finished backup at 06-OCT-19
Starting Control File and SPFILE Autobackup at 06-OCT-19
piece handle=D:\app\<ORACLE_BASE>\flash_recovery_area\DATABASE\AUTOBACKUP\2019_10_06\O1_MF
_S_1020956559_GSNGLJXS_.BKP comment=NONE
Finished Control File and SPFILE Autobackup at 06-OCT-19
RMAN>
De los archivos generados, necesitamos copiar los archivos generados en las carpetas AUTOBACKUP y BACKUPSET del Flash recovery area.
-El backup del control file se encuentra en la carpeta AUTOBACKUP
-El backup de los datos se encuentra en la carpeta BACKUPSET
2.- El password file se encuentra en D:\app\<ORACLE_BASE>\product\11.2.0\dbhome_1\database
3.- Create PFILE from SPFILE en la base de datos origen y copiarlo al nuevo servidor
RMAN> SQL "CREATE PFILE FROM SPFILE";
El archivo se crea en D:\app\<ORACLE_BASE>\product\11.2.0\dbhome_1\database
A diferencia de la restauración en un servidor con diferentes rutas, aquí no cambiamos rutas del PFILE ya que las rutas en el nuevo servidor son las mismas.
4.- Crear una base de datos en la máquina destino con el
mismo nombre de la base de datos que estamos restaurando.
Click aquí para crear la base de datos.
Todos los archivos generados hasta aquí los he guardado en la siguiente ubicación pero puede ser la que ustedes elijan: E:\backup\
Comandos para la restauración con RMAN
De aquí en adelante comienza la restauración de la base de datos en el nuevo servidor.
1.- Reemplazar el password file en el nuevo servidor en la misma ubicación.
D:\app\<ORACLE_BASE>\product\11.2.0\dbhome_1\database
2.- Abrir un command prompt como administrador y ejecutar los siguientes comandos.
Es muy importante que sea como administrador y el orden de las instrucciones.
-Asignar la variable ORACLE_SID con el nombre de la base de datos y entrar a RMAN
SET ORACLE_SID=<db_name>
RMAN TARGET /
-Apagar la base de datos y asignar el DBID de la base de datos origen.
Click aqui para obtener el DBID.
RMAN>SHUTDOWN IMMEDIATE;
RMAN>SET DBID 4042975402;
-Iniciar en nomount con el PFILE generado anteriormente. En este caso el PFILE no ha sido modificado porque las rutas son las mismas.
RMAN>STARTUP NOMOUNT PFILE=E:\backup\INITdatabase.ORA;
-Crear SPFILE from PFILE y forzamos nuevamente a nomount. Con esto estamos reescribiendo los parámetros de inicio de la base de datos origen a la destino.
RMAN>SQL "CREATE SPFILE FROM PFILE=''E:\backup\INITdatabase.ORA''";
RMAN>STARTUP FORCE NOMOUNT;
-Restaurar el control file del backup. Esto reescribe los archivos de control en el nuevo servidor.
RMAN> RESTORE CONTROLFILE FROM 'E:\backup\O1_MF_S_1020956559_GSNGLJXS_.BKP';
-Montar la base de datos
RMAN> ALTER DATABASE MOUNT;
-Borrar fisicamente los tres redo log files del server destino porque me pasa que el recover falla al desconocerlos. Estos se crean nuevamente el abrir la base de datos así que no hay problema.
D:\app\<ORACLE_BASE>\ORADATA\DATABASE\REDO01.LOG
D:\app\<ORACLE_BASE>\ORADATA\DATABASE\REDO02.LOG
D:\app\<ORACLE_BASE>\ORADATA\DATABASE\REDO03.LOG
-Catalog start with desde RMAN. Con esto indicamos la ubicación de nuestros dos archivos de backup. Click en YES cuando pida confirmar catalogar los archivos. La siguiente línea puede fallar si no ejecutaron el SET DBID.
RMAN> CATALOG START WITH 'E:\backup\';
-Restaurar y recuperar. Pasos principales de restauración y recuperación. El primero toma un poco de tiempo al sobreescribir los archivos de datos en el folder ORADATA.
RMAN> RESTORE DATABASE;
-El recover va a mostrar un error al finalizar si tienen su base de datos en modo archive log. Esto es normal ya que no estamos aplicando secuencia de archivelogs.
RMAN> RECOVER DATABASE;
unable to find archived log
archived log thread=1 sequence=22504
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 10/06/2019 17:29:11
RMAN-06054: media recovery requesting unknown archived log for thread 1 with seq
uence 22504 and starting SCN of 792253069
-Finalmente abrimos la base de datos con la opción resetlogs. Este paso va a regenerar los REDO logs que borramos anteriormente. Ojo porque al abrir con resetlogs ya no se pueden aplicar los archivelogs después.
RMAN>ALTER DATABASE OPEN RESETLOGS;
database opened
-Es importante recrear el tablespace temporal ya que este no es restaurado por RMAN y pertenece a la base de datos destino. Les dejo aquí el link de
cómo recrear el tablespace temporal.
Les dejo link de un nuevo post sobre
restauración de una base de datos en una ubicación diferente.
*Aguas con las comillas y apóstrofes si están copiando los comandos.
Espero les sirva.