Maravilha!
Consegui encontrar a sessão com:

SELECT A.SQL_ID, A.* FROM GV$SESSION A WHERE EVENT <> ('SQL*Net message
from client') order by SECONDS_IN_WAIT;

Beleza!
Voltou a compilar a função ok?
Mas infelizmente a sessão volta a "travar" quando mandei gerar o relatório.


Em 12 de fevereiro de 2014 14:00, <jlchia...@yahoo.com.br> escreveu:

>
>
> Bem, se consulta na V$LOCK não trouxe nada, tá mais ou menos DEMONSTRADO
> que não é lock exatamente o problema : talvez seja espera por library cache
> latch, ou quetais... Primeiro veja lá se tem mais alguém executando o mesmo
> stored pl/sql que vc quer alterar com a query (conectado como SYS ou
> usuário privilegiado semelhante com acesso aos objs do SYS) :
>
> break on sid skip 1
> prompt **** Currently Executing Packages ****
> SELECT /*+ RULE */
>   substr(DECODE(o.kglobtyp,
>     7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE', 12, 'TRIGGER', 13,
> 'CLASS'),1,15)  "TYPE",
>   substr(o.kglnaown,1,30)  "OWNER",
>   substr(o.kglnaobj,1,30)  "NAME",
>   s.indx  "SID",
>   s.ksuseser  "SERIAL"
> FROM
>   sys.X_$KGLOB  o,
>   sys.X_$KGLPN  p,
>   sys.X_$KSUSE  s
> WHERE
>   o.inst_id = USERENV('Instance') AND
>   p.inst_id = USERENV('Instance') AND
>   s.inst_id = USERENV('Instance') AND
>   o.kglhdpmd = 2 AND
>   o.kglobtyp IN (7, 8, 9, 12, 13) AND
>   p.kglpnhdl = o.kglhdadr AND
>   s.addr = p.kglpnses
> ORDER BY 4, 2, 1
> /
>
> E atenção que pode haver Recursividade aí , tipo : uma procedure A está
> sendo executada e chama a função B que chama a mesma tal função que vc quer
> recriar/recompilar...
>
>
>  Se provado com a query acima que não é execução simultânea o problema, aí
> aconselho a verificar ** exatamente ** pelo que as sessões estão esperando,
> para vc poder identificar pelo que a tal sessão que está tentando
> recriar/recompilar a função está esperando, o que pode ser feito com uma
> query tipo a abaixo , preferencialmente executada numa tool gráfica por
> causa do grande número de colunas :
>
> SELECT * FROM GV$SESSION WHERE EVENT <> ('SQL*Net message from client')
> order by SECONDS_IN_WAIT;
>
> espere uns minutinhos, re-execute a query , tente localizar a sessão
> "travada" pelos campos de osuser, logon_time, module, program, etc, e aí
> veja exatamente Qual é o evento pelo qual a sessão está esperando, e
> dependendo do caso as colunas p1,p2,p3 e/ou as de BLOCKING podem te indicar
> qual a outra sessão que está usando o recurso ...
>
>   []s
>
>    Chiappa
>  
>

Responder a