lunes, 26 de mayo de 2014

Oracle 12cR1 : Como configurar una BD Standby en cascada con la propiedad RedoRoutes

En una de las entradas pasadas, vimos como crear una instancia Far Sync, que lo que realmente es,
es una instancia que en cascada manda los Redologs a las instancias que configuramos.

Algo que se podia hacer en 11g, es tener Standby's en cascada, pero no a través del broker. En Oracle 12c te permite hacer las configuraciones de las rutas de hacia donde quieres que se direccionen tus Redologs a través de la propiedad RedoRoutes del broker de 12c .

Para entender un poco de que es lo que queremos hacer , voy a hacer un dibujo de que es lo que queremos hacer.


Para este ejercicio, vamos a tener 3 bases de datos , una primaria, y dos Physical Standbys , asi como dos instancias FarSync, una local y otra remota.

  • Primaria: orcl
  • Remote Standby:orclstby
  • Remote Local Standby:orclrep

Aquí no te voy a decir como crear una Physical Standby, eso lo puedes ver en la entrada Como crear un Standby Fisico con RMAN Active Duplicate en 11.2.0.3 , aunque es para 11.2.0.3, aplica para 12cR1.

Lo primero que vamos a hacer, es deshabilitar la aplicación de los redologs en nuestras Base de Datos Standbys.

[oracle@adg12c ~]$ . oraenv
ORACLE_SID = [orcl] ? orcl
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@adg12c ~]$ dgmgrl
DGMGRL for Linux: Version 12.1.0.1.0 - 64bit Production

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

Welcome to DGMGRL, type "help" for information.
DGMGRL> connect sys/oracle
Connected as SYSDG.
DGMGRL> edit database 'orclstby' set state='apply-off';
Succeeded.
DGMGRL> edit database 'orclrep' set state='apply-off';
Succeeded.

La propiedad de RedoRoutes, esta definida por reglas, y estas reglas se definen por el origen y el destino de los RedoLogs

(origen de los redologs : destino de los redo )

Si el redo source se define como LOCAL, se entiende que es la Base de Datos de donde se esta definiendo la propiedad.

Ahora vamos a definir las rutas de los Redologs, con la propiedad RedoRoutes del broker de Dataguard de 12c.

DGMGRL> edit database 'orclstby' set state='apply-off';
Succeeded.
DGMGRL> edit database 'orclrep' set state='apply-off';
Succeeded.
DGMGRL> edit database 'orcl' set property 'redoroutes'='( LOCAL : farsync SYNC)';
Succeeded.
DGMGRL> edit database 'orclstby' set property 'redoroutes'='(orcl : orclrep ASYNC)(orclrep : orcl ASYNC)(LOCAL : farsync2 SYNC)';
Succeeded.
DGMGRL> edit database 'orclrep' set property 'redoroutes'= '(orclrep : orclstby SYNC)';
Succeeded.
DGMGRL> edit far_sync 'farsync' set property 'redoroutes' = '(orcl : orclstby ASYNC )';
Succeeded.
DGMGRL> edit far_sync 'farsync2' set property 'redoroutes' ='(orclstby : orcl ASYNC, orclrep )';
Succeeded.
DGMGRL> edit database 'orclstby' set state='apply-on';
Succeeded.
DGMGRL> edit database 'orclrep' set state='apply-on';
Succeeded.

Como podemos ver en la configuración de nuestro dataguard, la BD orclrep, ahora esta recibiendo en cascada los RedoLogs de la standby orclstby , que ese era nuestro objetivo aqui, para asi poder liberar los recursos de la instancia FarSync, y se hiciera a través de la BD orclstby.


DGMGRL> show configuration;

Configuration - DGCONFIG

  Protection Mode: MaxPerformance
  Databases:
  orcl     - Primary database
    farsync  - Far Sync 
      orclstby - Physical standby database 
        orclrep  - Physical standby database (receiving current redo)
    farsync2 - Far Sync (inactive)

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS

Conclusion
Ahora Oracle 12cR1 te permite a través de su DG broker hacer configuraciones mas complejas para tu topología de DR con dataguard. De la misma manera, puedes jugar con tus configuraciones para ver que es lo que se acomoda a tus necesidades y poder validar la configuración antes de hacer un switchover.