lunes, 8 de diciembre de 2014

¿Sabes como funciona tu respaldo de RMAN en Oracle?

Articulo creado en rene-ace.com  .- ¿Sabes como funciona tu respaldo de RMAN en Oracle?

Lo primero que tenemos que hacer, es entender lo que es RMAN y cómo es que funciona. Oracle Recovery Manager o mejor conocido como RMAN, es una herramienta de Oracle que se instala con la edición Enterprise o edición Standard, también puedes encontrarlo con la opción “Admin option” al instalar el cliente de Oracle.

En su forma más básica, el cliente de RMAN se conecta a la base de datos que se respalda , y esta conexión tiene que ser como un usuario privilegiado de “sysdba” , esta base de datos se le cononoce como base de datos destino. Este cliente, es un ejecutable que se encuentra en $ORACLE_HOME/bin.

Al ser una herramienta de tipo cliente,  te permite utilizar un ejecutable de RMAN de versión mayor a la de los binarios de la base de datos así pudiendo respaldar versiones actuales y anteriores de la base de datos ; hay algunas restricciones a esto, y estas se pueden verificar en el documento de MOS RMAN Compatibility Matrix [ID 73431.1].

Este ejecutable de RMAN utiliza un archivo llamado recover.bsq, este archivo se encuentra en $ORACLE_HOME/rdbms/admin. Básicamente lo que hace el ejecutable, es interpretar los comandos que le envías, dirige las sesiones de servidor para ejecutar los comandos, y registra su actividad en el  archivo de control (control file) de la base de datos de destino que se está respaldando.

Hay dos paquetes principales de SYS  que hacen el trabajo de respaldo y recuperación, que son DBMS_RCVMAN, este tiene los procedimientos que enumeran tus encarnaciones de base de datos, el SLA de la ventana de tiempo de recuperación, la lista de los respaldos, por nombrar algunas de las cosas que puede hacer.

Así como DBMS_BACKUP_RESTORE, que como ya habrás adivinado, es el que hace las operaciones respaldos y recuperación, como crear el snapshot del archivo de control (control file), respaldar los archivos de datos (datafiles), copia de seguridad del spfile por nombrar algunos.

2014-12-08_1510

Como se mencionó anteriormente, la forma en que el cliente de RMAN dirige las sesiones de servidor para ejecutar los comandos es a través de uno o varios canales (channels), un canal representa un flujo de datos a un dispositivo, y corresponde a una sesión del servidor de base de datos. El canal lee los datos en la memoria PGA, lo procesa, y lo escribe en el dispositivo de salida.

El trabajo de cada canal, ya sea de tipo de disco (disk) o de sistema de respaldo en cinta (SBT), se subdivide en las siguientes fases:

  • Fase de Lectura
Un canal lee bloques del disco hacia buffers de I/O . La asignación de estos buffers depende del número de archivos de datos (datafiles) que se leen de forma simultánea desde el disco y se escriben en la misma pieza de respaldo. Una forma de controlar los números de los archivos es usar el parámetro de respaldo FILESPERSET.
  • Fase de Copiado
Un canal copia los bloques de los buffers de Entrada hacia los buffers de Salida y realiza un procesamiento adicional en los bloques, como la validación de los bloques de datos, ya que comprueba que no esta copiando datos corruptos al archivo de respaldo, es también la fase donde se hace la compresión binaria y el cifrado del respaldo.
  • Fase de Escritura
Un canal escribe los bloques del buffer de salida a los medios de almacenamiento. La fase de escritura puede ser que sea para SBT o para disco, y estos son mutuamente excluyentes, es decir, que se escribe en uno u otro, pero no en ambos.

2014-12-08_1352

Como se puede ver por las fases anteriores, lo que distingue a RMAN de cualquier otro método, es que los respaldos son a nivel de bloque de datos, a diferencia de los respaldos gestionados por el usuario, y esto trae grandes ventajas, ya que no tendrás que respaldar bloques vacíos, elimina la corrupción en tus respaldos y te permite hacer la compresión maxima al hacerlo.

Cuando decides escribir en SBT, Oracle utiliza su Capa de Media Manager (MML) para permitir que RMAN se comunique con los aplicaciones de terceros (Tivoli,NetApp,etc)  y escribir la pieza de respaldo resultante al dispositivo de medios secuenciales. Oracle utiliza una biblioteca, que es en realidad un enlace simbólico a la librería real de la aplicación de terceros de manejo de medios media , localizada en $ORACLE_HOME/lib llamada libobk.so (orasbt.dll en Windows), por ejemplo para configurar Oracle RMAN 11.2.0.3 en RHEL 5 versión de 64 bits con Veritas NetBackup, tendrías que hacer lo siguiente:
cd $ORACLE_HOME/lib
mv libobk.so libobk.so.orig
ln -s /<install_path>/netbackup/bin/libobk.so64 libobk.so

La creación de este enlace sólo permite a RMAN poder pasar comandos al MML y éste inter actuará con el director de manejador de medios, pero para que puedas ser capaz de completar un respaldo de SBT, tienes que establecer los parámetros  necesarios al asignar un canal, con el parámetro PARMS.Esto es específico a cada proveedor , por lo que verá, como ejemplo, para Veritas NetBackup tienes parámetros como NB_ORA_SERV, NB_ORA_CLIENT, NB_ORA_POLICY, y para Tivoli Storage Manager se especifica un archivo llamado tdpo.opt  a través del parámetro TDPO_OPTFILE , en el cual se establecen los ajustes apropiados para este proveedor.

Como se puede ver a continuación, la especificación del parámetro PARMS se hace cuando haces un ALLOCATE CHANNEL  o configurar el canal con CONFIGURE CHANNEL.
RMAN> run
2> 
3> ALLOCATE CHANNEL CH1 DEVICE TYPE 'SBT_TAPE'
PARMS'SBT_LIBRARY=<NBU_install_path>/netbackup/bin/libobk.so64,ENV=(NB_ORA_SERV = MASTER_SERVER,
4> NB_ORA_POLICY=5week,NB_ORA_CLIENT=CLIENT_SERVER)' format '%d_TAPE_%I_%s_%T_%t';
5> backup backupset all;
6> 
using target database control file instead of recovery catalog
allocated channel: CH1
channel CH1: SID=58 instance=TESTDB1 device type=SBT_TAPE
channel CH1: Veritas NetBackup for Oracle - Release 6.5 (2010042404)

ConclusiónEspero que esta pequeña introducción de como funciona un respaldo de RMAN te sea util y te ayude cuando estes empezando a usar esta herramienta.