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

Search for a command to run...

No comments yet. Be the first to comment.
MAMP | La Botica del DBA – Análisis de Casos Clínicos

Oracle transforma 23ai en Oracle AI Database 26ai aplicando el Release Update 23.26.0. Resumen práctico y mini-checklist para DBAs.

👨⚕️ Estimad@ colega DBA, arquitect@ o entusiasta cloud:En esta edición te traemos una fórmula que está revolucionando las estrategias multicloud: Oracle@GCP, una alianza estratégica que permite correr bases de datos Oracle directamente desde Google...

Introducción ¿Borraste accidentalmente datos en una tabla crítica de producción y no tienes un punto de restauración inmediato? ¿No puedes usar Flashback por limitaciones de configuración o licenciamiento? Aquí es donde LogMiner puede convertirse en ...

Oracle ha lanzado oficialmente la disponibilidad general de Oracle Database 23ai el 2 de mayo de 2024, como una versión de soporte a largo plazo (Long-Term Support Release)Oracle Database 23ai, una versión que marca un antes y un después en la gestió...

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.
-- 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.
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_ID | DESTINATION | STATUS | RECOVERY_MODE |
| 2 | botica19c_oci | VALID | MANAGED REAL TIME APPLY |
✅ Esto confirma que la base primaria está enviando logs en tiempo real a la standby.
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.
-- 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.
| ✅ Verificación | Estado Esperado |
MRP0 corriendo en standby | APPLYING_LOG |
Base standby en MOUNTED | PHYSICAL STANDBY y MOUNTED |
Destino LOG_ARCHIVE_DEST_2 en primaria | VALID, REAL TIME APPLY |
| Dataguard synchronization/ secuencia aplicada = recibida | Difference = 0 |
srvctl y crsctlDesde 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
| ✅ Verificación | Estado Esperado |
MRP0 corriendo en standby | APPLYING_LOG |
Base standby en MOUNTED | PHYSICAL STANDBY y MOUNTED |
Destino LOG_ARCHIVE_DEST_2 en primaria | VALID, REAL TIME APPLY |
DGsynchronization / secuencia aplicada = recibida | Difference = 0 |
crsctl stat res -t en estado ONLINE | Recursos online, sin errores |
MRP (si se detiene)-- En standby:
START MRP;
-- o:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT
.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.
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
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
🚀 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:
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