Измерить задержку transport/apply, скорость apply и процессы Data Guard на standby
OracleData GuardКоманда
-- 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;Что делает
Показывает, насколько standby отстаёт от primary (transport lag = ещё не полученный redo, apply lag = ещё не применённый redo), когда будет применён накопившийся объём, скорость apply и какой процесс над каким sequence работает.
Когда использовать
Для мониторинга RPO/RTO, а при алерте о задержке — чтобы понять, в чём проблема: в сети (transport) или в I/O/CPU standby (apply).
Внимание
Только чтение. Если datum_time старый (сильно отстаёт от time_computed), standby не получает данные от primary и значение задержки недостоверно. Проверьте, не задан ли DelayMins; намеренная задержка выглядит как apply lag.
Связанные материалы
- Показать конфигурацию брокера Data Guard и состояние баз данных (DGMGRL)
- Проверить роль primary/standby и готовность к switchover через SQL
- Проверить standby через брокер перед switchover/failover (VALIDATE DATABASE)
- Выполнить плановый switchover (DGMGRL, смена роли без потери данных)
- Выполнить failover после потери primary (DGMGRL)
- Восстановить старый primary как standby после failover (REINSTATE)