Thursday, January 22, 2015

RMAN backup or restore monitoring scripts

Backup Progress Script:

col dbsize_mbytes      for 99,999,990.00 justify right head "DBSIZE_MB"
col input_mbytes       for 99,999,990.00 justify right head "READ_MB"
col output_mbytes      for 99,999,990.00 justify right head "WRITTEN_MB"
col output_device_type for a10           justify left head "DEVICE"
col complete           for 990.00        justify right head "COMPLETE %"
col compression        for 990.00        justify right head "COMPRESS|% ORIG"
col est_complete       for a20           head "ESTIMATED COMPLETION"
col recid              for 9999999       head "ID"

select recid
     , output_device_type
     , dbsize_mbytes
     , input_bytes/1024/1024 input_mbytes
     , output_bytes/1024/1024 output_mbytes
     , (output_bytes/input_bytes*100) compression
     , (mbytes_processed/dbsize_mbytes*100) complete
     , to_char(start_time + (sysdate-start_time)/(mbytes_processed/dbsize_mbytes),'DD-MON-YYYY HH24:MI:SS') est_complete
  from v$rman_status rs
     , (select sum(bytes)/1024/1024 dbsize_mbytes from v$datafile)
 where status='RUNNING'
   and output_device_type is not null
/


Source: http://www.dba-resources.com/oracle/rman-displaying-current-backup-progress/

To see what RMAN is doing now and how much work its got left to do you can run the following SQL
select
sid,
start_time,
totalwork,
sofar,
(sofar/totalwork) * 100 pct_done
from
v$session_longops
where totalwork > sofar
AND opname NOT LIKE '%aggregate%'
AND opname like 'RMAN%'
/

 

The following query will show you a history of your BACKUP and RESTORE operations
select to_char(start_time, 'dd-mon-yyyy@hh24:mi:ss') "Date",
status,
operation,
mbytes_processed
from v$rman_status vs
where start_time >  sysdate -1
order by start_time
/




Check status of RMAN backups:
col STATUS format a9
col hrs format 999.99
select
SESSION_KEY, INPUT_TYPE, STATUS,
to_char(START_TIME,'mm/dd/yy hh24:mi') start_time,
to_char(END_TIME,'mm/dd/yy hh24:mi')   end_time,
elapsed_seconds/3600                   hrs
from V$RMAN_BACKUP_JOB_DETAILS
order by session_key;
 
Source: https://mdesouza.wordpress.com/2012/06/07/monitor-rman-backups/

3 comments:

  1. Very detailed information- this query report the status of RMAN backup- Incremental, Full and Archivelog.

    col STATUS format a9

    col hrs format 999.99

    select

    SESSION_KEY, INPUT_TYPE, STATUS,

    to_char(START_TIME,'mm/dd/yy hh24:mi') start_time,

    to_char(END_TIME,'mm/dd/yy hh24:mi') end_time,

    elapsed_seconds/3600 hrs

    from V$RMAN_BACKUP_JOB_DETAILS

    order by session_key;

    ReplyDelete
  2. In Restore Case following issue
    select sum(bytes)/1024/1024 dbsize_mbytes from v$datafile;

    DBSIZE_MB
    --------------
    0.00

    So Backup Progress Script shows:
    to_char(start_time + (sysdate-start_time)/(mbytes_processed/dbsize_mbytes),'YYYY/MM/DD-HH24:MI:SS') est_complete
    *
    ERROR at line 9:
    ORA-01476: divisor is equal to zero

    here a workaround with "nullif"
    select recid
    , output_device_type
    , dbsize_mbytes
    , input_bytes/1024/1024 input_mbytes
    , output_bytes/1024/1024 output_mbytes
    , (output_bytes/input_bytes*100) compression
    , (mbytes_processed/ nullif (dbsize_mbytes,0 )*100) complete
    , to_char(start_time + (sysdate-start_time)/(mbytes_processed/ nullif (dbsize_mbytes,0 )),'YYYY/MM/DD-HH24:MI:SS') est_complete
    from v$rman_status rs
    , (select sum(bytes)/1024/1024 dbsize_mbytes from v$datafile)
    where status='RUNNING'
    and output_device_type is not null
    ;

    ReplyDelete
  3. it is giving ORA-01476: divisor is equal to zero and not working with nullif or decode. can you guide?

    ReplyDelete