Common error: ORA-00054: resource busy and acquire with NOWAIT specified
To identify all locked sessions in an Oracle database:
Query 1:
SELECT oracle_username || ' (' || s.osuser || ')' username, s.sid || ',' || s.serial# sess_id, owner || '.' || object_name object, object_type, DECODE (l.block, 0, 'Not Blocking', 1, 'Blocking', 2, 'Global') STATUS, DECODE (v.locked_mode, 0, 'None', 1, 'Null', 2, 'Row-S (SS)', 3, 'Row-X (SX)', 4, 'Share', 5, 'S/Row-X (SSX)', 6, 'Exclusive', TO_CHAR (lmode)) mode_held FROM v$locked_object v, dba_objects d, v$lock l, v$session s WHERE v.object_id = d.object_id AND v.object_id = l.id1 AND v.session_id = s.sid ORDER BY oracle_username, session_id;
Query 2:
SELECT c.owner, c.object_name, c.object_type, b.sid, b.serial#, b.STATUS, b.osuser, b.machine FROM v$locked_object a , v$session b, dba_objects c WHERE b.sid = a.session_id AND a.object_id = c.object_id;
Output example:
OWNER OBJECT_NAME SID,SERIAL OBJECT OBJECT_TYPE STATUS MODE_HELD SCHEMA_1 (user.test) 738,9076 SCHEMA1.EMP TABLE NOT Blocking Share
Get the SID and SERIAL values of the session you want to kill.
To kill the session in an oracle database:
SQL> ALTER SYSTEM KILL SESSION '579, 703' IMMEDIATE;
This is it!