热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

性能故障之cursorMutexX异常等待处理

值班电话铃声响起,把正要下班的我又拉回了工作状态,迅速拿起电话,查看短信,短信显示19点XX系统出

值班电话铃声响起,把正要下班的我又拉回了工作状态,迅速拿起电话,查看短信,短信显示19点XX系统出现大量大量“cursor Mutex X”等待事件,迅速放下电脑包,掏出电脑,连上系统查看,整个过程90秒内一气呵成,这些年良好的战斗意识及年复一年,日复一年的实战淬炼,让自己各方面的速度,都有了长足的进步。

一、收集对应时间段AWR报告

显示数据库解析时间较长,硬解析占解析总时间小


数据库cursor Mutex X占总等待的64.2%。


进一步分析,从Mutex Sleep Summary显示,耗时发生在增加子游标时,增加子游标需要对父游标加独占锁。Cursor Mutex X主要作用对于父游标的操作,增加子游标虽然更高效,但一个父游标下不宜增加太多的子游标,因为子游标会对父游标产生独占锁。此次问题出现909个子游标,所以重点排查为什么出现子游标,且子游标没有被共享的原因。


二、查询v$sql_shared_cursor视图:

通过上图查询反馈可知大量子游标没被共享,是由三个导致:

  • 1) BIND_MISMATCH

  • 2) PURGED_CURSOR

  • 3)BIND_LENGTH_UPGRADEABLE

第一个原因表示绑定变量类型不一致(例如:varchar2类型和char类型)

第二个原因表示子游标被标记为清除状态

第三个原因表示绑定变量类型的长度发生了变化(例如:char(10)和char(20))


三、查询对应sql

sql_id='acd564w6af7t6'语句的绑定变量类型及表字段数据类型对比

左边为绑定变量的数据类型,右边为对应表字段数据类型,通过对比发现,几乎没有完全与之匹配的数据类型,也验证了子游标没有被共享的原因:绑定变量类型和绑定变量类型的长度发生了变化。


综上所述可得出结论,产生cursor Mutex X的原因是insert into..values..语句中元数据的绑定变量类型和长度不一致,使得子游标没有被共享。


电话应用侧帮忙核实绑定变量数据类型与元数据类型,使其类型一致。另外:参考mos (2625815.1)显示由Oracle 11g升级至12c以后的版本也会引起对应bug(bug号28889389,补丁号:28889389)

于是查看数据库补丁:

数据库并未安装对应补丁,存在触发bug隐患,后续得找窗口实施补丁。


四、结尾


至此战斗结束,汇报各方,后续跟紧开发整改,补丁实施,形成闭环。我们运维人就是7X24小时的撸命,一个电话,不论你身处何地,无论你在做啥,即便做的是父母期盼的千秋大业,也得随时停止投入到问题处理中来,这一点我相信每一个运维人都感同身受吧。所以,加强自愈,加强白屏化操作,才能让自己从琐碎的,重复性的工作中抽身出来,一来加强自己父母期待的千秋大业,二来也有时间让自己不断提升,毕竟日新月异的IT技术更迭,更多有意思的技术需要我们去学习。



推荐阅读
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 本文总结了在SQL Server数据库中编写和优化存储过程的经验和技巧,旨在帮助数据库开发人员提升存储过程的性能和可维护性。 ... [详细]
  • 数据类型和操作数据表2.1MySQL类型之整型2.2MySQL数据类型之浮点型2.3日期时间型DATE1支持时间:1000年1月1日~9999年12月31日DATETIME ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在什么情况下MySQL的可重复读隔离级别会导致幻读现象? ... [详细]
  • 在处理数据库中所有用户表的彻底清除时,目前尚未发现单一命令能够实现这一目标。因此,需要采用一种较为繁琐的方法来逐个删除相关表及其结构。具体操作可以通过编写PL/SQL脚本来实现,该脚本将动态生成并执行删除表的SQL语句。尽管这种方法相对复杂,但在缺乏更简便手段的情况下,仍是一种有效的解决方案。未来或许可以通过数据库管理工具或更高版本的数据库系统提供更简洁的处理方式。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
author-avatar
dmcm0011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有