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
Hector Gabriel Ulloa Ligarius escribió
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