【event】enq: TX - row lock contention

本文探讨了Oracle数据库中TX锁等待事件的原因及其对系统性能的影响。总结了几种常见的TX锁等待场景,并提供了详细的排查步骤及临时解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该等待事件产生的几个原因有

1、多个会话对同一行数据进行更新。这样的话,最先对该行进行更新的会话获得该行的TX锁,其他申请对该行更新的会话只能等待。只有该所得持会话提交或回滚释放该锁,该等待事件才会消失。

2、多个会话对具有唯一索引的行更新或插入同一值。

3、多个会话插入或更新具有位图索引的列。

4BUG 5849679 10.2.0.x版本的RAC环境中存在的bug

5、调用dbms_repair包时也会产生TX

前三种情况出现的可能性比较大。

 

出现这个问题的排查解决思路

1、找出出现该等待事件的会话及sql

select a.sid,

       a.SERIAL#,

       a.EVENT,

       a.BLOCKING_SESSION,    ----锁的持有者的sid

       b.sql_text,

       b.SQL_FULLTEXT,

       a.SECONDS_IN_WAIT      -----等待时间

  from v$session a, v$sql b

 where a.EVENT = 'enq: TX - row lock contention'

   and a.SQL_ID = b.SQL_ID

2、若系统因为该问题造成比较大影响,可以先将会话杀掉。

alter system kill session 'sid,serail#'

3、该问题属于application问题,若需彻底解决,需要应用进行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值