在日常的工作中,如何及时发现数据库潜在的问题是极为重要的。对于数据库性能的诊断可分为三个阶段:
第一阶段:SQL语句级性能优化
第二阶段:session级性能优化,可通过ASH配合分析
第三阶段:DB级性能优化,可通过AWR进行分析。
AWR:AutomaticWorkload Repository 自动工作负载信息库
AWR是数据库实例级的诊断报告,通过对系统整体动态采样收集快照信息,存储在SYSAUX表空间,每小时采样一次(养老金系统在生产上每半个小时采样一次),可以保存7天,MMON进程实施,快照分析后写入DBA_HIST_%开头的数据字典。
ASH:ActiveSession History 活动会话历史记录
ASH是一个会话级别的性能诊断报告,可以提供更细粒度的时间区间,可以精确到分钟,ASH可以提供比AWR更详细的关于历史会话的信息,可以作为AWR的补充。
分析ASH报告、AWR报告的时候,重点关注SQL Statistics 。SQL Statistics中应该关注的是SQL ordered by Gets和SQL ordered by Reads两个指标。大量的Gets(逻辑读)会占用大量的CPU时间。大量的Reads(物理读)会引起IO的瓶颈出现。
1、常见的AWR报告取数SQL:
Awrrpt.sql:获取本实例中的awr报告