Objetos em Lock no Oracle
Se você precisa compilar um objeto (uma Procedure, por exemplo), mas não consegue porque este está em uso, use os SELECTs abaixo para descobrir que SID está bloqueando sua tentativa de compilação.
SELECT /*+ ORDERED */ W1.SID WAITING_SESSION, H1.SID HOLDING_SESSION, W.KGLLKTYPE LOCK_OR_PIN, W.KGLLKHDL ADDRESS, DECODE(H.KGLLKMOD,0,'None',1,'Null',2,'Share',3,'Exclusive','Unknown') MODE_HELD, DECODE(W.KGLLKREQ,0,'None',1,'Null',2,'Share',3,'Exclusive','Unknown') MODE_REQUESTED
FROM DBA_KGLLOCK W, DBA_KGLLOCK H, V$SESSION W1, V$SESSION H1
WHERE (((H.KGLLKMOD != 0) AND (H.KGLLKMOD != 1) AND ((H.KGLLKREQ = 0) OR (H.KGLLKREQ = 1))) AND (((W.KGLLKMOD = 0) OR (W.KGLLKMOD= 1)) AND ((W.KGLLKREQ != 0) AND (W.KGLLKREQ != 1)))) AND W.KGLLKTYPE = H.KGLLKTYPE AND W.KGLLKHDL = H.KGLLKHDL AND W.KGLLKUSE = W1.SADDR AND H.KGLLKUSE = H1.SADDR;
Para saber o nome do objeto a partir do TO_ADDRESS, use este SELECT:
SELECT TO_NAME FROM V$OBJECT_DEPENDENCY WHERE TO_ADDRESS = '0700000010F62750';
[…] Veja o Post completo no meu Blog de Oracle& […]
Valeu portilho, esse script me salvou hoje : )
Que coincidência Flavio, eu tinha acabado de utilizar este SELECT aqui na aula quando você colocou o comentário!
Abraço !