Oracle AWR报告深入解读(oracle awr解读)

Oracle AWR报告深入解读

Oracle AWR(Automatic Workload Repository)报告是Oracle数据库中重要的性能分析工具,可以帮助我们了解数据库的运行情况和性能瓶颈,以便更好地进行优化和调整。本文将从AWR报告的生成过程、常用指标、分析方法等方面进行深入解读,希望对读者更好地理解AWR报告提供帮助。

1. AWR报告生成过程

在Oracle数据库中,AWR报告是由定期收集的性能数据生成,一般来说,运维人员可以手动执行收集操作,也可以依据计划任务或数据库配置周期自动收集,其中包括:

– 获取当前的数据库快照信息,如系统事件、性能指标、操作系统状态、内存使用等;

– 对比前后两个时间点的快照信息,计算性能指标差异值;

– 将差异值存储到数据库中,生成AWR报告。

从数据库和平台角度来看,最重要的就是查看Oracle中生成的AWR报告。实际上,我们可以通过SQL语句来查询AWR报告,获得更多的细节信息。

SELECT *

FROM dba_hist_snapshot

WHERE begin_interval_time BETWEEN TO_DATE(‘{begin_time}’, ‘yyyy-mm-dd hh24:mi’)

AND TO_DATE(‘{end_time}’, ‘yyyy-mm-dd hh24:mi’);

该SQL语句可以查询在指定时间范围内的AWR快照信息,例如,我们可以查询一天中每个小时的AWR快照信息:

SELECT TO_CHAR(begin_interval_time, ‘yyyy-mm-dd hh24’) AS hour,

avg(db_block_changes) db_block_changes,

avg(db_block_gets) db_block_gets,

avg(executions_per_sec) executions_per_sec

FROM dba_hist_snapshot

WHERE begin_interval_time BETWEEN TO_DATE(‘2022-05-12 00’, ‘yyyy-mm-dd hh24’)

AND TO_DATE(‘2022-05-13 00’, ‘yyyy-mm-dd hh24’)

GROUP BY TO_CHAR(begin_interval_time, ‘yyyy-mm-dd hh24’)

ORDER BY 1;

2. AWR报告关键指标

在AWR报告中,有些性能指标对于数据库性能的分析至关重要,可以帮助我们深入了解数据库运行情况和性能瓶颈,例如:

– 负载指标:DB Time、CPU Time、User I/O Time等可以帮助我们确定数据库的总体性能,以及用户请求和事务所占的比例。

– 磁盘指标:DB block gets、DB Block Changes等可以帮助我们了解磁盘I/O的情况,以及数据库物理读写延迟。

– SQL指标:SQL执行的平均响应时间、平均CPU使用率、平均IO等可以帮助我们了解具体的SQL性能和瓶颈,以便优化和调整。

以下是一些常用的SQL语句,可以查询不同场景下的AWR报告指标:

— 查询一段时间内的总体负载

SELECT snap_id,

end_interval_time – begin_interval_time duration,

sum(value) / 1000000 AS “DB Time (s)”

FROM dba_hist_sysmetric_summary

WHERE metric_name = ‘Database Time’

AND begin_interval_time BETWEEN TO_DATE(’18-May-22 00:00:00′, ‘DD-Mon-YY HH24:MI:SS’)

AND TO_DATE(’20-May-22 23:59:59′, ‘DD-Mon-YY HH24:MI:SS’)

GROUP BY snap_id, end_interval_time – begin_interval_time

ORDER BY 1 ASC;

— 查询Top 10 SQL的执行时间

SELECT * FROM (

SELECT sql_id,

TO_CHAR(begin_interval_time, ‘YYYY-MM-DD HH24:MI:SS’) begin_time,

TO_CHAR(end_interval_time, ‘YYYY-MM-DD HH24:MI:SS’) end_time,

round(elapsed_time_delta/1000000,2) elapsed_time,

executions_delta,

round((elapsed_time_delta/executions_delta)/1000, 2) average_time,

sql_text

FROM dba_hist_sqlstat a,

dba_hist_snapshot b,

v$sql c

WHERE a.snap_id = b.snap_id

AND a.sql_id = c.sql_id

AND b.begin_interval_time BETWEEN TO_DATE(‘2022-05-19 00’, ‘yyyy-mm-dd hh24’)

AND TO_DATE(‘2022-05-20 00’, ‘yyyy-mm-dd hh24’)

ORDER BY elapsed_time_delta DESC

) WHERE ROWNUM

3. AWR报告分析方法

在AWR报告的分析过程中,我们需要根据环境和场景进行不同的指标分析和解释,以便从中发掘问题所在。例如:

– 对磁盘I/O问题,我们可以关注磁盘读写的性能指标,以及磁盘I/O等待问题的出现率。

– 对CPU问题,我们可以关注各种CPU指标分布情况和变化趋势,尤其是高CPU和系统CPU等待的情况。

– 对SQL问题,我们可以关注SQL响应时间、执行计划、CPU使用率等指标,以便找到消耗资源的SQL语句。

根据具体的业务场景和环境,我们可以制定不同的AWR报告评估标准和优化建议,例如:

– 对于交易频繁的OLTP系统,我们应该尽可能减少I/O次数,提高查询效率,提高缓存命中率,以达到快速响应的效果。

– 对于批量处理常见的OLAP系统,我们则需要考虑更大的内存、更快的CPU、更快速的磁盘I/O,并利用并行处理和优化SQL语句来提高系统性能。

由此可见,AWR报告是DBA进行性能优化和调整的有力工具,而对其熟练掌握和使用,则是DBA能否快速发现和解决数据库问题的关键。


数据运维技术 » Oracle AWR报告深入解读(oracle awr解读)