Oracle nos ofrece esta herramienta para poder hacer pasaje automatico en caso de tener un switch o un fail, y su uso una vez configurado es tan sencillo como conectarse a la consola del administrador con el comando dgmgrl o desde el Entrerprise Manager con solo haciendo un click.
Yo en este caso voy a disponibilizar el modo de configuración desde la linea de comandos ya que me parece super práctico y nos sirve para conocer un poco más el modo en que trabaja.
Es importante saber que tanto desde la consola del GRID CONTROL o desde comandos hay que hacer una configuración previa que incluye:
- Configuración de Listener en primaria y secundaria.
- Configuración de Parametros de la base.
- Creación de los archivos de configuración del broker. (Debemos ser sysdba)
- En el caso de trabajar con una base que esta en RAC, hay que hacer la configuración con srvctl. (En este caso yo voy a presentarlo en una instancia en RAC y serán informados de ello para que sepan que el modo es el mismo para la single instance, menos este paso.)
CONFIGURANDO LISTENERS
Comenzaremos configurando los listeners, tanto en nuestra base primaria como en nuestra standby.
Es muy importante este paso ya que si el broker no ve el servicio no podrá hacer ninguna operación de switcheo.
# listener.ora.saturno01 Network Configuration File: /u01/app/oracle/product/10.2.0/db_mbpro/network/admin/listener.ora.saturno01 # Generated by Oracle configuration tools. MBPRO_SATURNO01 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = saturno01-vip.danahomelinux.com)(PORT = 1526) (IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = saturno01.danahomelinux.com)(PORT = 1526) (IP = FIRST)) ) ) SID_LIST_MBPRO_SATURNO01 = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_mbpro) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = MBPRO_DGMGRL.danahomelinux.com) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_mbpro) (SID_NAME = MBPRO1) ) )
Una vez realizada la tarea, procedemos a relodear el listener, y luego con un status service vemos si los cambios fueron impactados.
lsnrctl status MBPRO_SATURNO01 lsnrctl service MBPRO_SATURNO01
Ahora procedemos a realizar la misma tarea en nuestra base secundaria.
CONFIGURANDO LA BASE
Ahora que configuramos los listeners (y los parametros con el comando srvctl en el caso de estar trabajando con una base en RAC) procedemos a crear los archivos fisicos de la configuración del broker y activar el feature en la base misma poniendo el parametro dg_broker_start=start, donde si tenemos una terminal abierta podremos ver en el alert.log que se activa un proceso nuevo que en DMON.
Primero creamos en un path en el SO que sea seguro y luego en la base pasamos esos mismos párametros.
SQL> sho parameter broker NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file1 string dg_broker_config_file2 string dg_broker_start boolean FALSE SQL> alter system set dg_broker_config_file1='/u06/dgbroker/dr1_MBPRO.dat' scope=both sid='*'; System altered. SQL> alter system set dg_broker_config_file2='/u07/dgbroker/dr2_MBPRO.dat' scope=both sid='*'; System altered. SQL> sho parameter broker NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file1 string /u06/dgbroker/dr1_MBPRO.dat dg_broker_config_file2 string /u07/dgbroker/dr2_MBPRO.dat dg_broker_start boolean FALSE SQL> alter system set dg_broker_start=true scope=both sid='*'; System altered.
Ingresamos a la consola del DGBROKER y luego nos conectamos con el usuario administrador.
Desde aqui vamos a decirle a broker como se llamará la primaria, la secundaria, y que roles tendra cada una. Esto nos servirá en el futuro para switchear, pasar por fail, o mantenimiento mismo.
[oracle@saturno bin]$ dgmgrl DGMGRL for Linux: Version 10.2.0.4.0 - 64bit Production Copyright (c) 2000, 2005, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. DGMGRL> connect sys/PASSXXXX Connected.
Creamos la configuración
DGMGRL> CREATE CONFIGURATION 'DR_MBPRO' AS PRIMARY DATABASE IS 'MBPRO' CONNECT IDENTIFIER IS MBPRO; Configuration "DR_MBPRO" created with primary database "MBPRO" DGMGRL> ADD DATABASE 'MBPRODG' AS CONNECT IDENTIFIER IS MBPRODG MAINTAINED AS PHYSICAL; Database "MBPRODG" added DGMGRL>
Ahora podemos ver configuracion que armamos y nos va a decir que esta en modo deshabilitado.
DGMGRL> show configuration; Configuration Name: DR_MBPRO Enabled: NO Protection Mode: MaxPerformance Fast-Start Failover: DISABLED Databases: MBPRO - Primary database MBPRODG - Physical standby database Current status for "DR_MBPRO": DISABLED
Habilitamos esa configuracion para que pueda ser leida por la instancia primaria y secundaria.
DGMGRL> enable configuration; Enabled. DGMGRL> show configuration; Configuration Name: DR_MBPRO Enabled: YES Protection Mode: MaxPerformance Fast-Start Failover: DISABLED Databases: MBPRO - Primary database MBPRODG - Physical standby database Current status for "DR_MBPRO": SUCCESS
Vemos la configuracion de la primaria.
DGMGRL> show database verbose "MBPRO"; Database Name: MBPRO Role: PRIMARY Enabled: YES Intended State: ONLINE Instance(s): MBPRO Properties: InitialConnectIdentifier = 'MBPRO' ObserverConnectIdentifier = '' LogXptMode = 'ARCH' Dependency = '' DelayMins = '0' Binding = 'OPTIONAL' MaxFailure = '0' MaxConnections = '1' ReopenSecs = '300' NetTimeout = '180' LogShipping = 'ON' PreferredApplyInstance = '' ApplyInstanceTimeout = '0' ApplyParallel = 'AUTO' StandbyFileManagement = 'MANUAL' ArchiveLagTarget = '0' LogArchiveMaxProcesses = '2' LogArchiveMinSucceedDest = '1' DbFileNameConvert = '+PRUEBAS_DG1/MBPRO, +PRUEBAS_DG1/MBPRO' LogFileNameConvert = '+PRUEBAS_DG1/MBPRODG, +PRUEBAS_DG1/MBPRO' FastStartFailoverTarget = '+PRUEBAS_DG1/MBPRODG, +PRUEBAS_DG1/MBPRO' StatusReport = '(monitor)' InconsistentProperties = '(monitor)' InconsistentLogXptProps = '(monitor)' SendQEntries = '(monitor)' LogXptStatus = '(monitor)' RecvQEntries = '(monitor)' HostName = 'saturno.danahomelinux.com' SidName = 'MBPRO' LocalListenerAddress = '(ADDRESS=(PROTOCOL=TCP)(HOST=saturno.danahomelinux.com)(PORT=1529))' StandbyArchiveLocation = '?/dbs/arch' AlternateLocation = '' LogArchiveTrace = '0' LogArchiveFormat = '%t_%s_%r.dbf' LatestLog = '(monitor)' TopWaitEvents = '(monitor)' Current status for "MBPRO": SUCCESS
Ahora la de la secundaria.
DGMGRL> show database verbose "MBPRODG"; Database Name: MBPRODG Role: PHYSICAL STANDBY Enabled: YES Intended State: ONLINE Instance(s): MBPRODG Properties: InitialConnectIdentifier = 'MBPROdg' ObserverConnectIdentifier = '' LogXptMode = 'ARCH' Dependency = '' DelayMins = '0' Binding = 'OPTIONAL' MaxFailure = '0' MaxConnections = '1' ReopenSecs = '300' NetTimeout = '180' LogShipping = 'ON' PreferredApplyInstance = '' ApplyInstanceTimeout = '0' ApplyParallel = 'AUTO' StandbyFileManagement = 'AUTO' ArchiveLagTarget = '0' LogArchiveMaxProcesses = '2' LogArchiveMinSucceedDest = '1' DbFileNameConvert = '+PRUEBAS_DG1/MBPRO, +PRUEBAS_DG1/MBPRODG' LogFileNameConvert = '+PRUEBAS_DG1/MBPRO, +PRUEBAS_DG1/MBPRODG' FastStartFailoverTarget = '' StatusReport = '(monitor)' InconsistentProperties = '(monitor)' InconsistentLogXptProps = '(monitor)' SendQEntries = '(monitor)' LogXptStatus = '(monitor)' RecvQEntries = '(monitor)' HostName = 'saturnoco.danahomelinux.com' SidName = 'MBPRODG' LocalListenerAddress = '(ADDRESS=(PROTOCOL=TCP)(HOST=saturnoco.danahomelinux.com)(PORT=1529))' StandbyArchiveLocation = 'dgsby_MBPRODG' AlternateLocation = '' LogArchiveTrace = '0' LogArchiveFormat = '%t_%s_%r.dbf' LatestLog = '(monitor)' TopWaitEvents = '(monitor)' Current status for "MBPRODG": SUCCESS DGMGRL>
Ya estamos listos para hacer nuestro switch over.
Ahora que tenemos configurados los listener, servicios de RAC y parametros de la base, podriamos realizar el primer pasaje de base, un cambio de roles.
Si somos los sufientemente curiosos, para este primer paso, podemos abrir los alert y podemos ir mirando que es lo que trancurre y no encontraremos con que:
- El broker hace los mismos pasos que nosotro hariámos a mano.
- El broker pone los párametros que tiene en el listener y los coloca, asi que cualquier modificiación que hicieramos sobre estos siempre se van a impactar en la base.
- Podemos hacer una consulta en la v$archive_dest antes de arracar, para verificar que hay conectividad y no tenemos problemas de red.
- En el caso que la base no tuviese la suficiente memoria por algún proceso enorme o si se encontrara con problemas, el broker comienza el proceso, y si es preciso lo aborta dejando la base intacta al momento de arrancar, sobre su rol antes de comenzar el pasaje. Además de ello no arroja los errores con el log de por qué la base no pudo pasar.
- En el caso de que en un pasaje perdemos el sitio primario, y previamente hubiesemos arrancado el switch, no podrá retornar, pero como buenos DBA’s al mirar el log sabriamos como seguir el switch a mano, ya que en el alert muestra los comandos ejecutados, y con nuestro procedimiento de switch over manual, podriámos verificar que paso faltó y continuar. La experiencia sobre el caso, me dice que esto es cierto y no una mera suposición.
[oracle@saturno01 dbs]$ dgmgrl DGMGRL for Linux: Version 10.2.0.4.0 - 64bit Production Copyright (c) 2000, 2005, Oracle. All rights reserved. Welcome to DGMGRL, type "help" for information. DGMGRL> connect sys/xxxxxxx Connected. DGMGRL> switchover to "MBPRODG"; Performing switchover NOW, please wait... Operation requires shutdown of instance "MBPRO" on database "MBPROD" Shutting down instance "MBPRO"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires shutdown of instance "MBPRODG" on database "MBPRODG" Shutting down instance "MBPRODG1"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires startup of instance "MBPRO" on database "MBPRO" Starting instance "MBPRO"... ORACLE instance started. Database mounted. Operation requires startup of instance "MBPRODG" on database "MBPRODG" Starting instance "MBPRODG1"... ORACLE instance started. Database mounted. Switchover succeeded, new primary is "MBPRODG" DGMGRL>
Una respuesta a “Configurando Dataguard Broker”
Los comentarios están cerrados.