Vi un video de alguien que usó la nueva utilidad de línea de comandos, sqlcl, para crear un gráfico de barras que mostraba el progreso de operaciones largas en Oracle, como se ve desde V$SESSION_LONGOPS. Ese video me inspiró a hacer algo similar en SQL Developer.
A continuación se muestra un video de LongOpsWatcher en acción. Puedes ver el tiempo restante. Calcula el porcentaje de finalización e incluye un gráfico de barras. Seleccioné una frecuencia de actualización de 5 segundos.
No hay forma de que este informe de SQL Developer inicie automáticamente el informe con una frecuencia de actualización distinta de cero. Tal vez eso vendrá en una versión futura. Llené una solicitud de mejora y me dijeron que otros me ofrecieron una sugerencia similar.
Esta es la instrucción SQL utilizada en este informe de SQL Developer:
select inst_id,sid,message,time_remaining,to_char((sofar/totalwork)*100,'990.00') as pct_complete, 'SQLDEV:GAUGE:0:100:0:100:'||nvl(trunc((sofar/totalwork)*100,2),0) as pct_bar from gv$session_longops where time_remaining>0
Siéntase libre de modificar para adaptarlo a sus necesidades.
Actualización (15/12/2015): Unos días después de publicar esta entrada, Uwe Kuchler me remitió a una entrada de blog similar. Esta publicación muestra un buen observador de Long Ops en SQL Dev con mucha capacidad de desglose de lo que está haciendo la sesión de ejecución prolongada. Puede ver la entrada del blog aquí: http://oraculix.com/2015/12/14/reporting-long-running-operations-in-sql-developer/comment-page-1/#comment-1044