1. Documentación en Tahiti -> Oracle Database, 11g Release 2 (11.2) -> Masters Book List -> 5 Switchover and Failover Operations
2. Un Switchover es la operación de intercambio de roles entre la BD primaria y la BD Standby. Se garantiza que no hay perdida de datos y se realiza normalmente para tareas de mantenimiento. No hay que confundir con Failover. El Failover es la transación deuna BD Standby en primaria cuando hay un fallo en la primaria o no se puede acceder por alguna razón.
Uno de los prerrequisitos importantes para hacer Switchover con el Broker es que tenemos que tener configuración un servicio con GLOBAL_NAME = <db_unique_name>_DGMGRL.db_domain en el listener de ambos nodos. Ya lo hemos realizado durante la creación del Data Guard.
3. El primer ejercicio consiste en cambiar los roles Primary/Standby entre las BD OCM/DG, respectivamente.
-- Comprobamos el estado del SWITCHOVER en la instancia OCM -- Como no hemos empezado, debe aparecer "TO_STANDBY" SELECT SWITCHOVER_STATUS FROM V$DATABASE;
# Nos conectamos con el interfaz dgmgrl dgmgrl sys/*********** # Comprobamos el estado de la BD Primaria (OCM) y la BD Standby (DG) SHOW DATABASE VERBOSE 'OCM'; SHOW DATABASE VERBOSE 'DG'; # Lanzamos la operación de SWITCHOVER SWITCHOVER TO 'DG'; # Comprobamos el estado tras el Switchover SHOW CONFIGURATION; # Volvemos a hacer otro Switchover para dejar la BD como estaba. # Lanzamos el Switchover especificando que la nueva BD Primary sea OCM SWITCHOVER TO 'OCM';
4. Este proceso se peude hacer manualmente sin necesidad del Broker. Veamos cómo se hace. Primero realizamos un SWITCHOVER hacia DG. Los siguientes pasos se realizan en OCM. Hay más documentación en esta página.
-- Revisamos la configuración de la BD OCM SELECT SWITCHOVER_STATUS FROM V$DATABASE; -- Preparamos la BD RAC para ser la nueva Standby ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN; -- Reiniciamos la instancia SHUTDOWN ABORT; CONN / AS SYSDBA STARTUP MOUNT;
Los siguientes pasos se realizan sobre DG.
-- Convertimos la BD DG en primaria ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; -- Abrimos la BD ALTER DATABASE OPEN;
Ahora activamos Redo Apply en OCM.
-- Activamos Redo-Apply ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; -- Comprobamos que está aplicando correctamente SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;
Ya hemos realizado el switchover hacia DG. Pero tenemos que hacer la vuelta atrás. Hay que realizar los mismos pasos, pero teniendo en cuenta que DG en la BD primaria ahora, y RAC es la BD Standby.
-- Pasos a realizar en la instancia DG SELECT SWITCHOVER_STATUS FROM V$DATABASE; ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN; SHUTDOWN ABORT; CONNECT / AS SYSDBA STARTUP MOUNT; -- Pasos a realizar en la instancia OCM ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; ALTER DATABASE OPEN; -- Por último, activamos Redo-Apply en DG y comprobamos que está funcionando ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;