一个执行计划异常变更的案例 – 外传之AWR

之前的几篇文章:
《一个执行计划异常变更的案例 – 前传》
《一个执行计划异常变更的案例 – 外传之绑定变量窥探》
《一个执行计划异常变更的案例 – 外传之查看绑定变量值的几种方法》
《一个执行计划异常变更的案例 – 外传之rolling invalidation》
《一个执行计划异常变更的案例 – 外传之聚簇因子(Clustering Factor)》
《一个执行计划异常变更的案例 – 外传之查询执行计划的几种方法》

作为一款成熟的商业软件,Oracle提供了非常丰富的问题诊断方法和工具,AWR就是其中之一。

AWR(Automatic Workload Repository),从Oracle 10g开始引入,之前同质的工具叫Statspack(Oracle 8.1.6引入),两个报告都可以提供一段时间内数据库系统负载、Top等待事件、Top SQL等相关统计信息,辅助故障的排查和处理,AWR会比Statspack提供的信息更加丰富,因此会更加常用一些。

eygle曾经有一篇系列文章介绍了Statspack:
《Statspack专题》(http://www.eygle.com/archives/2004/11/statspack_list.html)
还有一些大师对如何分析AWR报告有比较详细的讲解,例如,
韩锋老师的《循序渐进解读Oracle AWR性能分析报告》(http://dbaplus.cn/news-10-734-1.html)
Maclean Liu的《Oracle调优鹰眼,深入理解AWR性能报告》(http://www.askmaclean.com/archives/awr-hawk-eyes-training.html)
都是不错的学习教材。

下面摘录一些当时看尼大师(尼米克)著作AWR这一章节做的笔记,精辟地说明了AWR涉及的一些知识,虽然针对的是10g,但大部分内容11g还是适用。
1、AWR全称是Automatic Workload Repository,内容基于AWR资料库中存储的数据,前提是已经购买了相应许可。
2、AWR默认60分钟采集一次统计数据,保存一周,然后删除。统计数据保存在数据库中。
3、为了正确收集统计数据,STATISTICS_LEVEL设置为TYPICAL(默认)或ALL。
4、AWR由许多表组成,这些表属于SYS模式,通常保存在SYSAUX表空间。所有AWR表名都以标识符“WR”开始:元数据(WRM)/(WRH)/(WRH、WRRWRIWRI)和和顾问(advisor)功能相关的AWR表(WRI$)。可以对AWR仓库进行查询的DBA视图,以DBA_HIST开头。
5、可以使用DBMS_WORKLOAD_REPOSITORY程序包修改快照收集间隔时间。
exec dbms_workload_repository.modify_snapshot_settings –
(retention=>20160, interval=>15);
使用dbms_workload_repository包的modify_snapshot_settings过程修改快照收集参数,即修改15分钟收集一次,保留时间20160分钟(14天)。
将间隔时间设置为0,则表示停止所有AWR统计数据的收集。
6、查看AWR当前保留时间和时间间隔设置:
select * from dba_hist_wr_control;

这里写图片描述
11、禁用和启动作业的方法:
exec dbms_scheduler.disable(‘GATHER_STATS_JOB’);
exec dbms_scheduler.enable(‘GATHER_STATS_JOB’);
12、可以使用如下脚本运行AWR快照:
$ORACLE_HOME/rdbms/admin/awrrpt.sql或awrrpti.sql。
13、AWR内创建基线,定义为某个范围内的快照,可以用来与其它快照进行比较。
创建基线:
exec dbms_workload_repository.create_baseline (start_snap_id=>1109, end_snap_id=>1111, baseline_name=>’EOM Baseline’);
查看基线:
select baseline_id, baseline_name, start_snap_id, end_snap_id from dba_hist_baseline;
删除基线:
exec dbms_workload_repository.drop_baseline(baseline_name=>’EOM Baseline’, Cascade=>FALSE);
参数Cascade如果设置为true,就会删除所有相关的快照,此处会删除1109和1111这两个相关的快照。否则AWR自动进程会自动清除这些快照。

实验:
1.执行$ORACLE_HOME/rdbms/admin/awrrpt.sql,

这里写图片描述

3.针对(2)日期的所有快照列表,需要选择开始和结束的快照ID,

这里写图片描述

5.输出生成的html文件源码,

这里写图片描述

7.接下来就可以查看AWR报告内容了,

这里写图片描述
AWR报告中会介绍操作系统的配置信息、系统负载情况、TOP等待事件、CPU/IO/MEMORY的分析数据、TOP SQL(按照执行事件、CPU消耗时间、逻辑读、物理读、执行次数等)、参数设置建议等。

总结:
AWR报告的创建其实很简单,只要找出需要分析的时间段,且在快照保存的周期之内,就可以采集出指定时间段的系统负载、TOP等待事件、TOP SQL等指标。难点在于对AWR报告的分析,而且需要综合分析各种指标,才能得到一个问题的真正原因,只是片面地看一个指标,很可能会被假象迷惑,我现在仍在学习的路上,欢迎大家有问题一起探讨。

来源:bisal(Chen Liu)

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年1月6日
下一篇 2017年1月7日

相关推荐