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

Rom*_*gan 4 oracle session plsql locking

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

Gar*_*ers 9

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

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';
Run Code Online (Sandbox Code Playgroud)

  • 也许在DBA_DDL_LOCKS中使用`select*,其名称如'%PACKAGE_NAME%'` (2认同)

小智 6

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'  
;
Run Code Online (Sandbox Code Playgroud)