AWR报告参数DB TIME和DB CPU分析

发布时间 2023-05-31 15:10:13作者: Allen158

什么是AWR?

ASH(Active Session History,活动会话历史信息)、AWR(Automatic Workload Repository,自动负载信息库)、ADDM(Automatic Database Diagnostic Monitor,数据库自动诊断监视工具)是Oracle性能调整的三把利剑,需要深入地了解,但是面试一般都问得比较简单,主要问到的是AWR。

Oracle性能调整最重要的就是对最影响性能的SQL的调整。在一个应用中,能够影响到数据库的只有SQL,也只能是SQL。系统不能一味地依靠增强硬件、修改系统、数据库参数来提高数据库的性能,更多的应该关注那些最影响性能的SQL语句。ASH报告、AWR报告和ADDM报告都是能够找出影响性能SQL的工具。在分析ASH报告、AWR报告和ADDM报告的时候,最重要的工作就是找出对性能影响最大的SQL语句,并对其进行优化。

AWR(Automatic Workload Repository,自动负载信息库)是Oracle 10g引入的一个重要组件。在AWR里面存储着近一段时间内(Oracle 10g默认是7天,Oracle 11g及其之后的版本默认是8天)数据库活动状态的详细信息。

AWR报告是对AWR视图进行查询而得到的一份自动生成的报告,它用于显示两个快照或者两个时间点之间捕捉到的数据。AWR报告其实就是一张数据库健康体检表,它显示了数据库健康的各项指标。通过AWR报告,DBA可以容易地获知数据库最近的活动状态,数据库的各种性能指标的变化趋势曲线,数据库最近可能存在的异常,分析数据库可能存在的性能瓶颈,从而对数据库进行优化。AWR使用几个表来存储采集的统计数据,所有的表都存储在新的名称为SYSAUX的特定表空间中的SYS模式下,并且以WRM$*和WRH$的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。H代表“历史数据(Historical)”,M代表“元数据(Metadata)”。在这些表上构建了几种带前缀DBA_HIST_的视图,这些视图可以用来编写自己的性能诊断工具。视图的名称直接与表相关;例如,视图DBA_HIST_SYSMETRIC_SUMMARY是在WRH$_SYSMETRIC_SUMMARY表上构建的。AWR报告所有的数据来源于AWR视图,即以DBA_HIST_开头的所有系统表。

输出AWR报告

sys登录状态下,使用如下脚本进行

1.当前连接实例的AWR报告提取:@?/rdbms/admin/awrrpt.sql
2.RAC的其他实例AWR报告提取:@?/rdbms/admin/awrrpti.sql

AWR的重要参数

DB TIME 和 DB CPU

DB Time:Amount of elapsed time (in microseconds) spent performing Database user-level calls. This does not include the elapsed time spent on instance background processes such as PMON.

说明:DB TIME= 所有前台session花费在database调用上的总和时间

注意是前台进程foreground sessions

包括CPU时间、IO Time、和其他一系列非空闲等待时间,别忘了cpu on queue time

公式:DB TIME= DB CPU + Non-Idle Wait + Wait on CPU queue

(思考DB TIME的定义定的是前台session)

DB CPU:Amount of CPU time (in microseconds) spent on database user-level calls. This does not include the CPU time spent on instance background processes such as PMON.

说明:简单的理解为数据库在运行时消耗的CPU的情况;
db cpu,只包含了用户进程消耗的cpu time,不包含后台进程消耗的cpu time。我们一般关心的是cpu time,并不关心db cpu

使用DB TIME 和 DB CPU进行负载检查

例一:
数据库运行了60分钟,操作系统有16个CPU,总共的DB TIME:60×16=960分钟;

CPU花费了233.57分钟在处理Oralce非空闲等待和运算上,也就是说CPU有 233.57/960*100% =24.3%

例二:

DB CPU(S)表明:数据库每次运行时在DB CPU上面的消耗情况,上面DB CPU/DB Time=97.5%(因为小数点的关系,该值会有误差)

详细的CPU的繁忙程度需要查看Instance CPU的%Busy CPU,当前为99.2%;

转自https://m.yisu.com/zixun/260096.html