enq: TX - row lock contention: Attente : session bloquée sur un verrou de ligne détenu par une autre transaction
OracleQue signifie cette erreur ?
Une session attend la libération d'un verrou de ligne détenu par une autre transaction. C'est l'événement d'attente de verrou classique au niveau applicatif.
Cause
Transactions concurrentes tentant de mettre à jour la même ligne, transactions laissées longtemps sans commit, verrouillage étendu dû à des clés étrangères non indexées, ou concentration sur une clé séquentielle (hot block).
Comment la corriger
Trouvez les sessions bloquantes et bloquées : SELECT * FROM v$session WHERE blocking_session IS NOT NULL; et faites la corrélation avec v$lock. Si les longues transactions sont la cause racine, revoyez la stratégie de commit. Indexez les colonnes de clé étrangère. Repensez la conception (séquence, hachage) pour les lignes chaudes. Terminez la session bloquante si nécessaire.
Autres entrées pour ce moteur
- ORA-01578Oracle data block corrupted (file #, block #) (bloc de données Oracle corrompu)
- ORA-01722Invalid number (nombre invalide)
- ORA-02049Timeout: distributed transaction waiting for lock (délai expiré : transaction distribuée en attente de verrou)
- log file syncAttente : session attendant que LGWR écrive le redo sur disque au commit
- db file sequential readAttente : lecture physique d'un seul bloc, généralement un accès par index ou à une table
- db file scattered readAttente : lecture physique multibloc, généralement un full table scan ou un index fast full scan
- buffer busy waitsAttente : contention sur un buffer déjà en cours de lecture ou de modification par une autre session