Configure Connect Ttime Failover

1. Documentación en Tahiti -> Oracle Database, 11g Release 2 (11.2) -> Masters Book List -> 5 Switchover and Failover Operations

2. Un Failover se distingue del Switchover, porque éste normalmente se produce cuando la primaria se vuelve indisponible y no hay posibilidad de restaurar el servicio en un tiempo razonable. En este objetivo no nos piden que realicemos un Failover, simplemente que dejemos configurar el sistema para que haga un Failover automático cuando se supere el límite de tiempo indicado.

Se puede realizar el Failover manualmente con SQL pero no lo vamos a realizar así.

# Nos conectamos con la utilidad DGMGRL en la primaria
dgmgrl sys/***********

# Revisamos la configuración de los destinos de Failover de cada Target
# Todavía no lo hemos configurado así que veremos una cadena vacía
SHOW DATABASE 'OCM' FastStartFailoverTarget;
SHOW DATABASE 'DG' FastStartFailoverTarget;

# Configuramos los Targets destino de Failover para cada BD
EDIT DATABASE 'OCM' SET PROPERTY FastStartFailoverTarget = 'DG';
EDIT DATABASE 'DG' SET PROPERTY FastStartFailoverTarget = 'OCM';
# Revisamos el cambio
SHOW DATABASE 'OCM' FastStartFailoverTarget;
SHOW DATABASE 'DG' FastStartFailoverTarget;

# Comprobamos que tenemos activado la propiedad ASYNC para LogXptMode
# El atributo "LogXptMode" indica como se transporta el Redo a la BD Standby
#   · El modo SYNC es para los modos "Maximum Protection" y "Maximum Availability"
#   · El modo ASYNC es para el mdo "Maximum Performance"
SHOW DATABASE 'OCM' LogXptMode;
SHOW DATABASE 'DG' LogXptMode;

# Configuramos el umbral para el tiempo de conexión que provoca el Fast-start Failover
#   El atributo FastStartFailoverThreshold indica el el número de segundos que el Observer
#   tatra de reconectarse a la BD Primary antes de iniciar el Fasts-start Failover
EDIT CONFIGURATION SET PROPERTY FastStartFailoverThreshold=90;

# Configuramos el límite superior máximo aceptable para el Lag de la BD Standby
#   El atributo FastStartFailoverLagLimit indica el límite aceptable en segundos por el cual
#   la BD Standby puede ir detrás, en termino de aplicación de Redo de la BD Primary
EDIT CONFIGURATION SET PROPERTY FastStartFailoverLagLimit=60;

# Si no hemos habilitad
# Habilitamos Fast-start Failover
# Nos dará un error ORA-16819
# Si nos da el error ORA-16651 es porque no hemos habilitado Flashback en la BD de OCM
#   ALTER DATABASE FLASHBACK ON;
ENABLE FAST_START FAILOVER;

# Mostramos la configuración
# Veremos el error ORA-16819 ya que no hemos lanzado el Observer
SHOW CONFIGURATION VERBOSE

# Lanzamos el siguiente comando en DG1 para iniciar el Observer
# Utilizamos otra sesión distinta ya que nos atrapa el control
dgmgrl sys/**************
start observer

# Volvemos a mostrar la configuración para comprobar que Fail-start Failover está ENABLED
SHOW CONFIGURATION VERBOSE
# También podemos comprobarlo así
SHOW FAST_START FAILOVER

3. La siguiente práctica consiste en probar el Failover.

# Forzamos un SHUTDOWN ABORT en la instancia OCM
# A los 90 segundos veremos en la ventana del Observer el comienzo del Fast-start failover
# Al cabo de unos minutos tendremos el mensaje "Failover succeeded, new primary is 'DG'"
SHUTDOWN ABORT

# Revisamos el estado de las 2 BBDD
# La BD de OCM tiene que ser reincorporada o reestablecidad (Reinstate)
SHOW DATABASE 'DG';
SHOW DATABASE 'OCM';

-- Reestablecemos el estado de OCM en el Broker
-- Primero debemos monstar la instancia OCM
STARTUP MOUNT

# Ejecutamos con la utilidad DGMGRL el siguiente comando
# Nos puede salir el mensaje de que está en progreso
REINSTATE DATABASE 'OCM';

# Por último hacer un Switchover de nuevo a la primaria para dejarlo en el estado original
SWITCHOVER TO 'OCM';

# Comprobamos la configuración para comprobar que todo es correcto
#   OCM debe ser "Primary database"
#   DG debe ser "Physical standby database"
SHOW CONFIGURATION;