ORA-02049: Timeout: distributed transaction waiting for lock
OracleNe demek?
Dağıtık (distributed) bir transaction, uzak veritabanındaki bir lock için beklerken DISTRIBUTED_LOCK_TIMEOUT süresi doldu. Transaction zaman aşımına uğradı.
Neden olur?
Database link üzerinden yürüyen bir transaction'ın, uzak taraftaki kilitli satırı beklemesi; uzak oturumdaki uzun transaction'lar, ağ gecikmeleri veya iki uçta da tutulan çakışan lock'lar.
Nasıl çözülür?
Uzak veritabanında engelleyen lock'u ve oturumu bulup çözün (v$lock, v$session). Dağıtık transaction'ları kısa tutun ve gerekli lock'ları en sona bırakın. Gerekirse DISTRIBUTED_LOCK_TIMEOUT değerini iş yüküne göre artırın (SPFILE, yeniden başlatma gerekir). Askıda kalan (in-doubt) dağıtık transaction'lar için DBA_2PC_PENDING view'ını inceleyin ve gerekirse elle çözün.
Aynı motorda diğer kayıtlar
- ORA-28000The account is locked
- ORA-01578Oracle data block corrupted (file #, block #)
- ORA-01722Invalid number
- enq: TX - row lock contentionWait: oturum, başka bir transaction'ın tuttuğu row-level lock'ı bekliyor
- 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