martes, 31 de marzo de 2020

Cómo enviar RMAN Backup a Oracle Cloud Object Storage desde Windows


El objetivo de este ejercicio es enviar un backup de base de datos Oracle hacia un Oracle Cloud Object Storage.

El escenario es el siguiente:
  • Windows Server 2012 R2 (hostname ORCL-SRV01)
  • Oracle Database EE 12c (db_name ORCL)
  • Oracle Cloud Object Storage (Bucket name ORCL)

Configurando un Oracle Cloud Object Storage

El primer paso consiste en crear nuestro “Bucket” para el almacenamiento de los archivos de backup. En un articulo anterior aprendimos como crear este objeto.

Para este ejercicio usaremos el bucket creado anteriormente con nombre ORCL y los siguientes datos:



Una vez creado nuestro bucket procederemos a configurar los accesos desde el servidor hacia nuestro objeto.

Configurando los API KEYS

Para Windows podemos usar cualquier software de emulador de línea de comandos, para este ejercicio utilizamos Git Bash para Windows.

Una vez instalado el software generamos nuestras llaves de la siguiente manera:


winpty openssl genrsa -out ORCL-SRV01_oci_api_key.pem 2048
winpty openssl rsa -pubout -in ORCL-SRV01_oci_api_key.pem -out FR-ORCL-TEST-02_oci_api_key_public.pem


Cuando hayamos generado nuestras llaves, el siguiente paso es registrarlas dentro de nuestra configuración de Oracle Cloud, además extraeremos los OCID (Oracle Cloud ID) de los objetos que necesitamos para enviar nuestro backup.

Seleccionamos la opción Profile en la esquina superior derecha y presionamos sobre el menú User Settings:


Dentro de la pagina User Settings seleccionamos el usuario que deseamos configurar con las Keys que generamos en el paso anterior, en mi caso ya tenia creado un usuario llamado rman-service:



Dentro del usuario, presionamos el botón Add Public Key y en el pantalla enerada copiamos y pegamos la llave publica generada antes y que enviamos al archivo public.pem





Una vez hecho esto, debemos tomar nota de los siguientes datos:
  • OCID del usuario rman-service
  • Fingerprint generado después de añadir la public key



También necesitaremos el OCID de nuestro Tenant de Oracle Cloud, esto lo obtenemos yendo a la esquina superior derecha y presionando sobre Tenancy: <nombre>




Hasta ahora tenemos:
  • OCID del usuario
  • Fingerprint del usuario
  • OCID del tenant

Instalando Oracle Database Cloud Backup Module for OCI en Windows

Para este paso de la configuración necesitaremos:
Una vez listos los requisitos vamos a ejecutar la siguiente instrucción haciendo uso de los datos que recabamos en el paso anterior:

java -jar oci_install.jar -host https://objectstorage. eu-frankfurt-1.oraclecloud.com -pvtKeyFile D:\keys\OCI\APIKEY\ ORCL-01_oci_api_key.pem ^
-pubFingerPrint 25:a4:fa:98:19:e1:49:2c:64:a7:56:88:53:85:67:46 ^
-uOCID ocid1.user.oc1..aaaaaaaakukwjzadgha22j2hqyp7xw66stbnusjjol7suevp7msa ^
-tOCID ocid1.tenancy.oc1..aaaaaaaa4oeek44i4wef5kuqzcluxwucjyirkuljnss5a ^
-walletDir D:\app\oracle\product\12.0.0\database\opc_wallet ^
-libDir D:\app\oracle\product\12.0.0\database\lib ^
-bucket ORCL
-configFile D:\app\oracle\product\12.0.0\db\config.ora


Los parámetros son los siguientes:
  • Host: la url del bucket, dependerá de la región donde este configurado nuestro tenant de Oracle cloud.
  • pubFingerPrint: dato que tomamos del usuario rman-service
  • uOCID: OCID del usuario rman-service
  • tOCID: OCID de nuestro tenant
  • walletDIR: directorio donde se creara un wallet automático que almacenara la configuración de seguridad para el acceso al bucket.
  • libDir: directorio donde se descargara la librería libopc.so o libopc.dll necesaria para establecer la conexión desde RMAN.
  • Bucket: nombre de nuestro bucket.
  • configFile: archivo de configuración con los datos de las rutas de wallet y librería descargada.

La salida de este comando debería ser, sin errores:




Configurando RMAN

Nota: el backup de RMAN no ira directo al bucket en la nube, debe pasar antes por un almacenamiento físico dentro de nuestro servidor, una vez allí podemos generar backups de los backupsets antes creados.

Ya estamos por finalizar, el primer paso será cambiar la configuración de RMAN como sigue.

rman target /
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY= D:\app\oracle\product\12.0.0\database\lib\libopc.dll, SBT_PARMS=(OPC_PFILE= D:\app\oracle\product\12.0.0\db\config.ora)';
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F';
CONFIGURE ENCRYPTION FOR DATABASE ON;

Enviando un backup a la nube

Una buena practica es crear nuestros backups de manera encriptada, aunque no es un paso necesario, recordemos que por default los datos dentro de un Object Storage son encriptados.
El primer paso será crear un backup hacia un almacenamiento físico dentro de nuestro servidor:

rman target /
SET ENCRYPTION ON IDENTIFIED BY "dsk45opT4dihg_0f_XXXXXXds7" ONLY;
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;
BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG;


Finalmente, enviamos nuestro hacia el bucket de la siguiente manera:

rman target /
set encryption ON identified by "dsk45opT4dihg_0f_XXXXXXds7" Only;
run {
allocate channel sbt1 device type sbt PARMS 'SBT_LIBRARY= D:\app\oracle\product\12.0.0\database\lib\libopc.dll, SBT_PARMS=(OPC_PFILE= D:\app\oracle\product\12.0.0\db\config.ora)';
backup backupset completed after 'sysdate-1';
}

Cuando la operación finalice, los archivos en nuestro bucket se verán similar a esto:




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...