暂无图片
Oracle进程CPU占用高99%,无法释放
我来答
分享
Mzy
2021-02-07
Oracle进程CPU占用高99%,无法释放

遇到一个问题:
Oracle 11g,Windows server 2012
Oracle进程CPU占用高,99%,无法释放

经过尝试 :
使用查找使用CPU最多的SQL语句、查询占用资源最多的会话等等,baidu了一大遍可以用的语句,无法准确定位哪个SQL语句,因为每次查都可能查不到

最终解决方法:
最后是通过em,查看ASH报告和ADDM 性能分析的顶级 SQL 语句,才能定位到是某个视图的问题,把这个视图优化后,重启oracle数据库,才解决CPU占用高的问题

疑问:
ASH报告和ADDM 性能分析都不是实时的,我想实时查询出问题的会话或SQL语句,请问该如何查询?
目前发现占用CPU高的问题,就像是该视图执行后,一直占用了CPU资源无法释放,但是又无法实时查出是该视图,怎样才能查出来?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
侯志清

set linesize 500
col username for a10
col event for a35
col program for a20 truncate
col cpu_p for 99.99
select ta.,round(ta.cpu_time/tb.total_cpu * 100,1) cpu_usage from
(select s.username,s.program,s.event,s.sql_id,sum(trunc(m.CPU)) CPU_TIME,count(
) sum
–,sum(m.PHYSICAL_READS) P_READ,sum(LOGICAL_READS) L_READ
from vsessmetricm,vsessmetric m ,vsession s
where ( m.PHYSICAL_READS >100
or m.CPU>100
or m.LOGICAL_READS >100)
and m.SESSION_ID = s.SID
and m.SESSION_SERIAL_NUM = s.SERIAL#
and s.status = ‘ACTIVE’
and username is not null
group by s.username,s.program,s.event,s.sql_id
order by 5 desc) ta,(select sum(cpu) total_cpu from v$sessmetric) tb
where rownum < 20;

该语句查询消耗CPU的sql,并列出每个sql占用了已消耗CPU的百分比。

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交