如何识别锁定的PL / SQL包(Oracle 10.0.4.2)?

时间:2010-06-10 00:29:36

标签: oracle session plsql locking

我试图重新编译PL / SQL包,但无济于事。因为某些东西获得了锁定并且长时间未被释放。一旦我杀死所有会话,我就能够重新编译但遇到相同的行为(即锁定包),我想知道哪些工具可以识别什么可以获得它并且永远不会释放它?这发生在(Oracle 10.2.0.4)上。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:9)

我认为你的意思是10.2.0.4,因为没有10.0.x.x版本系列。

select * from v$locked_object lo join dba_objects o on lo.object_id = o.object_id
where o.object_name = 'xxPACKAGE NAMExx' and o.object_type = 'PACKAGE';

答案 1 :(得分:1)

select l.session_id, l.owner, l.name, l.type, inst_id, sql_id
     , a.sql_fulltext
     , 'alter system disconnect session '''||s.sid||','||s.serial#||',@'||inst_id||''' immediate' ddl
  from dba_ddl_locks l 
  join gv$session s on s.sid = l.session_id
  join gv$sqlarea a using(inst_id, sql_id)
 where l.name = 'OBJECT_NAME'  
;