ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
3 years ago
Originally Published: 2019-05-01
Article Number
000041019
Applies To
RSA Product Set: Identity Governance and Lifecycle
RSA Product/Service Type: Enterprise Software
RSA Version/Condition: 7.1.0
Platform: null
Platform (Other): null
O/S Version: null
Product Name: null
Product Description: null
Issue
04/08/2019 02:05:12.620 WARN (EmailSenderServiceProvider) [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] SQL Error: 54, SQLState: 61000 04/08/2019 02:05:12.620 ERROR (EmailSenderServiceProvider) [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

04/08/2019 02:05:16.251 WARN (EmailSenderServiceProvider) [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] SQL Error: 54, SQLState: 61000 04/08/2019 02:05:16.251 ERROR (EmailSenderServiceProvider) [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
Cause

I had opened this separate case to investigate below errors as observed from aveksaServer.log:

04/08/2019 02:05:12.620 WARN (EmailSenderServiceProvider) [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] SQL Error: 54, SQLState: 61000 
04/08/2019 02:05:12.620 ERROR (EmailSenderServiceProvider) [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired 

Error ORA-00054 is a commonly seen error by Oracle users and occurs when a user tries to execute a LOCK TABLE or SELECT FOR UPDATE command with the NOWAIT keyword when the resource is unavailable. DDL or DML operations are being run concurrently without proper commits. 

In most cases, Error ORA-00054? occurs from a session. Any session that has referenced the table and any structural change attempt, such as adding a column, requires an “exclusive” lock.


 
Workaround
To identify the session, write the following SQL statement:

select a.sid, a.serial#
from v$session a, v$locked_object b, dba_objects c
where b.object_id = c.object_id
and a.sid = b.session_id
and OBJECT_NAME=’EMP’;

To kill the session and unlock the tables, write the following statement:
SQL>alter system kill session ‘sid, serial#’;