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 > >