DBAtlas · Veritabanı operasyon atlası

ORA-04021: timeout occurred while waiting to lock object

Oracle

Ne demek?

Bir nesne (paket, prosedür, tip vb.) üzerinde library cache lock'u/pini almak için beklenirken zaman aşımına uğradı. Genellikle bir PL/SQL nesnesini derlemeye ya da değiştirmeye çalışırken, o nesne başka bir oturum tarafından çalıştırılıyor veya kilitleniyor olduğunda ortaya çıkar.

Neden olur?

Değiştirilmek/derlenmek istenen nesne başka bir oturumda etkin olarak yürütülüyor ya da başka bir DDL tarafından kilitlenmiş durumda; bu yüzden özel (exclusive) library cache lock'u alınamıyor. Uzun süren bir prosedür çağrısı veya asılı kalmış bir oturum lock'u elde tutuyor olabilir.

Nasıl çözülür?

Nesneyi kilitleyen oturumu bulun: SELECT * FROM dba_kgllock WHERE kgllkhdl IN (SELECT p1raw FROM v$session WHERE event LIKE 'library cache%'); ya da v$access ve v$session ile nesneyi kullanan oturumu tespit edin. İş yükünün düşük olduğu bir bakım penceresinde DDL/derlemeyi tekrarlayın. Gerekirse ilgili oturumu güvenle sonlandırın. Uygulamayı kısa süreliğine durdurmak lock'u almayı kolaylaştırır.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar