ORA-00054: Resource busy and acquire with NOWAIT specified or timeout expired
OracleNe demek?
Kilitlenmek istenen kaynak (satır ya da tablo) başka bir oturum tarafından kilitli olduğu için, NOWAIT belirtildiğinden veya DDL_LOCK_TIMEOUT süresi dolduğundan hemen alınamadı.
Neden olur?
Genellikle bir DDL (ALTER TABLE, DROP, CREATE INDEX) çalıştırmaya çalışırken tablonun başka bir transaction tarafından kilitli olması; ya da SELECT ... FOR UPDATE NOWAIT kullanımı sırasında satırın kilitli olması.
Nasıl çözülür?
Lock'u tutan oturumu bulun: SELECT * FROM v$locked_object. Engelleyen oturumu tespit için v$session ve v$lock birleştirilebilir. Transaction'ın bitmesini bekleyin veya gerekirse ALTER SYSTEM KILL SESSION ile sonlandırın. DDL için bekleme süresi tanımlayabilirsiniz: ALTER SESSION SET DDL_LOCK_TIMEOUT = 60; Yoğun olmayan bakım pencerelerinde DDL çalıştırın.