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