Oi, amigos. Vou passar duas dicas preciosas para quem trabalha no dia-a-dia com o RMAN e quer monitorar os processos realizados por ele. Seguem as dicas.
1° Dica
A primeira dica é monitorar os processos de servidor (Channels) do RMAN ao efetuar um backup ou recover na instância de destino (TARGET), pois nunca sabemos se irá demorar ou não para realizar o backup. Para acabar com esse problema, existe o SELECT abaixo:
SQL> l
1 select sid,
2 serial#,
3 context,
4 sofar,
5 totalwork,
6 round(sofar/totalwork*100,2) "%_complete"
7 from
8 v$session_longops
9 where
10 opname like ´RMAN%´
11 and opname not like ´%aggregate%´
12 and totalwork != 0
13* and sofar <> totalwork
SQL> /
SID SERIAL# CONTEXT SOFAR TOTALWORK %_complete
---- ------- -------- ------- ----------- ----------
312 54367 1 455672 1044904 43,61
295 58222 1 435192 1076910 40,41Para cada canal (channel) alocado no banco de dados para realização da tarefa de backup ou recover, representa uma sessão no resultado acima. Para exemplificar, o script de RMAN utilizado para realizar o backup (de archives), segue abaixo:
RMAN> print script bkp_archives_diario;
printing stored script: bkp_archives_diario
{
allocate channel t1 type disk format ´/u02/backup/rman/BKP_ARCHIVES_DIARIO_%d_%t_%s.rman´;
allocate channel t2 type disk format ´/u02/backup/rman/BKP_ARCHIVES_DIARIO_%d_%t_%s.rman´;
sql ´alter system checkpoint global´;
backup archivelog all tag ´BKP_ARCHIVES_DIARIO´;
release channel t2;
release channel t1;
}Como nosso script acima está usando 2 canais (Channel t1 e Channel t2), será exibido o progresso de cada sessão que é o “%_complete” de cada canal utilizado. Resumindo, com esse simples SELECT feito na instância TARGET, conseguimos monitorar as tarefas básicas do RMAN.
2° Dica
Para acompanhar o status das tarefas realizadas pelo RMAN na sua base target, o SELECT abaixo pode lhe auxiliar, veja:
SQL> l
1 select operation as "OPERACAO",
2 object_type as "TIPO",
3 status,
4 output_device_type as "MEDIA",
5 to_char(end_time,´DD-MM-RRRR HH24:MI:SS´) as "DATA",
6 round(MBYTES_PROCESSED/1024,2) as "TAMANHO(MB)"
7 from
8 v$rman_status
9 where
10 operation <> ´CATALOG´
11 and trunc(end_time)>=trunc(sysdate-1)
12 order by
13* end_time
SQL> /
OPERACAO TIPO STATUS MEDIA DATA TAMANHO(MB)
---------------------------------------- ------------- --------------- ----------------- -------------------- -----------
CONTROL FILE AND SPFILE AUTOBACK COMPLETED DISK 27-07-2008 20:08:27 ,01
BACKUP DB FULL COMPLETED DISK 27-07-2008 20:08:31 22,21
RMAN COMPLETED 27-07-2008 20:08:31 22,21
CONTROL FILE AND SPFILE AUTOBACK COMPLETED DISK 27-07-2008 22:00:34 ,01
BACKUP ARCHIVELOG COMPLETED DISK 27-07-2008 22:00:38 ,53
RMAN COMPLETED 27-07-2008 22:00:38 ,54
CONTROL FILE AND SPFILE AUTOBACK COMPLETED DISK 27-07-2008 23:00:22 ,01
BACKUP ARCHIVELOG COMPLETED DISK 27-07-2008 23:00:22 ,3
RMAN COMPLETED 27-07-2008 23:00:26 ,31
CONTROL FILE AND SPFILE AUTOBACK COMPLETED DISK 28-07-2008 15:40:08 ,01
BACKUP ARCHIVELOG COMPLETED DISK 28-07-2008 15:40:12 1,02
RMAN COMPLETED 28-07-2008 15:40:12 1,03
RMAN COMPLETED WITH 28-07-2008 16:32:24 0
ERRORSO resultado será todas as atividades feitas pelo RMAN que foram registradas pelo catálogo de recuperação. Perceba que para cada atividade, a coluna TIPO nos mostra qual atividade foi feita na instância junto com o seu respectivo status. Deste modo conseguimos ter mais controle sobre as operações do RMAN em cada banco de dados gerenciado por ele.
A view v$rman_status fornece mais informações importantes que você poderá adaptar a sua necessidade, as outras opções existentes estão abaixo, quando realizo o select abaixo, veja:
SQL> select column_name from dba_tab_columns where table_name = ´V_$RMAN_STATUS´;
COLUMN_NAME
------------------------------
SID
RECID
STAMP
PARENT_RECID
PARENT_STAMP
SESSION_RECID
SESSION_STAMP
ROW_LEVEL
ROW_TYPE
COMMAND_ID
OPERATION
STATUS
MBYTES_PROCESSED
START_TIME
END_TIME
INPUT_BYTES
OUTPUT_BYTES
OPTIMIZED
OBJECT_TYPE
OUTPUT_DEVICE_TYPEEspero que essas dicas possam ajudar.






