一次不常见的等待事件:RECO进程enq: DR - contention
某用户反映数据库中有一个账号的费用结算有问题,排查数据库状态,发现有一个不常见的等待事件,PROGRAM:oracle@db01 (RECO),EVENT:enq: DR - contention(阻塞源头是RAC另一个节点的RECO进程,此进程等待事件为single-task message),USERNAME名为ORA_RECO_070361;查询这种等待事件基本上没有相关资料,结合RECO进程作用分析,应该是分布式事务异常引起的。
排查dba_2pc_pending视图,有将近300个分布式事务处于异常状态,人工清理这些异常事务后,过几小时后观察RECO进程的等待依然存在。MOS上有一篇RECO Process Fails with ORA-476 or ORA-444 (Doc ID 761852.1)介绍了RECO进程的一些机制,提到:If the RECO process fails to connect with a remote server, RECO automatically tries to connect again after a timed interval. However, RECO waits an increasing amount of time (growing exponentially) before it attempts another connection. 推测可能与这个尝试重连时指数级增长的间隔有关。
处理:由于是核心系统,我们计划在晚上重启节点2(节点2的RECO进程阻塞了节点1);在重启节点2时,发现数据库无法关闭,人工KILL掉RECO进程后,才可以关闭数据库;重启数据库后,RECO进程的等待事件恢复正常的rdbms ipc message
相关日志如下:
异常的等待事件及阻塞关系 :
SQL> /USERNAME INST_ID SID PROGRAM MACHINE SQL_ID EVENT BLOCKING_SESSION BLOCKING_INSTANCE
---------- ---------- ---------- -------------------- ------------------------- --------------- ---------------------------- ---------------- -----------------1 2361 oracle@db01 (RECO) db01 enq: DR - contention 2361 2
ORA_RECO_0 2 2361 oracle@db02 (RECO) db02 single-task message
70361
==========
KILL异常的分布式事务:
SQL> select 'exec dbms_transaction.purge_lost_db_entry( '''||local_tran_id||''' ); commit;' from dba_2pc_pending ;'EXECDBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('''||LOCAL_TRAN_ID||''');COMMIT;'
-----------------------------------------------------------------------------------
exec dbms_transaction.purge_lost_db_entry( '1.10.261698' ); commit;
exec dbms_transaction.purge_lost_db_entry( '1.20.258134' ); commit;处理后正常的等待事件:
SQL> select USERNAME,INST_ID,sid,program,machine,sql_id,event,BLOCKING_SESSION,BLOCKING_INSTANCE 2 from gv$session where program like '%REC%';USERNAME INST_ID SID PROGRAM MACHINE SQL_ID EVENT BLOCKING_SESSION BLOCKING_INSTANCE
---------- ---------- ---------- -------------------- ------------------------- --------------- ---------------------------- ---------------- -----------------2 2361 oracle@db02 (RECO) db02 rdbms ipc message1 2361 oracle@db01 (RECO) db01 rdbms ipc message
一次不常见的等待事件:RECO进程enq: DR - contention相关推荐
- 【等待事件】序列等待事件总结(enq: SQ - contention、row cache lock、DFS lock handle和enq: SV - contention)...
[等待事件]序列等待事件总结(enq: SQ - contention.row cache lock.DFS lock handle和enq: SV - contention) [等待事件]序列等待事 ...
- oracle常见等待事件,必看干货 | Oracle 常见的等待事件说明(下)
原标题:必看干货 | Oracle 常见的等待事件说明(下) [上期回顾]干货 | Oracle 常见等待事件说明(上)( 点击可查看) 16.Library cache pin 这个等待事件和 li ...
- 【性能优化】 之 几种常见的等待事件的演示示例
内容大纲: 1.分别用表和索引上数据的访问来产生db file scattered read等待事件,等待事件需要在v$session_wait和10046 trace文件中显示出来,贴出整个演示过程 ...
- mysql等待事件类型_Oracle中常见的33个等待事件小结
在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待事件的相关信息 一. 等待事件的相关知识 1.1 等待事件主要可以分为两 ...
- Oracle 常见的33个等待事件
Oracle 常见的33个等待事件 一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正 ...
- oracle的空闲等待事件,Oracle 常见的33个等待事件详解
一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时 ...
- 11g oracle xe启动_详解Oracle等待事件的分类、发现及优化
一.等待事件由来 大家可能有些奇怪,为什么说等待事件,先谈到了指标体系.其实,正是因为指标体系的发展,才导致等待事件的引入.总结一下,Oracle的指标体系,大致经历了下面三个阶段: 以命中率为主要参 ...
- ORACLE 等待事件
一.等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候 ...
- 全面解析Oracle等待事件的分类、发现及优化
作者介绍 韩锋,宜信技术研发中心数据库架构师.精通多种关系型数据库,曾任职于当当网.TOM在线等公司,曾任多家公司首席DBA.数据库架构师等职,多年一线数据库架构.设计.开发经验.著有<SQL优 ...
最新文章
- 配置导出MOSS2010列表数据到Excel并根据列表记录自动刷新数据
- LeetCode 74. Search a 2D Matrix--有序矩阵查找--python,java,c++解法
- 2014年,马上要上班啦,希望一切顺利
- ASP.NET Core MVC 与 Visual Studio 入门
- Google地图更新,更AI更贴心更节约时间,就是不敢来中国
- java中visio的作用_Visio软件的概念、用途与特色是什么?
- python炫酷烟花表白源代码-python炫酷烟花表白的源代码分享
- Hive提取身份证号中年龄和性别
- paTJPSb桌趴缀岳凳钟涸
- Chinese-ELECTRA ‘adam_m not found in checkpoint ‘
- mysql中ddl是什么_mysql ddl什么意思
- 表示数字 C语言实现
- 多规格的商品选择不同的规格值影响其他规格使之不可选
- Word排版-页眉上的横线
- 程序员面试闪充--iOS密码学
- Redis系列(六)
- OpenMV物品清单
- (转)工作是一种本能?
- 网络广播直播通告:Microsoft Project 2010项目管理概览
- 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列
热门文章
- 小米笔记本Air 13.3 i5-8250U macOS黑苹果efi引导文件
- 正在工作的程序员,生活状态都很苦逼?
- Linux4.14加密框架中的主要数据结构(5)—— struct crypto_larval(算法幼虫)
- 阿里巴巴余军:钉钉宜搭低代码实践之路
- 钉钉开放平台查询宜搭表单实例数据
- android系统版本卸掉,使用内置软件卸载最新版本的Android
- 电阻、电容、电感及其阻抗、容抗、感抗概念回顾
- Python量化交易平台开发教程系列4-事件驱动引擎原理和使用
- 基于php抑郁症自检测及初级自治疗网站
- 石油工程课程设计c语言,东北石油大学-石油工程抽油设计C语言编程.doc