如何比较AWR基线与当前指标_识别性能下降趋势与系统退化

张开发
2026/4/15 19:26:59 15 分钟阅读

分享文章

如何比较AWR基线与当前指标_识别性能下降趋势与系统退化
直接对比AWR报告而不验证基线真实性是常见错误基线是带语义的性能锚点需查DBA_HIST_BASELINE确认类型生成对比报告时须显式指定baseline_name避免误用普通快照。怎么看基线和当前AWR报告的差异直接对比两个awr报告不看基线定义就下结论是90%人踩的第一个坑。oracle里“基线”不是快照集合而是带语义的性能锚点——它告诉awr“这组快照代表‘健康态’后续所有对比都以它为尺子”。所以第一步永远不是打开报告而是确认你用的真是基线而不是随手选的两段普通时间。DBA_HIST_BASELINE 里查 baseline_name 和 baseline_typeSTATIC 或 MOVING_WINDOW别只信名字里带“baseline”的用 ?/rdbms/admin/awrddrpt 生成对比报告时必须显式指定 baseline_name不能只输起止快照ID——否则它默认比的是普通快照根本没走基线逻辑基线窗口太窄比如只包1个快照或跨了维护窗口如统计信息收集、备份任务会导致基线本身失真比出来全是假阳性。DB Time 和 AAS 这两个数怎么读才不误导DB Time 高 ≠ 系统慢AAS 高 ≠ 一定出问题。它们只是负载密度指标必须结合时间粒度和业务上下文看。比如某天 AAS8看着高但如果那是促销峰值且持续仅15分钟就合理而如果连续4小时 AAS2.5 却伴随大量超时那才是退化信号。AAS DB Time / Elapsed Time分母是真实流逝时间不是数据库运行时间——所以对比时务必确保两个时间段的 Elapsed Time 接近比如都取1小时否则数值不可比查历史趋势别只看单点值用官方SQL跑7天滚动 DB Time里面 per_sec 字段才是单位时间压力比绝对值更有意义如果基线期 AAS1.2当前期 AAS1.8但 DB Time 增幅只有15%说明负载变重但效率没崩——可能只是并发用户多了未必是SQL或IO问题。等待事件对比时盯死“归一化后的时间占比”直接比“log file sync 等待次数”从1000涨到5000没意义。要看它占总等待时间的比例是否异常跃升。因为总等待时间本身可能因负载变化而浮动只看次数会把正常增长误判成故障。在AWR报告的 Wait Events 表格里重点看 % DB Time 列不是 Total Waits基线期 buffer busy waits 占比0.3%当前期跳到4.2%且集中在某个表空间——立刻查该表空间对应的数据文件I/O延迟iostat -x 1 或 V$FILESTAT如果多个等待事件占比同步上升比如 latch: cache buffers chains 和 read by other session 都翻倍大概率是热块争用不是IO瓶颈别急着加磁盘。SQL执行计划变更怎么快速定位AWR里SQL统计只告诉你“这SQL变慢了”但不会说“为什么变慢”。真正要抓退化根因得把基线期和当前期的 SQL_ID 对应的执行计划拉出来人工比对——尤其关注访问路径、连接方式、预估行数这三处。 Zeemo AI 一款专业的视频字幕制作和视频处理工具

更多文章