Essa é uma dica rápida sobre a view V$RECOVERY_PROGRESS, que permite consultar algumas informações detalhadas sobre o processo de RECOVERY em andamento na instância Oracle.
Geralmente eu utilizo essa view para monitorar operações do tipo “Media Recovery”, que são as operações de aplicar Redo Log ou Archivelog nos Datafiles. Mas a view também é populada durante operações de “Crash Recovery” e “Instance Recovery”, que são cenários em que a instância precisa aplicar redo dos onlinelog após um shutdown “sujo”.
A vantagem dessa abordagem é que temos as estatísticas do Redo Apply em tempo real, o que ajuda a verificar se o processo realmente está evoluindo, uma vez que no Log do RMAN ou alert.log mostram apenas qual Sequence Number está sendo aplicada (em ambientes com Archivelog muito grandes, o log pode ficar alguns minutos “parado” na mesma sequence).
Query:
SET LINES 400
SET PAGES 50
COL INST FORMAT 99
COL ITEM FORMAT A25
COL UNITS FORMAT A20
COL COMMENTS FORMAT A40 TRUNC
COL START_TIME FORMAT A20
COL TYPE FORMAT A16
COL UNITS FORMAT A10
col TIMESTAMP format a20
SELECT INST_ID AS INST,
TO_CHAR(START_TIME,'DD/MM/YYYY HH24:MI:SS') AS START_TIME,
TYPE,
ITEM,
UNITS,
SOFAR,
TO_CHAR(TIMESTAMP,'DD/MM/YYYY HH24:MI:SS') as TIMESTAMP,
COMMENTS
FROM GV$RECOVERY_PROGRESS;
Exemplo do resultado:

A view retorna uma linha para cada estatística que foi possível medir desde o início do recovery. No caso de Data Guard MRP, será a data e horário em que o processo MRP foi iniciado pela última vez.
Poderíamos usar a estatística “Apply Time per Log” para estimar o tempo necessário para recuperar um possível GAP de X archives. Exemplo: GAP de 100 archives * 88 segundos = 8.880 segundos /60 = 146 minutos.