Skip to main content

Command Palette

Search for a command to run...

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

Updated
5 min read
🌐Verificaciones Oracle Data Guard en RAC 19c: Real-Time Apply sin sorpresas.
M
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.

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

More from this blog

L

La botica del DBA

24 posts

Oracle Data Guard RAC 19c: Real-Time Apply - Tips