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能否快速发现和解决数据库问题的关键。