Cuando lanzamos una operación larga, como puede ser un backup de RMAN o la reconstrucción de un índice grande, nos podemos llegar a desesperar al no tener una estimación del tiempo que puede tardar. Incluso podemos llegar a pensar que no está haciendo nada.

Para conocer el progreso de una operación larga podemos consultar la vista V$SESSION_LONGOPS obteniendo primero el id del proceso de V$SESSION. En el caso del DBA, sabremos exactamente con qué usuario lo estamos lanzando, por lo que podemos simplificarlo en una única consulta.

El siguiente ejemplo muestra la evolución de la reconstrucción de una partición de un índice. La sentencia REBUILD se lanzó con el modificador PARTITION, por lo que se se crearon varios procesos en la instancia:

SELECT MESSAGE FROM V$SESSION_LONGOPS WHERE SID IN (SELECT SID FROM V$SESSION WHERE USERNAME='SYS' AND STATUS='ACTIVE') ORDER BY START_TIME;

    Rowid Range Scan: APPU.RT_SK: 111958 out of 111958 Blocks done
    Rowid Range Scan: APPU.RT_SK: 99670 out of 99670 Blocks done
    Rowid Range Scan: APPU.RT_SK: 50518 out of 50518 Blocks done
    Rowid Range Scan: APPU.RT_SK: 238934 out of 238934 Blocks done
    Rowid Range Scan: APPU.RT_SK: 38230 out of 38230 Blocks done
    Rowid Range Scan: APPU.RT_SK: 42273 out of 42273 Blocks done
    Rowid Range Scan: APPU.RT_SK: 1160535 out of 1160535 Blocks done

Oracle considera larga cualquier operación de más de 6 segundos de duración.