cpu主要功能:处理指令、执行操作、要求进行动作、控制时间、处理数据。
结合数据库实例cpu占用高,可能的原因是数据库在执行大量的操作(全表查询、大量排序等)。
由于公司没有dba,遇到数据库问题只能自己排查。
select p.pid,
s.sid,
s.serial#,
s.username,
q.sql_id,
q.sql_text,
q.sql_fulltext,
w.event,
w.wait_time,
w.state,
case
when w.state = 'waiting' then
w.seconds_in_wait
when w.state = 'waiting known time' then
w.wait_time
end as sec_in_wait
from v$session s, v$session_wait w, v$sqlarea q, v$process p
where s.sid = w.sid
and s.sql_id = q.sql_id
and p.addr = s.paddr
and w.event not like 'sql*net%'
and s.username is not null
and w.wait_time >= 0
order by w.wait_time desc;
发现存在等待事件,分析待执行的sql发现存在多表(百万数据)全量关联查询。
于是对数据以及sql进行了相应优化,cpu占用较高问题得到根本解决。
造成cpu暴增的原因有很多,思路也有很多,后续如果遇到可以参考上述思路,精准定位到问题并进行优化。
如对本文有疑问, 点击进行留言回复!!
Windows10安装Oracle19c数据库详细记录(图文详解)
Oracle用decode函数或CASE-WHEN实现自定义排序
Oracle利用errorstack追踪tomcat报错ORA-00903 无效表名的问题
网友评论