viernes, 3 de abril de 2020

Cómo restaurar RMAN Backups desde Oracle Cloud Object Storage

Si ocurre una falla critica en nuestro sitio principal y los servidores de nuestra base de datos no funcionan, es posible usar nuestros RMAN Backups almacenados en la nube para restaurar a un nuevo host. El siguiente ejemplo muestra cómo restaurar un RMAN backup desde un Oracle Cloud Object Storae a un nuevo host.

Requerimientos previos:
  • Nuevo host: Windows Server 2012 R2.
  • Binarios de Oracle instalados.
  • DBID de la base de datos que necesitemos restaurar.
  • Contraseña que usamos para encriptar los backups. (opcional)
  • Debemos tener configuradas nuestras keys para acceso al Oracle Cloud Object Storage. Para esto podemos verificar los primeros tres pasos en el siguiente articulo (link del articulo anterior) .
Configurando RMAN

Cuando tengamos configurada las API KEYS para poder establecer la conexión desde nuestro servidor Windows hacia nuestro Bucket en la nube. El siguiente paso será configurar las características de RMAN para que la extracción de backup pieces se realice de forma automática. La siguiente línea es un ejemple de configuración:

rman target /
rman> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS  'SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\LIB\oraopc.dll, SBT_PARMS=(OPC_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\opc_config\configORCL.ora)';
  • La ruta de la librería configORCL.ora dependerá de donde realizamos la instalación durante la configuración de acceso del modulo OCI.
  • La ruta del Oracle Home dependerá de donde realizamos la nueva instalación de los binarios en el nuevo host.


Restaurando la base de datos

Una vez configurado el acceso al bucket en la nube, procederemos a restaurar nuestra base de datos. Como en este caso en particular estamos usando un servidor Windows, nuestro primer paso será crear un servicio con el binario oradim.

C:\> oradim -NEW -SID orcl -STARTMODE auto -PFILE C:\app\Administrator\product\11.2.0\dbhome_1\database\initORCL.ora
  • El archivo initORCL.ora solo necesita tener el parámetro db_name definido.

A continuación, montamos la base de datos; establecemos el DBID de la base de datos; establecemos la contraseña (en caso hayamos usado encriptación) y restauramos el SPFILE.

rman target /
RMAN> STARTUP NOMOUNT;
RMAN> SET DBID=1559774388;
RMAN> RUN {
allocate channel t1 device type sbt PARMS 'SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\LIB\oraopc.dll, SBT_PARMS=(OPC_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\opc_config\configORCL.ora)';
RESTORE SPFILE TO PFILE 'C:\app\Administrator\product\11.2.0\dbhome_1\dbs\initORCL.ora' FROM AUTOBACKUP;
}

Nota: Una vez restaurado el pfile, nos dirigimos a la ruta destino y modificamos el archivo de modo a concordar todos los parámetros *_dest con los nuevos destinos en el servidor en caso hayan cambiado y también modificamos el parámetro contro_files en caso el destino también haya cambiado.

Apagamos la instancia y encendemos nuevamente en modo NOMOUNT para restaurar los control files desde el backup en la nube. Una vez finalizada la restauración, montamos la base de datos:


RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP NOMOUNT;
RMAN> RUN {
allocate channel t1 device type sbt PARMS 'SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\LIB\oraopc.dll, SBT_PARMS=(OPC_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\opc_config\configORCL.ora)';
RESTORE CONTROLFILE FROM AUTOBACKUP;
} 
RMAN> ALTER DATABASE MOUNT;


El siguiente paso será restaurar nuestra base de datos, para esto podemos usar la cantidad de CHANNELS que consideremos adecuada según las características de nuestro servidor.


RMAN> RUN {
allocate channel t1 device type sbt PARMS 'SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\LIB\oraopc.dll, SBT_PARMS=(OPC_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\opc_config\configORCL.ora)';
allocate channel t2 device type sbt PARMS 'SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\LIB\oraopc.dll, SBT_PARMS=(OPC_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\opc_config\configORCL.ora)';
allocate channel t3 device type sbt PARMS 'SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\LIB\oraopc.dll, SBT_PARMS=(OPC_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\opc_config\configORCL.ora)';
RESTORE DATABASE;
}

Nota: si alguno de los archivos restaurados estará en una ubicación diferente al servidor original, recuerde utilizar la sentencia SWITCH DATAFILE ALL y los respectivos comandos RENAME para cada datafile como se muestra en el ejemplo siguiente:


SWITCH DATAFILE ALL;
SQL "ALTER DATABASE RENAME FILE ''+DATA/ASMDEMO1/ONLINELOG/group_3.263.873380343'' TO ''/u04/app/oracle/redo/redo03.log''";


Hasta ahora todo debería haber terminado sin error, en el siguiente paso exploraremos el ultimo SCN almacenado en nuestro RMAN Backup en la nube para saber el punto exacto hasta donde recobrar nuestra base de datos. Lo haremos mediante el siguiente comando:

RMAN> RESTORE DATABASE PREVIEW DEVICE TYPE SBT;

La salida del comando debe mostrar algo similar a esto:


  List of Archived Logs in backup set 7
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    8       972699     10-FEB-20 972727     10-FEB-20
List of Archived Log Copies for database with db_unique_name ORCL
=====================================================================

Key     Thrd Seq     S Low Time
------- ---- ------- - ---------
8       1    1       A 13-FEB-20
        Name: C:\APP\ADMINISTRATOR\RECOVERY_AREA\ORCL\ARCHIVELOG\2020_02_13\O1_MF_1_1_H4BV1Y4V_.ARC

9       1    2       A 13-FEB-20
        Name: C:\APP\ADMINISTRATOR\RECOVERY_AREA\ORCL\ARCHIVELOG\2020_02_13\O1_MF_1_2_H4C9MLFR_.ARC

10      1    3       A 13-FEB-20
        Name: C:\APP\ADMINISTRATOR\RECOVERY_AREA\ORCL\ARCHIVELOG\2020_04_01\O1_MF_1_3_H89H6ZXY_.ARC

11      1    4       A 01-APR-20
        Name: C:\APP\ADMINISTRATOR\RECOVERY_AREA\ORCL\ARCHIVELOG\2020_04_01\O1_MF_1_4_H89J0GX0_.ARC

12      1    5       A 01-APR-20
        Name: C:\APP\ADMINISTRATOR\RECOVERY_AREA\ORCL\ARCHIVELOG\2020_04_08\O1_MF_1_5_H8W240W6_.ARC

13      1    6       A 08-APR-20
        Name: C:\APP\ADMINISTRATOR\RECOVERY_AREA\ORCL\ARCHIVELOG\2020_04_09\O1_MF_1_6_H8YO7R8C_.ARC

validation succeeded for backup piece
Media recovery start SCN is 972705
Recovery must be done beyond SCN 972705 to clear datafile fuzziness
validation succeeded for backup piece
Finished restore at 09-APR-20


Recobramos nuestra base de datos usando el numero indicado en el comando anterior:

RMAN> RUN {
allocate channel t1 device type sbt PARMS 'SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\LIB\oraopc.dll, SBT_PARMS=(OPC_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\opc_config\configORCL.ora)';
RECOVER DATABASE UNTIL SCN  972705;
}

El comando debería finalizar sin ningún error, una vez terminado procederemos a abrir nuestra base de datos usando la opción RESETLOGS:

RMAN> ALTER DATABASE OPEN RESETLOGS;

Como paso final debemos asegurarnos de que nuestra base de datos funcione como la original, creando LISTENERS y recuperando cualquier otra configuración que haya tenido el servidor anterior.

Conclusión: Los pasos para restaurar una base de datos son básicamente los mismos que en cualquier caso común, la clave del ejercicio radica en como configuremos el acceso a nuestro Oracle Cloud Storage Service.



No hay comentarios:

Publicar un comentario

Oracle ACE Director Award - Deiby Gómez

Thanks #OracleACE Program for this awesome certificate recognizing the work I have done in the community for the last year. Looking forwa...