← Sessions & Locks
Oracle · Sessions & Locks
How to check row lock contention in Oracle
Show Oracle sessions waiting on enq: TX - row lock contention and the object, waiter, and blocker involved.
Tested on11g12c18c19c21c23ai26ai
Sessions on ''enq: TX - row lock contention'' are blocked at the row level — usually a long transaction or an app leaving a row locked. This pairs the waiter with its blocker, the SQL, and the affected object.
SELECT w.sid AS waiter_sid, w.serial# AS waiter_serial, w.username AS waiter_user,
w.event, w.seconds_in_wait,
w.row_wait_obj#,
(SELECT owner || '.' || object_name
FROM dba_objects
WHERE object_id = w.row_wait_obj#) AS waiting_on_object,
w.sql_id AS waiter_sql,
b.sid AS blocker_sid, b.serial# AS blocker_serial, b.username AS blocker_user,
b.sql_id AS blocker_sql
FROM v$session w
JOIN v$session b ON b.sid = w.blocking_session
WHERE w.event LIKE 'enq: TX%row lock contention%'
ORDER BY w.seconds_in_wait DESC;lockstx enqueuerow lock