ORA-00054: Resource busy and acquire with NOWAIT specified or timeout expired
OracleO que significa?
O recurso (linha ou tabela) a ser bloqueado está bloqueado por outra sessão e não pôde ser adquirido imediatamente porque NOWAIT foi especificado ou o DDL_LOCK_TIMEOUT expirou.
Por que acontece?
Geralmente um DDL (ALTER TABLE, DROP, CREATE INDEX) tentado enquanto a tabela está bloqueada por outra transação; ou uma linha bloqueada encontrada com SELECT ... FOR UPDATE NOWAIT.
Como resolver
Encontre a sessão que mantém o lock: SELECT * FROM v$locked_object. Faça join de v$session e v$lock para identificar a sessão bloqueadora. Aguarde a transação terminar ou, se necessário, encerre-a com ALTER SYSTEM KILL SESSION. Para DDL, você pode definir um tempo de espera: ALTER SESSION SET DDL_LOCK_TIMEOUT = 60; Execute DDL em janelas de manutenção tranquilas.