Oracle诊断案例----如何捕获问题SQL解决过度CPU消耗问题 --使用vmstat,top等辅助解决Oracle数据库性能问题 Last Updated: <!-- #BeginDate format:wfcIS1m -->Sunday, 2004-10-24 0:37<!-- #EndDate --> Eygle | |||||||||||||
<!--DWLayoutEmptyCell--> |
问题描述: 1.登陆数据库主机 使用vmstat检查,发现CPU资源已经耗尽,大量任务位于运行队列:
2.使用Top命令 观察进程CPU耗用,发现没有明显过高CPU使用的进程
3.检查进程数量
发现系统存在大量Oracle进程,大约在300左右,而正常情况下Oracle连接数应该在100左右. 4.检查数据库 查询v$session_wait获取各进程等待事件
发现存在大量db file scattered read及db file sequential read等待. 5.捕获相关SQL 这里用到了我的以下脚本getsqlbysid.sql:
对几个全表扫描进程跟踪以后,得到以上SQL语句. 使用该应用用户连接,检查其执行计划:
该表这里有22万记录,全表扫描已经不再适合. 检查该表,存在以下索引:
6.决定创建新的索引以消除全表扫描
7.观察系统状况 原大量等待消失
持续观察的CPU使用情况
至此,此问题得以解决. 本文作者: 原文出处: http://www.eygle.com/case/How.To.Capture.Problem.SQL.htm |
Oracle诊断案例----如何捕获问题SQL解决过度CPU消耗问题
最新推荐文章于 2024-07-10 09:09:03 发布