DBAtlas · Database operations atlas

ORA-00054: Resource busy and acquire with NOWAIT specified or timeout expired

Oracle

What does it mean?

The resource (row or table) to be locked is locked by another session and could not be acquired immediately because NOWAIT was specified or DDL_LOCK_TIMEOUT expired.

Why does it happen?

Usually a DDL (ALTER TABLE, DROP, CREATE INDEX) attempted while the table is locked by another transaction; or a locked row encountered with SELECT ... FOR UPDATE NOWAIT.

How to fix it

Find the session holding the lock: SELECT * FROM v$locked_object. Join v$session and v$lock to identify the blocking session. Wait for the transaction to finish or, if necessary, terminate it with ALTER SYSTEM KILL SESSION. For DDL you can set a wait time: ALTER SESSION SET DDL_LOCK_TIMEOUT = 60; Run DDL in quiet maintenance windows.

Open in DBAtlas →

More from this engine