AlterSysteM™ ─ Oracle Database Blog

Por Sebastián D’Alessandro

Estimar duración de una operación de restore con RMAN

Publicado por Sebastián D'Alessandro en septiembre 9, 2008


Cuando realizamos un restore con rman, en una base de datos montada sobre filesystems, podemos darnos una idea del avance de la operación de restauración verificando la copia a disco de los datafiles en el directorio correspondiente.
En el caso que nuestra base este sobre raw devices, como ocurre con OPS o RAC, no siempre podemos detectar a simple vista el progreso de esta tarea; principalmente por que en el directorio donde oracle ve los datafiles tenemos links simbólicos del sistema operativo a particiones raw.
Podemos estimar entonces el avance utilizando una consulta sobre la vista v$session_longops. Esta vista nos muestra el estado de las operaciones que llevan ejecutándose más de 6 segundos, por lo general operaciones de backup, restore recovery, toma de estadísticas y consultas importantes.
Corriendo la siguiente consulta:


 SELECT sid, serial#, context, sofar, totalwork,
  ROUND(sofar/totalwork*100,2) “% COMPLETE”
 FROM V$SESSION_LONGOPS
 WHERE opname LIKE ‘RMAN%’
 AND opname NOT LIKE ‘%aggregate%’
 AND totalwork != 0
 AND sofar != totalwork;



Obtenemos:

     SID    SERIAL#    CONTEXT      SOFAR  TOTALWORK  %COMPLETE

      18          1          1   10235772   11137792       91.9



Donde vemos en el último campo “% COMPLETE”, el porcentaje total ejecutado de la operación.
En el caso que al correr de manera consecutiva la consulta, por ejemplo cada 2 segundos, no veamos un progreso en el valor de dicho campo; tendríamos que investigar en la vista V$SESSION_WAIT si no estamos en presencia de algún evento de espera que este asociado a la contención en la operación de restore.

SD’A

Advertisement

Una respuesta hacia “Estimar duración de una operación de restore con RMAN”

  1. Hola Sebastián

    ¿Y qué pasa con aquellas bases de datos sólo montadas o derechamente no abiertas?

    En todo caso para complementar un poco tu idea , podemos rastrear el SPID del proceso que este haciendo la recuperación , de la siguiente forma

    run {
    set command id to ‘proceso_rman’;
    backup database;
    }

    Y después lo podemos consultar con las siguientes vistas

    select sid, spid, client_info
    from v$process p,
    v$session s
    where p.addr = s.paddr
    and client_info LIKE ‘%id=proceso_rman%’;
    ;)

    Atte
    Hector Gabriel Ulloa Ligarius
    http://www.ligarius.com

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

 
Seguir

Get every new post delivered to your Inbox.