CONFIGURANDO DATAGUARD BROKER, ¿REALMENTE ES NECESARIO?

En el presente artículo, configuraremos dataguard Broker, sobre un ambiente Dataguard previamente configurado, sincronizado y totalmente funcional (primary + physical standby database). Antes de empezar con la configuración técnica discutiremos algunos puntos, los cuales nos aclararán el panorama, acerca de si debemos o no optar por usar Broker en nuestros ambientes Dataguard, personalmente pienso que la gente no lo usa por desconocimiento de sus beneficios.

¿Por que debemos configurar Dataguard Broker?.

En simples palabras, por que Dataguard Broker es la herramienta que automatiza y  centraliza la creación, mantenimiento y monitoreo de las configuraciones de todos los componentes de nuestra arquitectura Dataguard, captura información de diagnóstico, realiza reportes estadísticos y detecta rápidamente problemas,  permitiendo obtener de manera simple un panorama completo de toda nuestra configuración, ya sea a través de un entorno grafico Enterprise Manager o por linea de comandos usando el utilitario DGMGRL.

Recuerden que a partir de oracle 11g se pueden tener hasta 30 standby database y sería un poco complicada la administración si no se tiene un componente que los centralice.

dgbkr006

Oracle Dataguard Broker está disponible desde oracle 9.2.0, y es un componente opcional dentro de nuestra arquitectura Dataguard, que personalmente recomiendo configurar, ya que no requiere licenciamiento adicional, y nos proporciona lo siguientes extra beneficios :

  • Simplifica la adición de nuevos o existentes physical, lógical, snapshot, RAC o single instance standby a una ya existente configuración Dataguard.
  • Monitorea constantemente el estado de salud de todas las bases de datos en la configuración Dataguard.
  • Broker inicia el proceso de sincronización de manera automática, post reinicio o restablecimiento del standby, evitando la necesidad de activar el proceso MRP de manera manual, y ademas retoma de manera automática operaciones pendientes
  • Se puede configurar un automatic failover, para que este sea disparado inmediatamente, cuando el broker detecta la perdida de la BD primaria, sin intervención del DBA.
  • Simplifica las tareas de switch-over o failover, al ser invocadas de manera sencilla con un simple comando(en escenarios como este el tiempo es oro).
  • Monitoreo centralizado de el entorno primario y todos los standby de nuestra configuración, cambio de modo de protección y brinda información importante para troubleshooting.

¿Tu configuración Dataguard es mala si no usas Dataguard broker?.

Ciertamente nosotros podemos tener configurada y administrar nuestra arquitectura Dataguard sin necesidad de configurar el Dataguard broker y va a funcionar correctamente, sin embargo aun así es recomendable configurar Dataguard Broker por el simple hecho de que hace la vida del DBA mas fácil y reduce el tiempo dedicado a la administración, permitiéndonos emplear este valioso tiempo en otras labores que generen mas valor a nosotros mismos.

Adicional a los beneficios antes descritos, quiero profundizar en el punto en que agiliza el proceso de switchover/failover por el simple hecho de poder realizarlos con un simple comando versus toda la secuencia de comandos requerida cuando no usamos DG broker.

Ejemplo de failover con DG Broker: un  simple comando, 25 segundos aprox, incluyendo mensaje de validacion exitosa

Welcome to DGMGRL, type "help" for information.
Connected.
DGMGRL> FAILOVER TO IRISSBY;
Performing failover NOW, please wait...
Failover succeeded, new primary is "IRISSBY"
DGMGRL>

Ejemplo de Failover sin DG Broker(método tradicional): secuencia de comandos 1 minuto 15 segundos aprox

--Cancelar proceso de replicación MRP - 5 segundos
SQL> recover standby database until cancel;

--Promover standby como primaria - 10 segundos
SQL> alter database activate standby database;
Database altered.

--Reinicio de la BD para que inicie modo READ WRITE - 30 segundos
SQL> shut abort;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.

SQL> startup
ORACLE instance started.
Total System Global Area 755769344 bytes
Fixed Size 2217184 bytes
Variable Size 448793376 bytes
Database Buffers 301989888 bytes
Redo Buffers 2768896 bytes
Database mounted.
Database opened.
--Validación -10 segundos
SQL> select name,open_mode,database_role from v$database;
NAME OPEN_MODE DATABASE_ROLE
--------- ---------------------- ----------------
IRIS     READ WRITE PRIMARY

+ tiempo de digitar o copiar/pegar secuencia de comandos: 
Alrededor de 30 seg

*Aun les queda dudas, sobre si es necesario incluir Dataguard Broker en nuestra Arquitectura Dataguard?

 

IMPLEMENTACIÓN PASO A PASO:

1.-Habilitar broker en primary y standby database

–BD PRIMARY

SQL> alter system set dg_broker_start=true scope=both;
System altered.

–BD STANDBY (en este caso es rac)
SQL> alter system set dg_broker_start=true scope=both sid=’*’;
System altered.

Explicación:

Profundicemos un poco acerca del parámetro dg_broker_start, lo primero que debemos saber es que su valor por default es FALSE, y es el valor con el que debería quedarse así, si no se está pensando en usar Dataguard Broker.

SQL> show parameter dg_broker_start
NAME                    TYPE      VALUE
———————-   ————— ———-
dg_broker_start boolean    FALSE

el simple hecho de setearlo a TRUE, habilita un nuevo background process tanto en la BD primaria como en el standby, llamado DMON y a partir de ese momento este proceso existirá tanto tiempo como la instancia de BD se encuentra inciada, al reiniciarla durante el startup este background process volverá a ser iniciado

bd_process_dmon

Al mismo tiempo se crea automáticamente un Archivo de Configuración, que guarda la información del estado actual y las propiedades de cada Instancia en la configuración Dataguard.

config_file_broker

Opcionalmente la ubicación de este archivo de configuración puede ser cambiado y multiplexado:

# Directory
alter system set DG_BROKER_CONFIG_FILE1 = ‘<directory>/<file>’;
alter system set DG_BROKER_CONFIG_FILE2 = ‘<directory>/<file>’;

# ASM
alter system set DG_BROKER_CONFIG_FILE1 = ‘+DATA/IRIS/Broker/dr1IRIS.dat’;
alter system set DG_BROKER_CONFIG_FILE1 = ‘+FLASH/IRIS/Broker/dr2IRIS.dat’;

Cabe resaltar que Dataguard broker también tiene un log por cada instancia en la configuración, el archivo log se encuentra en el mismo directorio que el Alert log con el nombre: drc<ORACLE_SID>.log

2.-Crear las configuraciones del Dataguard broker 

2.1.-Crear la configuración en el servidor primario

[oracle@limirisdbf02 trace]$ dgmgrl sys/passwordseguro@IRIS
DGMGRL for Linux: Version 12.1.0.2.0 – 64bit Production
Copyright (c) 2000, 2013, Oracle. All rights reserved.

Welcome to DGMGRL, type “help” for information.
Connected as SYSDBA.

DGMGRL> CREATE CONFIGURATION my_dg_config AS PRIMARY DATABASE IS IRIS CONNECT IDENTIFIER IS IRIS;
Error: ORA-16698: LOG_ARCHIVE_DEST_n parameter set for object to be added <——ERROR!!!!

Failed.
DGMGRL> exit

Explicación:

Este error es por que el parámetro LOG_ARCHIVE_DEST_2 ya estaba seteado por la configuración previa del dataguard, debemos guardar el valor de este parámetro previamente y resetearlo para que el broker pueda ser configurado, posterior a la configuración del broker volveremos a setear el valor que antes tenia.

[oracle@limirisdbf02 trace]$ !sqlp
sqlplus sys/oracle@IRIS as sysdba

SQL> alter system set LOG_ARCHIVE_DEST_2=” scope=both;
System altered.

[oracle@limirisdbf02 trace]$ dgmgrl sys/oracle@IRIS
DGMGRL for Linux: Version 12.1.0.2.0 – 64bit Production

Copyright (c) 2000, 2013, Oracle. All rights reserved.

Welcome to DGMGRL, type “help” for information.
Connected as SYSDBA.
DGMGRL> CREATE CONFIGURATION my_dg_config AS PRIMARY DATABASE IS IRIS CONNECT IDENTIFIER IS IRIS;
Configuration “my_dg_config” created with primary database “iris”
DGMGRL>

2.2.-Agregar el physical standby a nuestra configuración en la BD Primaria
DGMGRL> ADD DATABASE IRISSBY AS CONNECT IDENTIFIER IS IRISSBY MAINTAINED AS PHYSICAL;
Error: ORA-16698: LOG_ARCHIVE_DEST_n parameter set for object to be added
Failed.

Sucederá lo mismo que en el punto 2.1 al intentar agregar la conexion al standby al dataguard broker, motivo por el cual tendremos que también resetear este parámetro en el standby

En standby:
SQL> alter system set log_archive_dest_2=” scope=both sid=’*’;
System altered.

–Posteriormente podemos agregar IRISSBY sin problema:
DGMGRL> ADD DATABASE IRISSBY AS CONNECT IDENTIFIER IS IRISSBY MAINTAINED AS PHYSICAL;
Database “irissby” added

3.-Habilitamos la configuración en la BD primaria

DGMGRL> ENABLE CONFIGURATION;
Enabled.

4.-Retonarmos los anteriores valores del parametro LOG_ARCHIVE_DEST_2 , en la BD primaria y standby:

primaria:
alter system set log_archive_dest_2=SERVICE=IRISSBY LGWR AFFIRM SYNC valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=IRISSBY’;

standby:
alter system set log_archive_dest_2=’service=IRIS ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=IRIS’;

5.-Validamos nuestra nueva configuración

 DGMGRL> SHOW CONFIGURATION;
Configuration - my_dg_config
Protection Mode: MaxAvailability
 Members:
 iris - Primary database
 Warning: ORA-16629: database reports a different protection level from the protection mode

irissby - Physical standby database

Fast-Start Failover: DISABLED

Configuration Status:
status updated 4 seconds ago

 

Finalmente hemos añadido Dataguard Broker a nuestra configuración Dataguard!!!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s