暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

【排障记录】小白记一次诊断Oracle主机CPU持续100%的诊断思路

原创 Jose Chen 2020-10-09
2598

情况说明
摆在我面前的问题是一台IBM 16核主机,安装的windows server 2012操作系统,和一套Oracle11g数据库,情况是CPU一直是100%,但是数据库承载的流量其实并不大。

诊断思路
老实说,我第一时间想到的只能是索引,盲猜是一堆SQL语句走的全表扫描,导致性能被撑爆。
值得注意的是,主机的CPU虽然一直跑满,但是内存却一直维持在30%左右,所以我先登入数据库,show parameter sga 查看了下sga的使用情况,对照着一台正在跑的运行正常的数据库,把各种参数比如sga_max_size调大,需要重启的重启,发现并没有解决问题。
接下来我就查了数据库当前的等待事件,查出来百度,发现也没有什么实质性的参考
然后我导出了一份AWR报告,定位到SQL语句的内容模块,发现执行的速度确实是慢,由于是windows没法看到进程号,只有一个Oracle.exe,所以我利用Oracle自带的工具打开进程,查看最消耗cpu的进程pid,根据PID去查找对应的SQL语句,根据SQL语句查看SQL_ID,dbdms_display_awr查看执行计划,发现大部分表走得确实是全表扫描,但是一查索引都还是生效的,只能归咎于是索引列建的不太对,由于不了解业务,通过删除索引,按列挨个建的方式,确实改善了下应用的使用速度,但是CPU分时段还是有跑满的情况

总结
索引的建立需要对业务逻辑有一定的了解

最后修改时间:2021-12-22 14:40:21
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论