一个SQL导致业务宕机的血案

2024年 2月 16日 103.8k 0

记录一次真实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多,一直持续很长时间

一个SQL导致业务宕机的血案-1

于是我用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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论