详述由ENQ:TX – ROW LOCK CONTENTION引起的全局死锁处理过程

墨墨导读:ENQ: TX - row lock contention等待事件,是Oracle数据库里最常见的等待事件之一,一般是由于不同的session更新或删除同一条记录、唯一索引有重复索引、位图索引同时被更新或同时并发的向位图索引字段上插入相同字段值等几种可能性,但是在11.2.0.3 到 11.2.0.4的数据库版本中,可能还会出现因为Oracle数据库bug而触发全局死锁。

问题描述



这种全局死锁的触发条件为:

1. 11.2.0.3 到 11.2.0.4的数据库版本
2. Table Statistics Gatherings(表统计信息收集)and High Execution of Update sys.col_usage$(大量执行更新sys.col_usage$表)

问题表现



1)在数据库的ash中,发现大量的enq:TX – row lock contention等待事件。
2)在数据库实例的alert日志中,出现以下类似报错代码:

Mon Apr 01 15:17:06 2019	
Global Enqueue Services Deadlock detected. More info in file	
 /u01/PROD/oracle/diag/rdbms/prod/PROD3/trace/PROD3_lmd0_123449.trc.	
Mon Apr 01 15:17:45 2019	
Incremental checkpoint up to RBA [0x12131.2f2c8.0], current log tail at RBA [0x12131.49f7c.0]	
Mon Apr 01 15:37:50 2019	
Incremental checkpoint up to RBA [0x12131.1fd21f.0], current log tail at RBA [0x12131.2157f5.0]	
Mon Apr 01 15:48:21 2019	
Global Enqueue Services Deadlock detected. More info in file	
 /u01/PROD/oracle/diag/rdbms/prod/PROD3/trace/PROD3_lmd0_123449.trc.	
Mon Apr 01 15:49:13 2019	
Global Enqueue Services Deadlock detected. More info in file	
 /u01/PROD/oracle/diag/rdbms/prod/PROD3/trace/PROD3_lmd0_123449.trc.


3)在trace报错的对应trace日志中,出现以下类似代码:

*** 2019-04-01 15:14:23.500	
kjddt2vb: valblk  [0.974f29] > local ts [0.974f28]	
*** 2019-04-01 15:16:53.491	
·····<省略部分内容>	
----------enqueue 0x11e22ec4f8------------------------	
lock version     : 4303	
Owner inst       : 3	
grant_level      : KJUSEREX	
req_level        : KJUSEREX	
bast_level       : KJUSERNL	
notify_func      : (nil)	
resp             : 0x3a4082cd00	
procp            : 0x178995b0d0	
pid              : 123449	
proc version     : 0	
oprocp           : (nil)	
opid             : 123449	
group lock owner : 0x1724aeb350	
possible pid     : 123541	
xid              : 32000-0003-00000002	
dd_time          : 0.0 secs	
dd_count         : 0	
timeout          : 0.0 secs	
On_timer_q?      : N	
On_dd_q?         : N	
lock_state       : GRANTED	
ast_flag         : 0x0	
Open Options     : KJUSERDEADLOCK 	
Convert options  : KJUSERNOQUEUE KJUSERNODEADLOCKWAIT 	
History          : REM_AST > REM_AST > MSGSENT > FREE > REF_RES > LOC_AST	
Msg_Seq          : 0x0	
res_seq          : 7168	
valblk           : 0x00000000000000002056dea617000000 . V	
user session for deadlock lock 0x11e22ec4f8	
  sid: 5251 ser: 1 audsid: 0 user: 0/SYS	
    flags: (0x51) USR/- flags_idl: (0x1) BSY/-/-/-/-/-	
    flags2: (0x40409) -/-/INC	
  pid: 50 O/S info: user: oraprod, term: UNKNOWN, ospid: 123541	
    image: oracle@ebsdb3 (SMON)	
current SQL:	
update sys.col_usage$ set   equality_preds    = equality_preds    + decode(bitand(:flag,1),0,0,1),   equijoin_preds    = equijoin_preds    + decode(bitand(:flag,2),0,0,1),   nonequijoin_preds = nonequijoin_preds + decode(bitand(:flag,4),0,0,1),   range_preds       = range_preds       + decode(bitand(:flag,8),0,0,1),   like_preds        = like_preds        + decode(bitand(:flag,16),0,0,1),   null_preds        = null_preds        + decode(bitand(:flag,32),0,0,1),  timestamp = :time where obj# = :objn and intcol# = :coln	
DUMP LOCAL BLOCKER: initiate state dump for DEADLOCK	
possible owner[50.123541] on resource TX-2A6F0008-0003F4B6


故障解决



针对上述情况,根据Oracle官方文档Global Enqueue Services Deadlock Detected During Table Statistics Gatherings and High Execution of Update sys.col_usage$ (文档 ID 2347644.1)描述,建议应用数据库补丁19591060。

Apply Patch 19591060 which is merge patch for BUGS 16470836 and 17715578.
The fix for Bug 16470836 improves this greatly by only flushing the colusage/monitoring info for the gathered table.
The fix for Bug 17715578 further improves the performance of updating sys.mon_mods$.


扩展阅读


  1. 最完整的MySQL规范

  2. 鸟瞰 MySQL,唬住面试官!

  3. 数据安全:英国公司泄露超过100万人的指纹和面部识别数据

  4. 万字详解Docker架构原理、功能及使用

  5. 100亿数据,非“双倍”扩容,如何不影响服务,数据平滑迁移?

  6. MySQL-巧用Join来优化SQL

数据和云小程序『DBASK』在线问答,随时解惑  欢迎了解和关注。

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

在线问答

640?wx_fmt=jpeg

即时回复

640?wx_fmt=png

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

资源下载

关注公众号:数据和云(OraNews)回复关键字获取

help,30万+下载的完整菜单栏

2019DTCC,数据库大会PPT

2018DTCC , 数据库大会PPT

2018DTC,2018 DTC 大会 PPT

ENMOBK《Oracle性能优化与诊断案例》

DBALIFE,“DBA 的一天”海报

DBA04,DBA 手记4 电子书

122ARCH,Oracle 12.2体系结构图

2018OOW,Oracle OpenWorld 资料

产品推荐

云和恩墨Bethune Pro2 企业版,集监控、巡检、安全于一身,你的专属数据库实时监控和智能巡检平台,漂亮的不像实力派,你值得拥有!

640?wx_fmt=jpeg

云和恩墨zData一体机现已发布超融合版本和精简版,支持各种简化场景部署,零数据丢失备份一体机ZDBM也已发布,欢迎关注。

640?wx_fmt=jpeg

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群


640?wx_fmt=jpeg

请备注:云和恩墨大讲堂

原文地址:https://www.cnblogs.com/hzcya1995/p/13311954.html