Medir el lag de transporte/aplicación, la velocidad de aplicación y los procesos de Data Guard en el standby
OracleData GuardComando
-- Run on the standby:
SELECT name, value, unit, time_computed, datum_time
FROM v$dataguard_stats
WHERE name IN ('transport lag','apply lag','apply finish time','estimated startup time');
-- Redo apply rate (KB/s):
SELECT item, units, sofar, total, TO_CHAR(timestamp,'YYYY-MM-DD HH24:MI:SS') AS ts
FROM v$recovery_progress
WHERE item IN ('Active Apply Rate','Average Apply Rate','Maximum Apply Rate','Last Applied Redo')
ORDER BY start_time DESC, item;
-- Transport and apply processes (12.2+; replaces v$managed_standby):
SELECT name, role, action, thread#, sequence#, block#, delay_mins
FROM v$dataguard_process
ORDER BY role;Qué hace
Muestra cuánto va retrasado el standby respecto al primario (transport lag = redo aún no recibido, apply lag = redo aún no aplicado), cuándo se aplicará el atraso, la velocidad de aplicación y qué proceso trabaja en qué secuencia.
Cuándo usarlo
Para el monitoreo de RPO/RTO y, ante una alerta de lag, para saber si el problema está en la red (transporte) o en la I/O/CPU del standby (aplicación).
Precaución
Solo lectura. Si datum_time es antiguo (muy por detrás de time_computed), el standby no está recibiendo datos del primario y el valor de lag no es fiable. Compruebe si DelayMins está definido; un retraso intencionado parece apply lag.
Relacionado
- Mostrar la configuración del broker de Data Guard y el estado de las bases de datos (DGMGRL)
- Comprobar con SQL el rol primary/standby y la preparación para switchover
- Validar el standby con el broker antes de un switchover/failover (VALIDATE DATABASE)
- Realizar un switchover planificado (DGMGRL, cambio de rol sin pérdida de datos)
- Realizar un failover tras perder el primario (DGMGRL)
- Recuperar el antiguo primario como standby tras un failover (REINSTATE)