Convert the Standby to a Snapshot Standby

1. Documentación en Tahiti -> Oracle Database, 11g Release 2 (11.2) -> Masters Book List -> 4 Managing Databases -> Managing Database Conversions

2. Una Snapshot Standby Database es una BD totalmente actualizable que se utiliza para hacer ciertas operaciones para luego volverla a convertir en una Standby “normal” de nuevo. Cuando la Physical Standby se ha convertido en Snapshot, ésta sigue recibiendo Redo pero no lo aplica. Lo retiene hasta que eliminamos el Snapshots para aplicarlo.

3. En este ejercicio convertiremos DG en una Snapshot Standby, haremos alguna modificación y luego volveremos a convertirlo a una Physical Standby.

-- Comprobamos que tenemos activado Flashback en DG
SELECT FLASHBACK_ON FROM V$DATABASE;
# Utilizaremos el Broker para convertirla a Snapshot
dgmgrl sys/*************

# Lanzamos la conversión
CONVERT DATABASE 'DG' TO SNAPSHOT STANDBY;

# Comprobamos la configuración
# Comprobamos que DG aparece como "Snapshot standby database"
SHOW CONFIGURATION;

4. Realizamos operaciones DML de prueba en el Snapshot (DG).

-- Creamos una tabla de prueba
CREATE TABLE TEST (n NUMBER);
INSERT INTO TEST VALUES (10);
COMMIT;

-- Comprobamos que estamos recibiendo Redo de la primaria
-- La columna BLOCK# para los procesos RFS debe incrementarse
SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;

5. Convertirmos a Physical Standby de nuevo la BD DG.

# Utilizaremos el Broker para convertirla a Physical Standby
dgmgrl sys/*************

# Lanzamos la conversión
CONVERT DATABASE 'DG' TO PHYSICAL STANDBY;

# Comprobamos la configuración
# Comprobamos que DG aparece como "Physical standby database"
SHOW CONFIGURATION;

6. Vamos a utilizar Real-Time Query para abrir la BD DG en modo lectura. Este característica pertenece a la opción Active Data Guard que se licencia por separado.

-- Abrimos la BD DG en modo lectura
ALTER DATABASE OPEN READ ONLY;

-- Comprobamos si existe la tabla que hemos creado antes
-- No existe ya que la BD vuelve al estado previo antes de realizar el Snapshot
SELECT * FROM TEST;
# Comprobamos la configuración con DGMGRL
# Veremos que Real-Time Apply está activado => "Real Time Query: ON"
SHOW DATABASE 'DG';