enq: TX - row lock contention: Wait: Session durch Zeilensperre einer anderen Transaktion blockiert
OracleWas bedeutet das?
Eine Session wartet darauf, dass eine von einer anderen Transaktion gehaltene Zeilensperre freigegeben wird. Das ist das klassische Lock-Wait-Event auf Anwendungsebene.
Ursache
Parallele Transaktionen, die dieselbe Zeile aktualisieren wollen, lange nicht committete Transaktionen, breite Sperren durch nicht indizierte Foreign Keys oder Konzentration auf einen sequenziellen Schlüssel (Hot Block).
Lösung
Finde die blockierenden und blockierten Sessions: SELECT * FROM v$session WHERE blocking_session IS NOT NULL; und gleiche sie mit v$lock ab. Sind lange Transaktionen die Grundursache, überprüfe die Commit-Strategie. Indiziere Foreign-Key-Spalten. Überdenke das Design (Sequence, Hash) für Hot Rows. Beende die blockierende Session, wenn nötig.
Weitere Einträge zu dieser Datenbank
- ORA-01578Oracle data block corrupted (file #, block #) (Oracle-Datenblock beschädigt)
- ORA-01722Invalid number (ungültige Zahl)
- ORA-02049Timeout: distributed transaction waiting for lock (Timeout: verteilte Transaktion wartet auf Sperre)
- log file syncWait: Session wartet beim Commit, bis LGWR Redo auf Disk schreibt
- db file sequential readWait: physischer Single-Block-Read, typisch bei Index- oder Tabellenzugriff
- db file scattered readWait: physischer Multi-Block-Read, typisch bei Full Table Scan oder Index Fast Full Scan
- buffer busy waitsWait: Konkurrenz um einen Buffer, den eine andere Session bereits liest oder ändert