Ik zag een video van iemand die het nieuwe commandoregelhulpprogramma sqlcl gebruikte om een staafdiagram te maken dat de voortgang van lange operaties in Oracle laat zien, zoals gezien vanaf V$SESSION_LONGOPS. Die video inspireerde me om iets soortgelijks te doen in SQL Developer.
Hieronder is een video van LongOpsWatcher in actie. U kunt de resterende tijd zien. Het berekent het voltooiingspercentage en bevat een staafdiagram. Ik heb een vernieuwingsfrequentie van 5 seconden gekozen.
Dit SQL Developer-rapport kan het rapport op geen enkele manier automatisch starten met een vernieuwingsfrequentie die niet nul is. Misschien komt dat in een toekomstige versie. Ik heb een verzoek tot verbetering ingevuld en er is mij verteld dat anderen een soortgelijke suggestie hebben gedaan.
Hier is de SQL-instructie die in dit SQL-ontwikkelaarsrapport wordt gebruikt:
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
Voel je vrij om het aan te passen aan je behoeften.
Update (15/12/2015): Een paar dagen nadat ik dit bericht had gepost, werd ik door Uwe Kuchler naar een vergelijkbaar blogbericht verwezen. Dit bericht toont een mooie Long Ops-watcher in SQL Dev met veel mogelijkheden om in te zoomen op wat de langlopende sessie doet. Je kunt het blogbericht hier bekijken: http://oraculix.com/2015/12/14/reporting-long-running-operations-in-sql-developer/comment-page-1/#comment-1044