Oracle-一次TX行锁堵塞事件

问题背景:

        接用户问题报障,应用服务出现大量会话堆积现象,数据库锁堵塞严重,需要协助进行问题定位和排除。

问题分析:

        登录到数据库服务器上,首先查看一下数据库当前的等待事件情况,通过gv$session视图可以看到,当前会话存在大量的enq: TX - row lock contention行锁堵塞。

484c098390088f0988bb7fbc1914a4d6.png

        对应出现TX行锁堵塞情况,需要分析一下TX行锁的堵塞链情况,确认是否是同一个堵塞源还是多个不同的堵塞源,对于同一个堵塞源引发的TX行锁问题,需要重点去分析这个堵塞源的会话状态和操作行为是否存在问题,比如有没有在执行长时间拿锁的操作,语句的执行状态时间、会话的状态空闲还是活跃以及业务的事务执行逻辑。对于出现多条堵塞链和多个不同的堵塞源情况,通常是由于数据库的性能问题、表索引的设计问题、业务的事务逻辑问题导致,需要先分析整理堵塞链上的操作对象是否存在关联,业务的执行逻辑是否存在关系,再进一步分析堵塞产生的原因。

        这里我们通过gv$session视图的blocking_session查询会话之间的堵塞链情况,可以看到会话的堵塞源最终都指向了节点一实例的SID:855会话。

b7173b92d3809c6826795eaee8d03b7f.png

select *
  from (select a.inst_id, a.sid, a.serial#,
               a.sql_id,
               a.event,
               a.status,
               connect_by_isleaf as isleaf,
               sys_connect_by_path(a.SID||'@'||a.inst_id, ' <- ') tree,
               level as tree_level
          from gv$session a
         start with a.blocking_session is not null
        connect by (a.sid||'@'||a.inst_id) = prior (a.blocking_session||'@'||a.blocking_instance))
 where isleaf = 1
 order by tree_level asc;

        由于堵塞源都指向855会话,因此这里我们只取其中一条堵塞链<- 69@1 <- 100@1 <- 368@1 <- 855@1进行分析。

        查看堵塞源SID 855的会话执行情况,可以看到会话为LGWR进程,状态为ACTIVE,等待事件为rdbms ipc message。LGWR引发堵塞,很有可能是LGWR进程无法及时完成日志写工作。

e6c1b91a0eaba6f29c33390b6b597f5b.png

        再继续往下查看,堵塞链上的下一级会话SID 368,可以看到会话为JDBC应用会话,等待事件为log file switch (checkpoint incomplete),当前执行SQL为:gyc4mt35nxs83,可以看到当前会话是由于日志切换检查点未完成,导致会话出现堵塞。

cdb63242a67e8a4c8e3c503e87d0c488.png

        再继续查看下一级会话SID 100和69,可以看到会话为JDBC应用会话,等待事件为enq: TX - row lock contention,当前执行SQL为:gyc4mt35nxs83。

d7bc04990bf397307b76540e9292fc6e.png

        执行SQL:gyc4mt35nxs83为UPDATE XXXX_TAB语句。

c5a0572a6ffa6e519fbc23fd1c1968d7.png

        从这里,我们可以确认整个堵塞链的发生原因,由于LGWR进程日志切换检查点无法及时完成,导致执行XXXX_TAB的UPDATE语句的会话出现等待,进而引发后续的对该表的UPDATE会话出现TX锁堵塞。

        从后台日志也可以看到有很多由于检查点未完成导致日志无法分配的信息,那么数据库当前出现日志切换检查点未完成的原因是什么呢,我们继续往下分析。

20b2d06cf33c702bc375922aa738dacf.png

        当前数据库REDO日志组的配置为1G*3组,属于合理的日志组配置,查看数据库的磁盘IO负载情况,可以看到当前的磁盘IO负载非常繁忙,IO util已经达到100%,很明显当前数据库的IO写操作较多,频繁触发检查点,加上DBWR进程不断写数据,最终导致日志切换由于检查点来不及完成出现等待。

80533a49e16c6c09d258887d3f0d26b2.png

        检查数据库的写操作,发现罪魁祸首原来是之前的TX锁执行语句gyc4mt35nxs83,语句对千万级的分区进行全扫描,加上服务器的磁盘为机械盘,磁盘IO性能很快就被打满。

a9b1959d2218965062f8e5f67e35298b.png

问题解决:

        1 跟应用确认,当前的会话模块为非核心业务,可以先将TX锁堵塞会话kill,释放服务器IO资源,避免影响其他业务模块。

        2 先关闭引发TX锁的非核心业务模块,待语句优化之后再进一步启动。

Tip:欢迎关注公众号:勇敢牛牛的笔记,超100+的原创内容,每周不定期更新数据库技术文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/601957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大学物理实验 期末复习笔记整理(个人复习笔记/侵删/有不足之处欢迎斧正)

一、误差和数据处理 1. 系统误差是指在重复性条件下&#xff0c;对同一被测量进行无限多次测量所得结果的平均值与被测量的真值之差。它通常是由于测量设备、测量方法或测量环境等因素引起的&#xff0c;具有重复性、单向性和可测性。而随机误差则是由于测量过程中一系列有关因…

WRT1900ACS搭建openwrt服务器小记

参考链接 wrt1900acs openwrt wrt1900acs openwrt 刷机 wrt1900acs原生固件刷openwrt-23.05.3-mvebu-cortexa9-linksys_wrt1900acs-squashfs-factory.img wrt1900acs openwrt更新刷openwrt-23.05.3-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin 通过WEB UI来…

醛固酮(Aldosterone)/Aldosterone ELISA kit--比色竞争法酶免疫检测试剂盒

醛固酮&#xff08;Aldosterone&#xff09;是一种由肾上腺皮质中的胆固醇合成的类固醇激素。醛固酮在肾脏和肝脏中代谢&#xff0c;并作为控制钠钾平衡的关键盐皮质激素发挥作用。肾上腺合成和释放醛固酮主要受肾素-血管紧张素-醛固酮系统&#xff08;RAAS&#xff09;的调节&…

call, apply , bind 区别详解 及 实现购物车业务开发实例

call 方法&#xff1a; 原理 call 方法允许一个对象借用另一个对象的方法。通过 call&#xff0c;你可以指定某个函数运行时 this 指向的上下文。本质上&#xff0c;call 改变了函数运行时的作用域&#xff0c;它可以让我们借用一个已存 在的函数&#xff0c;而将函数体内的 th…

ISIS学习第一部分——isis基本概念

目录 一.ISIS与OSI模型 1.IS-IS&#xff0c;中间系统到中间系统 2.ES-IS,终端系统到中间系统 二.NET——ISIS中的“IP地址” &#xff08;1&#xff09;NET有3个部分: 1.Area ID 2.System ID 3.SEL &#xff08;2&#xff09;.前面是可变长的&#xff0c;如何进行区分…

前端开发攻略---使用Sass调整颜色亮度,实现Element组件库同款按钮

目录 1、演示 2、实现原理 3、实现代码 1、演示 2、实现原理 改变颜色亮度的原理是通过调整颜色的 RGB 值中的亮度部分来实现的。在 Sass 中&#xff0c;可以使用颜色函数来操作颜色的 RGB 值&#xff0c;从而实现亮度的调整。 具体来说&#xff0c;亮度调整函数通常会改变颜…

使用 Docker 部署 TaleBook 私人书籍管理系统

1&#xff09;项目介绍 GitHub&#xff1a;https://github.com/talebook/talebook Talebook 是一个简洁但强大的私人书籍管理系统。它基于 Calibre 项目构建&#xff0c;具备书籍管理、在线阅读与推送、用户管理、SSO 登录、从百度/豆瓣拉取书籍信息等功能。 友情提醒&#x…

ansible------inventory 主机清单

目录 inventory 中的变量 2&#xff09;组变量[webservers:vars] #表示为 webservers 组内所有主机定义变量&#xff0c;所有组内成 员都有效 ansible_userrootansible_passwordabc1234 3&#xff09; [all:vars…

前置知识储备

基本认知 什么是模式 在一定环境中解决一些问题的方案&#xff08;通俗来说&#xff1a;特定环境中用固定的套路解决问题&#xff09; 什么是设计模式 设计模式是一套反复被人使用&#xff0c;多数人知晓的&#xff0c;经过分类编目的代码设计经验的总结 设计模式最终的目…

[笔试训练](十五)

目录 043:平方数 044:分组 045:拓扑排序 043:平方数 平方数 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 简单题&#xff0c;开根号之后判断左右两个数哪个离得近。 #include <iostream> #include <cmath> using namespace std; typedef long long…

电脑文件批量重命名不求人:快速操作,高效技巧让你轻松搞定

在数字化时代&#xff0c;电脑文件的管理与整理显得尤为重要。当面对大量需要重命名的文件时&#xff0c;一个个手动修改不仅耗时&#xff0c;还容易出错。那么&#xff0c;有没有一种方法可以快速、高效地完成这一任务呢&#xff1f;答案是肯定的&#xff0c;下面就来介绍几种…

温暖家居新风尚,能率壁挂炉——设计新风尚,体验再升级

随着家居品质要求的提升&#xff0c;现代人对家居的舒适性和设计感有了更高的追求。壁挂炉&#xff0c;作为现代家居中不可或缺的一部分&#xff0c;其重要性日益凸显。中国国际供热通风空调、卫浴及舒适家居系统展览会&#xff08;ISH China & CIHE&#xff09;将于2024年…

测评工作室的养号成本,效率,纯净度,便捷性等问题怎么解决?

大家好&#xff0c;我是南哥聊跨境&#xff0c;最近有很多做测评工作室的朋友找到南哥&#xff0c;问我有什么新的测评养号系统可以解决成本&#xff0c;效率&#xff0c;纯净度&#xff0c;便捷性等问题 测评养号系统从最早的模拟器、虚拟机到911、VPS、手机设备等&#xff0…

【深度学习实战(33)】训练之model.train()和model.eval()

一、model.train()&#xff0c;model.eval()作用&#xff1f; model.train() 和 model.eval() 是 PyTorch 中的两个方法&#xff0c;用于设置模型的训练模式和评估模式。 model.train() 方法将模型设置为训练模式。在训练模式下&#xff0c;模型会启用 dropout 和 batch norm…

|Python新手小白中级教程|第二十三章:列表拓展之——元组

文章目录 前言一、列表复习1.索引、切片2.列表操作字符3.数据结构实践——字典 二、探索元组1.使用索引、切片2.使用__add__((添加元素&#xff0c;添加元素))3.输出元组4.使用转化法删除元组指定元素5.for循环遍历元组 三、元组VS列表1.区别2.元组&#xff08;tuple&#xff0…

零门槛副业兼职!10种长期赚钱好方法!

想要实现财务自由&#xff0c;不能仅停留在梦想层面&#xff0c;更需要付诸实践。 以下是我从网络上精心整理的十大可靠的兼职副业建议&#xff0c;旨在助你一臂之力。 这些项目已根据推荐程度、难度水平、目标人群以及预期收入进行了细致分类。 我要强调的是&#xff0c;任…

Cosmo Bunny Girl

可爱的宇宙兔女郎的3D模型。用额外的骨骼装配到Humanoid上,Apple混合了形状。完全模块化,包括不带衣服的身体。 技术细节 内置,包括URP和HDRP PDF。还包括关于如何启用URP和HDRP的说明。 LOD 0:面:40076,tris 76694,verts 44783 装配了Humanoid。添加到Humanoid中的其他…

带EXCEL附件邮件发送相关代码

1.查看生成的邮件 2.1 非面向对象的方式&#xff08;demo直接copy即可&#xff09; ​ REPORT Z12. DATA: IT_DOCUMENT_DATA TYPE SODOCCHGI1,IT_CONTENT_TEXT TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,IT_PACKING_LIST TYPE TABLE OF SOPCKLSTI1 WITH HEADER LIN…

AI编码工具-通义灵码初识

AI编码工具-通义灵码初识 通义灵码支持环境及语言代码安全性 通义灵码安装通义灵码登录 关于通义灵码的初识&#xff0c;还是得从2023云栖大会来说起。2023云栖大会带来了跨越式升级的千亿级参数规模大模型——通义千问2.0&#xff0c;随之而来的便有通义灵码&#xff0c;那么什…

SpringBoot项目配置HTTPS接口的安全访问

参考&#xff1a;https://blog.csdn.net/weixin_45355769/article/details/131727935 安装好openssl后&#xff0c; 创建 D:\certificate CA文件夹下包含&#xff1a; index.txt OpenSSL在创建自签证书时会向该文件里写下索引database.txt OpenSSL会模拟数据库将一些敏感信息…