实战过程记录:濒临宕机的业务系统仅优化1个SQL即恢复!!

记录一次真实Oracle系统SQL问题的案例

问题现像:

某客户业务的应用人员找到我,说是重要的业务系统出问题了,今天早上开始就很卡,现在卡到几乎无法工作。

问题的现象如下:

前台窗口查询啥都半天没有返回结果,多数都会弹出快照过旧的报错

他们进行了 观察,发现数据库RAC实例1节点的UNDO满了,2节点的没有满。

他们尝试了自己扩容一下RAC1节点的UNDO,但是扩了好久也没有成功

于是做为一名啥都得会一点的打工人被撵上架来处理。。。。。

基本环境:

运行这套数据库系统的硬件是Oracle的小机,这套RAC实例虽说分的资源不是最多,但是也不少了

2个RAC节点的配置如下:

操作系统:solaris 11.3

数据库版本:oracle 12.2 CDB

LDM配置:VCUPU=224、VRAM=448G、SWAP=60G

存储空间20T,HPE 3PAR 20000系列存储,全闪SSD。服务器配置了6*16GB端口HBA。

解决过程:

连上VPN,登录系统一看资源情况,好家伙!CPU的负载50多,一直持续很长时间

image.png

于是我用Oracle sqldeveloper 登录到数据库,查询一下时间段SQL等待事件情况

SELECT trunc(sample_time, 'mi') tm, sql_id, nvl(event,'CPU'),count(distinct session_id) cnt

FROM dba_hist_active_sess_history

WHERE sample_time>=to_date('2024-1-39 09:00:00','yyyy-mm-dd hh24:mi:ss')

AND sample_time<=to_date('2024-1-30 14:00:00','yyyy-mm-dd hh24:mi:ss')

GROUP BY trunc(sample_time, 'mi'), sql_id,nvl(event,'CPU')

ORDER BY cnt desc;

查看一下返回结果,基本都是同1个SQL_ID的SQL搞的

image.png

这与AWR里的等待事件也吻合,主要的原因还是I/O问题导致的。

image.png

使用SQL DEVELOPER实例查看器查看,系统主要是卡在user i/o这个等待事件。

image.png

使用“实时SQL监视”工具查看,后台果然还是一直在跑这个SQL,任务一大堆,等待时间相当的长

image.png

确定问题SQL

select count(*) from wh53 where sjbbh=:1

查看一下这个SQL的执行计划,又是全表扫描,看样子就是缺少关键字段索引导致的,1个SQL查询的IO居然有41G,我这HPE 3PAR 20000全闪存的阵列都给干趴下了!

image.png

看一下这个表的行数,1亿7千5百万行左右的堆表。

image.png

这个简单,SQL优化工具都不用了,直接联系开发,告诉他们SJBBH这个字段没有索引,需要添加一下,并告诉他们添加索引的时候一定要加online。

添加完我再看,他这个表索引还不少,估计没有几个能用上的。。。

image.png

这次添加完再看执行计划,己经走了索引

image.png

之后服务器的CPU负载也慢慢的下来了。最后系统恢复了正常。

总结:

这个问题不算复杂,很容易就能发现是索引的问题,但这个问题是十分的经典。

一条有问题的SQL,再牛的服务器存储也挺不住,新需求不要草草上线,数据量稍微一大,一点失误就干瘫痪。

也欢迎关注我的公众号【徐sir的IT之路】,一起学习!

————————————————————————————
公众号:徐sir的IT之路
CSDN :徐sir(徐慧阳)-CSDN博客
墨天轮:徐sir的个人主页 - 墨天轮
PGFANS:PGFans问答社区:全球唯一的PostgreSQL中文技术交流社区

————————————————————————————

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Cargo国内镜像提升Rust开发效率

Rust是一门现代化的系统编程语言&#xff0c;而Cargo则是Rust的官方包管理工具。在进行Rust项目开发时&#xff0c;由于网络原因&#xff0c;从Crates.io下载依赖可能会很慢。为了提高开发效率&#xff0c;我们可以配置Cargo使用国内的镜像源&#xff0c;以加速包的下载和构建过…

极致日志记录:Pino 为你带来的性能与便利性

微信搜索“好朋友乐平”关注公众号。 1. Pino Pino 是一个非常快速且简洁的 Node.js 日志库&#xff0c;其设计宗旨在于提供最小的开销以及高性能的日志记录功能。Pino 项目受到 Bunyan 日志库的启发&#xff0c;但其在性能上做了大量优化&#xff0c;因此在处理大量日志时&am…

c++STL系列——(十)Adapter

目录 栈适配器 基本特性 基本操作 实际应用 队列适配器 基本特性 基本操作 实际应用 优先队列适配器 基本特性 基本操作 实际应用 总结 引言 当提到C STL&#xff08;标准模板库&#xff09;中的适配器&#xff08;Adapter&#xff09;&#xff0c;我们通常指的是…

【Linux】调试工具gdb:初识

前言 今天来记录并学习一下gdb的使用 背景 程序的发布方式有两种&#xff0c;debug模式和release模式Linux gcc/g出来的二进制程序&#xff0c;默认是release模式要使用gdb调试&#xff0c;必须在源代码生成二进制程序的时候, 加上 -g 选项 使用 gdb FileName 退出&#x…

Pr下载安装(视频剪辑软件Pr安装包下载2024)

Adobe全家桶下载方式 AE下载 PR下载 将持续更新~ 文章目录 Adobe全家桶下载方式PR下载方式【点我获取下载链接】一、Pr简介二、链接内容包含1.PR软件2.PR教学课程 声明 PR下载方式【点我获取下载链接】 迅雷下载&#xff1a;迅雷下载方式百度网盘下载&#xff1a;百度网盘下…

效果炸裂!OpenAI首个视频生成模型发布,1分钟流畅高清,网友:整个行业RIP

刚刚&#xff0c;奥特曼发布OpenAI首个视频生成模型Sora。 完美继承DALLE 3的画质和遵循指令能力&#xff0c;能生成长达1分钟的高清视频。 AI想象中的龙年春节&#xff0c;红旗招展人山人海。 有紧跟舞龙队伍抬头好奇官网的儿童&#xff0c;还有不少人掏出手机边跟边拍&…

109 C++ 理解auto 类型推断,auto 应用场合

一。auto 类型推断 auto 用于变量的自动推断&#xff0c;原理是--在声明变量的时候&#xff0c;根据变量的初始值的类型&#xff0c;自动为此变量选择匹配的类型&#xff0c;而不需要我们显示指定类型 特点&#xff1a;1.auto 的类型推断是发生在编译期间的&#xff0c;所以不…

java 调用智谱ai 大模型的完整步骤(国内的 AI 大模型 对话)

要使用java 调用智谱AI的API进行异步调用&#xff0c;您需要遵循以下步骤&#xff1a; 1. **获取API密钥**&#xff1a; - 您需要从智谱AI平台获取一个API密钥&#xff08;API Key&#xff09;&#xff0c;这个密钥将用于所有API请求的身份验证。 2. **SDK源…

【MySQL/Redis】如何实现缓存一致

目录 不实用的方案 1. 先写 MySQL , 再写 Redis 2. 先写 Redis &#xff0c; 再写MySQL 3. 先删 Redis&#xff0c;再写 MySQL 实用的方案 1. 先删 Redis&#xff0c;再写 MySQL, 再删 Redis 2. 先写 MySQL , 再删 Redis 3. 先写MySQL&#xff0c;通过BinLog&#xff0…

傅里叶变换(Fourier Transform)简介

目录 1.什么是傅里叶变换2.应用场景开源的语音识别软件1.什么是傅里叶变换 傅里叶变换(Fourier Transform)是一种在数学、物理和工程等领域中广泛使用的数学变换。它是信号处理中的基础工具,用于将一个函数或信号从时域(或空间域)转换到频域。 傅里叶变换的基本思想是,…

ClickHouse--10--临时表、视图、向表中导入导出数据

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.临时表1.1 特征1.2 创建一个临时表 2.视图2.1 普通视图2.2 物化视图 3.向表中导入导出数据3.1 案例 1.临时表 1.1 特征 ClickHouse 支持临时表&#xff0c;临时表…

智能汽车行业产业研究报告:毫米波雷达优势明显,核心壁垒是芯片、天线阵列、波形设计

今天分享的是智能汽车系列深度研究报告&#xff1a;《智能汽车行业产业研究报告&#xff1a;毫米波雷达优势明显&#xff0c;核心壁垒是芯片、天线阵列、波形设计》。 &#xff08;报告出品方&#xff1a;国泰君安证券&#xff09; 报告共计&#xff1a;67页 毫米波雷达被广泛…

Flume(二)【Flume 进阶使用】

前言 学数仓的时候发现 flume 落了一点&#xff0c;赶紧补齐。 1、Flume 事务 Source 在往 Channel 发送数据之前会开启一个 Put 事务&#xff1a; doPut&#xff1a;将批量数据写入临时缓冲区 putList&#xff08;当 source 中的数据达到 batchsize 或者 超过特定的时间就会…

【前端web入门第六天】01 CSS浮动

⭐️第六天目标 解决布局问题如多个div标签在同一行的问题 简单来说,就是可以两个标签,一个在左边,另一个在右边. &#x1f449;相关知识 标准流浮动flex布局❗️ ❗️ ❗️ 标准流是先导,浮动和flex布局都可以解决问题,但是浮动在目标开发领域较为落后,主流的解决办法是flex…

OpenCV Mat实例详解 一

OpenCV中的Mat是一个类&#xff0c;它用存储图像信息。由两部分数据组成&#xff1a;矩阵头和像素值矩阵。矩阵头包含矩阵尺寸、存储方法、存储地址等信息&#xff0c;而像素值矩阵则存储实际的像素值数据。 Mat类在OpenCV中有十分重要的作用&#xff0c;图像信息的载入、保存、…

Java 中 一些常见的并发集合类

什么是并发集合&#xff1f;列举一些常见的并发集合类 并发集合是一种特殊的数据结构&#xff0c;它允许多个线程安全地访问和修改。在多线程编程的场景下&#xff0c;只有使用并发集合才能确保线程安全&#xff0c;避免多个线程在对同一个数据结构进行并发操作时引发的竞态条…

UI设计常见风格(1):一文读懂九个,教你如何辨识。

Hello&#xff0c;我是大千UI工场&#xff0c;设计风格是我们新开辟的栏目&#xff0c;上次讲了毛玻璃风格、辨识方法、应用场景、运用方法等&#xff0c;很受大家欢迎&#xff0c;本次带来常见的风格及辨识&#xff0c;让大家有个总览&#xff0c;以后会逐个讲解的&#xff0c…

【Java】零基础蓝桥杯算法学习——动态规划例题

例题&#xff1a;2023年第十四届蓝桥杯Java软件开发B组E题 蜗牛 参考解答&#xff1a; 参考代码示例&#xff1a; import java.util.Scanner; public class Main {static int N 100010;static int[] arr new int[N];static int[] a new int[N]; //传送带的起始坐标static …

人工智能之数学基础【最小二乘法】

原理 最小二乘法由勒让德(A.M.Legendre)于1805年在其著作《计算彗星轨道的新方法》中提出,主要思想是最小化误差二次方和寻找数据的最佳匹配函数,利用最小二乘法求解未知参数,使得理论值与观测值之差(即误差,或称为残差)的二次方和达到最小,即: E = ∑ i = 1 n ϵ …

【实战】一、Jest 前端自动化测试框架基础入门(一) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(一)

文章目录 一、前端要学的测试课1.前端要学的测试2.前端工程化的一部分3.前端自动化测试的例子4.前端为什么需要自动化测试&#xff1f;5.课程涵盖内容6.前置技能7.学习收获 二、Jest 前端自动化测试框架基础入门1. 自动化测试背景及原理前端自动化测试产生的背景及原理 2.前端自…