enq: TX - row lock contention: Wait: oturum, başka bir transaction'ın tuttuğu row-level lock'ı bekliyor
OracleNe demek?
Bir oturum, başka bir işlemin tuttuğu row lock'un serbest kalmasını bekliyor. Klasik uygulama düzeyi lock wait event'idir.
Neden olur?
Aynı satırı güncellemeye çalışan eşzamanlı transaction'lar, uzun süre commit edilmeyen transaction'lar, index'siz foreign key nedeniyle geniş kilitlenme veya sıralı anahtar (hot block) üzerinde yoğunlaşma.
Nasıl çözülür?
Engelleyen ve engellenen oturumları bulun: SELECT * FROM v$session WHERE blocking_session IS NOT NULL; ayrıca v$lock ile eşleştirin. Kök nedeni uzun transaction'lar ise commit stratejisini gözden geçirin. Foreign key sütunlarına index ekleyin. Hot row'lar için tasarımı (sequence, hash) yeniden düşünün. Gerektiğinde engelleyen oturumu sonlandırın.
Aynı motorda diğer kayıtlar
- ORA-01578Oracle data block corrupted (file #, block #)
- ORA-01722Invalid number
- ORA-02049Timeout: distributed transaction waiting for lock
- log file syncWait: oturum, commit'te LGWR'ın redo'yu diske yazmasını bekliyor
- db file sequential readWait: tek bloklu fiziksel okuma; genellikle index ya da tablo erişimi
- db file scattered readWait: çok bloklu fiziksel okuma; genellikle full table scan ya da index fast full scan
- buffer busy waitsWait: başka bir oturumun okuduğu ya da değiştirdiği buffer üzerinde contention