为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了《云和恩墨技术通讯》,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考。同时,我们也希望能够将热点事件、新的产品特性及其他有价值的信息聚集起来,为您提供具有前瞻性的支持信息,保持对于当前最新的数据库新闻和事件的了解,其中包括重要数据库产品发布、警报、更新、新版本、补丁等。

墨天轮文档:《云和恩墨技术通讯(6月刊)》:https://www.modb.pro/doc/4551(复制到浏览器中打开或者点击文末左下角“阅读原文”立即下载)

以下截取部分页面:

以下列出其中一个频发问题。

频发:不规范SQL引发大量TX锁——易金东

在数据库日常运维中,由于开发人员的一个不规范操作,很有可能会对生产业务造成不可估量的损失,下面是一个由于SQL写法不规范引发大量TX锁的案例:

问题描述

某客户数据库5月14日上午8点半突发大范围业务堵塞,大量进程等待TX锁。

问题分析

第一步找到HOLDER:

HOLDER进程总是空闲状态,杀掉以后后面的SESSION也会进入空闲HOLDER。堵塞不会减少。所以我们当时分析应该是由于业务部主动提交引发的问题,但随后征得业务人员同意杀掉所有锁相关进程后全部会话依然会进入等待新的EVENT 为:“transaction”。

第二步分析数据库事务

经过分析:发现了当时有大事务回滚,根据分析回滚段查询到了相关的表为,owner.tab_info这是业务的核心表, 根据这张表反查ASH信息,我们发现了一条SQL执行了14小时, 这个SQL语句引发的大事务回滚。SQL文本如下:

updateowner.tab_info set col1='018',COL2=10,COL3=null where col4 in (select col4 fromowner.tab_init)

第三步分析问题原因

首先IN字句里的语法有问题,(select col4 from owner.tab_init)根本无法执行,因为这张表上根本没有col4列。所以单独执行直接报错了,而且表owner.tab_init也是一个很简单的小表,业务人员的原意也是只修复个别错误的数据。ORACLE数据库在子查询还是会优先找子查询中表自身的列,如果找不到相关列就会自动引用父查询的列。那么这条语句的语义就变了,原本的SQL等效于

update owner.tab_info set col1='018',COL2=10,COL3=nullwhere col4 in (select col4 from dual)

或者

update owner.tab_info set col1='018',COL2=10,COL3=nullwhere col4 =col4

业务人员原本是想做个别条的维护,没想到做成了全表更新,导致了一个天大的事务回滚引发了这个故障。

问题解决

1、业务运维人员停止相关业务更新数据。

2、创建一张新表,COPY老表的所有数据,并按照原表创建索引。

3、导出并导入原表的统计信息。

4、切换表名,RENAME。

5、通知业务重启业务进行观察。

我们合理使用了并行、统计信息导出导入、导出建表、建索引语句等技术半小时内完成了这个20G表,数千万条记录的表的切换,恢复业务后一切正常。

回过头来想想一身冷汗,如果这个表没那么大,这个语句就执行成功了,可能会导致整个系统数据被全部该乱,造成数据紊乱的损失。所以开发阶段编写SQL时一定要通过别名指定列名,明确每一列的具体出处,才能防范这种问题再次发生。另外,在系统方面,我们也设想能通过实现代理+阻断的方式由系统阻断这类SQL,禁止往生产分发。

墨天轮原文链接:https://www.modb.pro/doc/4551

推荐阅读:144页!分享珍藏已久的数据库技术年刊

数据和云

ID:OraNews

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

点击下图查看更多 ↓

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

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

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

下载丨6月数据库技术通讯:不规范SQL引发大量TX锁相关推荐

  1. 下载丨10月数据库技术通讯:HAIP在两个私网网卡上发生互换,导致ASM实例启动失败...

    墨墨导读:为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考.同时,我们也 ...

  2. 下载丨9月数据库技术通讯:Redo日志丢失,重建遭遇ORA-16433处理

    为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考.同时,我们也希望能够将 ...

  3. 下载丨8月数据库技术通讯:不合理业务设计导致CPU飙升

    为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考.同时,我们也希望能够将 ...

  4. 下载丨7月数据库技术通讯:LINUX OS配置问题导致数据库重启

    为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考.同时,我们也希望能够将 ...

  5. 下载丨云和恩墨技术通讯:OCR无法正常读取导致节点宕机

    墨墨导读:为了及时共享行业案例,通知共性问题,达成共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>,通过对过去一段时间的知识回顾,故障归纳,以期提供有价值的信息供大家参考.同时,我们也 ...

  6. 五月数据库技术通讯丨Oracle 12c因新特性引发异常Library Cache Lock等待

    每月关注:35页数据库技术干货,汇总一个月数据库行业热点事件.新的产品特性,包括重要数据库产品发布.警报.更新.新版本.补丁等. 亲爱的读者朋友: 为了及时共享行业案例,通知共性问题,达成共享和提前预 ...

  7. mongodb数据同步到oracle_数据库周刊41丨9月数据库排行榜;2020 数据技术嘉年华…...

    摘要:墨天轮数据库周刊第41期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档.本周分享9月数据库热度排行榜:国产数据库签约项目盘点:2020 数据技术嘉年华活动预告:OGG日常运维及故 ...

  8. 4月22日丨【云数据库技术沙龙】技术进化,让数据更智能

    4月22日,云数据库技术沙龙"MySQL x ClickHouse"专场 "MySQL x ClickHouse" 技术沙龙,本次沙龙以"技术进化,让 ...

  9. 三月数据库技术通讯.pdf | Oracle配置DCD避免会话被防火墙强制断开

    每月关注:26 页数据库技术干货,汇总一个月数据库行业热点事件.新的产品特性,包括重要数据库产品发布.警报.更新.新版本.补丁等. 亲爱的读者朋友: 为了及时共享行业案例,通知共性问题,达成共享和提前 ...

最新文章

  1. 刻意练习:Python基础 -- Task09. else 与 with 语句
  2. 在Linux下开发多语言软件(gettext解决方案)
  3. 中国钠离子电池行业竞争需求状况及投资盈利分析报告2021-2027年版
  4. Arts 第十八周(7/15 ~ 7/21)
  5. arcsoft panorama maker 6_2021年6月30日入宅新居好吗,农历五月二十一是乔迁吉利日吗——天玄网...
  6. 每日一题(14)—— 交换a,b的值(不使用中间变量)
  7. python utc时间如何取整_Python和Pandas:如何在不同的分辨率上取整unix时间戳(utc):1min5min15min30min1d?...
  8. [在线+源码]vue全家桶+Typescript开发一款习惯养成APP
  9. C均值聚类算法及其实现
  10. iOS应用的真机调试
  11. 遍历实体包含的List
  12. Windows Phone 7 Tips (6)
  13. 微信小程序下载文件ios无法预览问题--解决方案
  14. 怎样用好酒店培训管理系统
  15. /dev/sda is entire device, not just one partition. Refusing to make a filesystem here
  16. mysql 查询去掉多余零
  17. 一元三次方程求解matlab_浅谈三次函数的性质及其在高考中的应用
  18. java进程线程_Java进程线程笔记
  19. 推荐一款快速上手的可视化分析工具:网易有数
  20. python--爬虫--获取和解析存储网页内容--以薄荷网为例

热门文章

  1. activiti利弊_事件驱动的安全性的利弊
  2. irc ubuntu_让我们聊聊写作:在IRC上加入我们
  3. 2016年世界编程大赛_2016年热门编程趋势
  4. 开源管理项目管理_避免开源项目管理中的不良做法
  5. gpio库_斗牛犬:出奇的快速GPIO库
  6. 教程 | MySql都会了,确定不学习一下MyCat分片?
  7. 设计模式-里氏替换原则
  8. HTML time元素
  9. Bootstrap 模态框插件Modal 的方法
  10. mysql rls_Python插入到mysql表不起作用