Claro que tem, DESDE QUE o PL/SQL (seja qual for : Proc, Package, Func, etc) esteja rodando NESTE MOMENTO : nem sempre o DBA libera acesso (principalmente em bancos PROD) aos objetos internos necessários, mas tem sim.... Um exemplo :
=> crio e executo uma procedure que leva um tempinho executando : scott@DESENV:SQL>CREATE OR REPLACE PROCEDURE proc_UM_MINUTO IS 2 begin 3 DBMS_LOCK.SLEEP(60); 4* END; scott@DESENV:SQL>/ Procedimento criado. scott@DESENV:SQL>EXEC PROC_UM_MINUTO; ==> com o PL/SQL rodando, executo a consulta numa sessão conectada Com privilégios de consulta nos objs necessários : SYS@DESENV:SQL>@running_plsqls.sql *** Currently Executing Packages **** TYPE OWNER NAME SID SERIAL --------- ------------------------------ ------------------------------ ---------- ---------- PROCEDURE SCOTT PROC_UM_MINUTO 130 6775 PACKAGE SYS DBMS_LOCK 130 6775 ==> é é isso.... A consulta em si é : SYS@DESENV:SQL>GET running_plsqls.sql 1 break on sid skip 1 2 prompt **** Currently Executing Packages **** 3 SELECT /*+ RULE */ 4 substr(DECODE(o.kglobtyp, 5 7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE', 12, 'TRIGGER', 13, 6 'CLASS'),1,15) "TYPE", 7 substr(o.kglnaown,1,30) "OWNER", 8 substr(o.kglnaobj,1,30) "NAME", 9 s.indx "SID", 10 s.ksuseser "SERIAL" 11 FROM 12 sys.X$KGLOB o, 13 sys.X$KGLPN p, 14 sys.X$KSUSE s 15 WHERE 16 o.inst_id = USERENV('Instance') AND 17 p.inst_id = USERENV('Instance') AND 18 s.inst_id = USERENV('Instance') AND 19 o.kglhdpmd = 2 AND 20 o.kglobtyp IN (7, 8, 9, 12, 13) AND 21 p.kglpnhdl = o.kglhdadr AND 22 s.addr = p.kglpnses 23* ORDER BY 4, 2, 1 SYS@DESENV:SQL> []s Chiappa