愿你出走半生,归来仍是少年

Kratos
专注于用户阅读体验的响应式博客主题
  1. 首页
  2. Oracle
  3. 正文

大量事务并发回滚彻底堵塞数据库(1)

2021年6月9日 3329点热度 1人点赞 0条评论

这是一个历时5个多小时的故障处理过程,值得认真记录、反思。
事后详查发现,数据库16:00之前就出现大量锁表情况,16:07运维支撑群有用户反映系统慢,直到反馈系统彻底没法用了。下图显示,实际14:00以后就开始出现了较多的锁表情况。

只是,14:00-16:00期间由于只是后台执行任务的锁表,并未明显影响到客户感知,相关的一线业务还可正常进行。
但是当这些执行失败的定时任务一个接着一个,反复重复执行,从而导致大量锁死时,会怎样呢?这会把整个库搞瘫痪。
相关的等待事件涉及到了大量的row cache lock、gc buffer busy acquire/release、SQ - contention、甚至波及到了log file sync
暂时还没查到具体的根因,但是基本可以确定就是那些定时任务---全量更新的物化视图失败、反复执行导致了大量的锁表,直到即使杀会话,也需要大量的回滚才能恢复,此时积压的回滚事务已经达到了极大的数量,仅凭数据库自身已难以恢复正常。
此时的数据库业务SQL已经无法正常执行,如下图所示。

此时因为数据库自身已经无法自行尽快回滚所有积压的大量事务,在各方压力、催促之下,采用了重启数据库的方法,正常关库事件很长,采用了shutdown abort的方式,当时并未意识到这样做起库同样会面对大量事务回滚的情况,实际是没用的。
通过关库起库无法奏效,此时要求项目停止所有的应用,排查所有的定时任务、物化视图等,能杀的杀死,能关的先关掉。
甚至无奈之下同意了项目方面重启主机的做法,现在看来是无用功,呵呵。
也一度怀疑底层存储是否出了问题,让厂家确认了,没有问题。实际那时最大的等待事件是并发问题,如第一图所示排进前五的io等待事件只有log file sync的4.75%。
数据库实时监控工具oratop给了我很大的帮助,它实时向我展现着当前的数据库整体运行情况,大量的等待事件都是秒级以上,此时是万万没法接入应用的,在停掉了所有应用之后,仍然是那些大量的等待事件,涉及到各个用户的del、upd,尽管此时已经禁用了所有的用户!这说明redo有大量的已提交del、upd事务需要前滚,甚至会继续产生锁!
再继续看看下图,此时的数据库整体情况。

数据库最大的等待事件尽管是那些大量的前滚事务,但是这并不是他们慢的根本原因,数据库66%的时间在用于回滚事务,wait for a undo record !
这是一个3节点集群,单节点64CPU,内存也足够,数据库重启后大量事务回滚,会导致问题吗?此时竟然遭遇了一个oracle的大BUG。
---未完待续

标签: 暂无
最后更新:2021年6月9日

liking

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

归档

  • 2026 年 6 月
  • 2026 年 3 月
  • 2026 年 2 月
  • 2025 年 12 月
  • 2025 年 11 月
  • 2025 年 4 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 10 月
  • 2024 年 7 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2023 年 11 月
  • 2023 年 10 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 5 月
  • 2023 年 3 月
  • 2023 年 2 月
  • 2022 年 12 月
  • 2022 年 11 月
  • 2022 年 10 月
  • 2022 年 9 月
  • 2022 年 8 月
  • 2022 年 6 月
  • 2022 年 5 月
  • 2022 年 3 月
  • 2022 年 2 月
  • 2022 年 1 月
  • 2021 年 12 月
  • 2021 年 11 月
  • 2021 年 10 月
  • 2021 年 8 月
  • 2021 年 7 月
  • 2021 年 6 月
  • 2021 年 5 月
  • 2021 年 4 月
  • 2021 年 3 月
  • 2021 年 2 月
  • 2021 年 1 月
  • 2020 年 12 月
  • 2020 年 11 月
  • 2020 年 10 月
  • 2020 年 9 月
  • 2020 年 8 月
  • 2020 年 7 月
  • 2020 年 6 月
  • 2020 年 5 月
  • 2020 年 3 月
  • 2020 年 2 月
  • 2019 年 12 月
  • 2019 年 11 月
  • 2019 年 10 月
  • 2019 年 9 月
  • 2019 年 8 月
  • 2019 年 7 月
  • 2019 年 6 月
  • 2019 年 5 月
  • 2019 年 4 月
  • 2019 年 2 月
  • 2018 年 12 月
  • 2018 年 11 月
  • 2018 年 8 月
  • 2018 年 7 月
  • 2018 年 6 月
  • 2018 年 5 月
  • 2018 年 4 月
  • 2018 年 3 月
  • 2018 年 2 月
  • 2018 年 1 月
  • 2017 年 12 月
  • 2017 年 11 月
  • 2017 年 8 月
  • 2017 年 6 月
  • 2017 年 5 月
  • 2017 年 3 月
  • 2016 年 9 月
  • 2016 年 8 月
  • 2016 年 7 月
  • 2016 年 6 月
  • 2016 年 5 月
  • 2015 年 10 月
  • 2014 年 10 月
  • 2014 年 8 月
  • 2014 年 3 月
  • 2013 年 12 月
  • 2013 年 8 月
  • 2013 年 7 月
  • 2013 年 6 月
  • 2013 年 4 月
  • 2012 年 11 月
  • 2012 年 7 月
  • 2012 年 6 月
  • 2012 年 5 月
  • 2012 年 2 月
  • 2011 年 10 月
  • 2011 年 8 月
  • 2011 年 3 月
  • 2010 年 11 月
  • 2010 年 10 月
  • 2010 年 9 月
  • 2010 年 8 月
  • 2010 年 7 月
  • 2010 年 5 月
  • 2010 年 4 月
  • 2010 年 1 月
  • 2009 年 11 月
  • 2009 年 8 月
  • 2009 年 5 月
  • 2009 年 3 月
  • 2009 年 2 月
  • 2008 年 11 月
  • 2008 年 10 月
  • 2008 年 8 月
  • 2008 年 4 月
  • 2007 年 4 月

分类

  • BigData
  • kubernetes
  • linux
  • MongoDB
  • MySQL
  • Oracle
  • PostgreSQL
  • 备份恢复
  • 安装配置
  • 性能优化
  • 技术杂谈
  • 未分类
  • 梦回红楼
  • 测试
  • 生活点滴
  • 网站建设
  • 自制工具
  • 轻松一刻
  • 运维知识
  • 问题处理

COPYRIGHT © 2026 愿你出走半生,归来仍是少年. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang