Oracle 数据库利用 awr 报告进行健康检查

492 阅读3分钟

小知识,大挑战!本文正在参与“  程序员必备小知识  ”创作活动
本文同时参与 「掘力星计划」  ,赢取创作大礼包,挑战创作激励金

一、背景

经常遇到这样的问题,协助其他人解决了数据库问题后,他经常会再让帮忙检查下数据库还有没有其他问题,这时候最简单的方式就是抓取业务高峰期的 awr 报告进行分析。

二、确认业务高峰期

可与系统运维人员确认业务高峰期,但更推荐通过在数据库里查询 redo 日志切换频率来确认业务高峰期,切换最频繁的时间段即为业务高峰期。 image.png 如上图可判断系统业务高峰期为上午8-10点。
上述结果可通过之前分享的巡检脚本获取 juejin.cn/post/699212…

三、抓取高峰期 awr 报告

本次抓取了8-9点的 awr 报告

四、分析 awr 报告

4.1 查看数据库整体压力

image.png 此部分说明参考上一篇 juejin.cn/post/701444…

上述抓取的结果数据库压力很小,正常范围。

4.2 查看数据库内存压力

awr 报告中查看 SGA Target Advisory 部分内容 image.png
此部分内容为数据库估算的内存使用情况,SGA Size Factor 为 1.00 指示的是数据库当前内存,为12288M,其后 Est Physical Reads 对应的值若与仅随其下 SGA Size Factor 为 1.13 的 Est Physical Reads 字段对应的值相差较大(差一个数量级),说明数据库内存不足,增加数据库内存可明显改善数据库性能。

上述结果可看到,Est Physical Reads 相差都不大(未差一个数量级),说明目前数据库内存合适,调整数据库内存对数据库性能改善不明显。数据库内存越大,性能越好,Est Physical Reads 越小, 当 Est Physical Reads 不再变化时,数据库内存值最佳,上述最佳数据库内存为 18432M。

上述数据库内存即使回收至 4608M 对数据库的性能影响也不大,4068M 内存对应的 Est Physical Reads 值为 4,177,726,430 与当前的 3,244,836,062 相差不大。

之前有领导认为下图中的数据库大部分业务已迁移出,只剩下一些查询业务,不听劝,为了回收资源,强行将数据库内存由 90G调整至45G,殊不知大多数占用数据库内存的就是那些查询语句,最终导致系统直接卡死无法刷出页面。

image.png

4.3 查看 io 压力

awr 报告中搜索 Tablespace IO Stats

image.png
查看最后的 Av Buf Wt(ms) 字段,一般不会大于 20。
上述结果在正常内。
若数据库压力正常,该值仍然过大,建议联系相关人员排查存储是否正常。

4.4 查看cpu状态

直接在操作系统层查看,数据库压力正常,cpu仍长期维持在较高使用率,建议及时扩展cpu。