====== Check which session is locking a package ====== Replace the PACKAGE_NAME with the real name of the package. SELECT s.sid, l.lock_type, l.mode_held, l.mode_requested, l.lock_id1, 'alter system kill session '''|| s.sid|| ','|| s.serial#|| ''' immediate' kill_sid FROM dba_lock_internal l, v$session s WHERE s.sid = l.session_id AND UPPER(l.lock_id1) LIKE '%PACKAGE_NAME' AND l.lock_type = 'Body Definition Lock' Output: ^ SID ^ LOCK_TYPE ^ MODE_HELD ^ MODE_REQUESTED ^ LOCK_ID1 ^ KILL_SID ^ | 164 | Body Definition Lock | Null | None | USER1.PACKAGE_NAME | alter system kill session '164,64447' immediate | ====== Check details about the locking session ====== Replace 164 with the actual sid: SELECT s.sid, NVL(s.username, 'ORACLE PROC') username, s.osuser, p.spid os_pid, s.program, t.sql_text FROM v$session s, v$sqltext t, v$process p WHERE s.sql_hash_value = t.hash_value AND s.paddr = p.addr AND s.sid = 164 ORDER BY s.sid, t.hash_value, t.piece The above code may return no results if the sqltext cannot be matched. \\ In this case, try with the following query: SELECT s.sid, NVL(s.username, 'ORACLE PROC') username, s.osuser, p.spid os_pid, s.program FROM v$session s, v$process p WHERE s.sid = 164 AND s.paddr = p.addr