oracle服务器的CPU占用率一直100%排查方式

背景说明

公司开发、测试、演示环境,三个环境的oracle服务器无论服务器是否空闲, CPU的占用率一直是100%, 一直也没有找到问题原因,今天就花了一整天时间研究这个问题。

通过AWR报告查看oracle运行情况

awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告。

  1. sqlplus / as sysdba 链接数据库。执行下面的sql,可以替换时间范围,设定报告范围
select 
snap_id,
dbid,
instance_number,
to_char(end_interval_time,'YYYY-MM-DD HH24:MI:SS')
from dba_hist_snapshot  
where end_interval_time >=to_date('2020-12-18 09:00:00', 'yyyy-mm-dd hh24:mi:ss')    
and end_interval_time <= to_date('2020-12-18 10:01:00', 'yyyy-mm-dd hh24:mi:ss')  
order by end_interval_time ;

结果如下图请添加图片描述

  1. 生成AWR报告。4个参数分别是步骤1中查询结果的DBID列,INSTANCE_NUMBER列,最后两个参数是SNAP_ID的开始和结束值。
  select output from 
  table(dbms_workload_repository.awr_report_html(1660034318,1,2059,2062)); 

结果如下
请添加图片描述

  1. 将结果集复制到txt文档,再将后缀改成html即可打开查看
    效果如下图:
    请添加图片描述

4.分析报告发现,执行CPU占用率很高的sql, 是一个物化视图,物化视图相当于一张物理表, 物化视图会在创建时生成定时任务,定时刷新构建物化视图的sql。而这个sql非常复杂,而且很耗时,而这个物化视图执行周期为10分钟,可能10分钟不一定执行的玩,物化视图关联表很多,而且数据量达到了100W, 导致oracle进程的cpu占用率一直是100%

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

干饭两斤半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值