🌐Verificaciones Oracle Data Guard en RAC 19c: Real-Time Apply sin sorpresas.

Esta guía paso a paso está diseñada para que puedas validar de manera segura y efectiva el estado de tu entorno Data Guard, especialmente tras reinicios, parcheos o eventos de failover. Incluye comandos clave, interpretación de resultados, y acción correctiva para asegurar que tu standby esté siempre listo para proteger tu entorno crítico.

🔍 1. Verificación de sincronización primaria - standby

-- En base primaria:
SELECT thread#, MAX(sequence#) "Last Sequence"
FROM v$archived_log
WHERE applied = 'NO'
GROUP BY thread#;

-- Alternativa:
SELECT thread#, sequence#, applied FROM v$archived_log ORDER BY sequence# DESC;
-- Usando script (Dataguard synchronization), te dejo todo lo necesario en los bonus.
Thread Last Sequence Received Last Sequence Applied Difference
      1                  24239                 24239          0
      2                  25528                 25528          0

Sincronización perfecta si el "Difference" es 0 para todos los threads.


📊 2. Verificar estado del destino Data Guard en la base primaria

SET LINES 200
COL DESTINATION FORMAT A40
COL STATUS FORMAT A10
COL RECOVERY_MODE FORMAT A25

SELECT dest_id, destination, status, recovery_mode
FROM v$archive_dest_status
WHERE dest_id = 2;

Resultado esperado:

DEST_IDDESTINATIONSTATUSRECOVERY_MODE
2botica19c_ociVALIDMANAGED REAL TIME APPLY

✅ Esto confirma que la base primaria está enviando logs en tiempo real a la standby.


📃 3. Estado general de todos los destinos

SELECT destination, status, type, recovery_mode
FROM v$archive_dest_status
WHERE recovery_mode IS NOT NULL;

✅ Confirmar que solo botica19c_oci está activo como destino PHYSICAL y en modo REAL TIME APPLY. Los demás pueden estar INACTIVE.


🌐 4. Verificación de la base standby (botica19c_oci)

-- En standby:
SELECT database_role, open_mode, protection_mode FROM v$database;

Resultado esperado:

PHYSICAL STANDBY | MOUNTED | MAXIMUM PERFORMANCE

✅ La base está en modo standby montado (no abierta), lista para recibir y aplicar logs.

-- Ver proceso MRP:
SELECT process, status FROM v$managed_standby WHERE process = 'MRP0';

Resultado esperado:

PROCESS | STATUS
--------|--------
MRP0    | APPLYING_LOG

MRP0 activo = aplicación en tiempo real funcionando.


⚡ Checklist Rápida

✅ VerificaciónEstado Esperado
MRP0 corriendo en standbyAPPLYING_LOG
Base standby en MOUNTEDPHYSICAL STANDBY y MOUNTED
Destino LOG_ARCHIVE_DEST_2 en primariaVALID, REAL TIME APPLY
Dataguard synchronization/ secuencia aplicada = recibidaDifference = 0

🛠️ 5. Verificación del estado de recursos en Oracle Grid Infrastructure (CRS) con srvctl y crsctl

Desde el usuario grid, puedes validar que los recursos de base de datos estén correctamente registrados, online y con el home correcto:

crsctl stat res -w "TYPE = ora.database.type" -t

Ejemplo de salida esperada:

ora.botiquin_oci.db
    1 ONLINE  ONLINE exabotica-area51 Open,HOME=/u02/app/oracle/product/12.2.0/dbhome_5,STABLE
    2 ONLINE  ONLINE exabotica-area52 Open,HOME=/u02/app/oracle/product/12.2.0/dbhome_5,STABLE

ora.botica19c_oci.db
    1 ONLINE  ONLINE exabotica-area51 Open,HOME=/u02/app/oracle/product/19.0.0.0/dbhome_1,STABLE
    2 ONLINE  ONLINE exabotica-area52 Open,HOME=/u02/app/oracle/product/19.0.0.0/dbhome_1,STABLE

✅ Verificá que el estado esté ONLINE, el home correcto (dbhome_X) y que cada nodo esté reportando el estado como STABLE.

También puedes validar la base con srvctl:

srvctl status database -d botica19c_oci
srvctl config database -d botica19c_oci

⚡ Checklist Rápida

✅ VerificaciónEstado Esperado
MRP0 corriendo en standbyAPPLYING_LOG
Base standby en MOUNTEDPHYSICAL STANDBY y MOUNTED
Destino LOG_ARCHIVE_DEST_2 en primariaVALID, REAL TIME APPLY
DGsynchronization / secuencia aplicada = recibidaDifference = 0
crsctl stat res -t en estado ONLINERecursos online, sin errores

🔧 Comando para reiniciar MRP (si se detiene)

-- En standby:
START MRP;
-- o:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT

BONUS:

💻 Script .sh para automatizar validaciones básicas:

Dado que parte de las verificaciones pertenecen al contexto del usuario grid (infraestructura) y otras al usuario oracle (base de datos), se recomienda separar los scripts o coordinar su ejecución desde un entorno con privilegios compartidos.

✅ Script para usuario oracle (validaciones Data Guard)

#!/bin/bash
# check_dataguard_oracle.sh

ORACLE_SID=BOTICA19C1
. /home/oracle/.bash_profile

echo "Verificando MRP0 en standby..."
sqlplus -s / as sysdba <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT 'MRP0 status: ' || status FROM v\$managed_standby WHERE process = 'MRP0';
EOF

echo -e "\nVerificando destino de standby (dest_id=2)..."
sqlplus -s / as sysdba <<EOF
SET LINES 200
COL destination FOR A30
COL recovery_mode FOR A30
SELECT destination, status, recovery_mode FROM v\$archive_dest_status WHERE dest_id = 2;
EOF

✅ Script para usuario grid (estado CRS)

#!/bin/bash
# check_grid_crsctl.sh

. /home/grid/.bash_profile

echo "Estado de bases de datos en Clusterware:"
crsctl stat res -w "TYPE = ora.database.type" -t | grep -Ei 'botica|gis'

✅ Estos scripts pueden integrarse en procesos automatizados por separado, o llamarse desde un orquestador común si hay acceso entre cuentas (ej: sudo, cron centralizado, herramientas de observabilidad).

📥 Descargá los scripts completos de verificación desde GitHub

🧪 Ir al repositorio »

💊 Si esta guía te sirvió para dejar tu Data Guard en modo zen y tus instancias bien sincronizadas, ¡misión cumplida!

🚀 Si te gustó el contenido, compartelo con tu equipo, guardalo en tu caja de primeros auxilios y no te olvides de suscribirte al boletín de La Botica del DBA desde:

🔗 www.laboticadeldba.com

Ahí seguimos publicando tips, guías, scripts y anécdotas del día a día del DBA — sin vueltas, directo al grano.

📮 ¿Tienes una duda, una historia técnica o quieres colaborar con el blog?
Escribime a admin@laboticadeldba.com

Nos vemos en la próxima dosis técnica 😉
El Boticario del DBA

0
Subscribe to my newsletter

Read articles from Mauricio Muñoz Palma directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Mauricio Muñoz Palma
Mauricio Muñoz Palma

Bienvenidos a "La Botica del DBA" Donde la pasión por las bases de datos Oracle se transforma en conocimiento y excelencia. Este espacio está diseñado para ser el laboratorio de ideas, soluciones y estrategias que todo DBA necesita para optimizar, innovar y liderar en el mundo de las bases de datos. Desde los fundamentos hasta las últimas tendencias, aquí encontrarás guías prácticas, análisis profundos y herramientas que impulsarán tu carrera y tus proyectos al siguiente nivel.