bisal的个人空间

厚积薄发

  • 博客访问: 2275908
  • 博文数量: 294
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-26 09:29
个人简介

10g/11g OCP,11g OCM,YEP成员(Oracle Young Expert Program,Oracle用户组年轻专家项目),我不是DBA,但我的爱好是Oracle,微信公众号:bisal的个人杂货铺

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(294)

文章存档

2017年(36)

2016年(44)

2015年(41)

2014年(61)

2013年(112)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题

分类: Oracle

之前的几篇文章:
《一个执行计划异常变更的案例 - 前传》
《一个执行计划异常变更的案例 - 外传之绑定变量窥探》
《一个执行计划异常变更的案例 - 外传之查看绑定变量值的几种方法》
《一个执行计划异常变更的案例 - 外传之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、WRRWRI)和和顾问(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;
这里写图片描述
这里的列TOPNSQL,在《一个执行计划异常变更的案例 - 外传之查看绑定变量值的几种方法》这篇文章中曾介绍过他的含义以及修改方法,可以参考。
7、创建或删除快照:
exec dbms_workload_repository.create_snapshot;
exec dbms_workload_repository.drop_snapshot_range(low_snap_id=>1107, high_snap_id=>1108);
8、查看所有快照:
select snap_id, begin_interval_time, end_interval_time from dba_hist_snapshot order by 1;
9、10g使用名为GATHER_STATS_JOB的调度作业收集AWR统计信息。创建Oracle数据库时,就会自动创建并激活这项作业。查看作业,可参考视图:
select a.job_name, a.enabled, c.window_name, c.repeat_interval
from dba_scheduler_jobs a, dba_scheduler_wingroup_members b, dba_scheduler_windows c
where job_name=’GATHER_STATS_JOB’
and a.schedule_name=b.window_group_name
and b.window_name=c.window_name;
回显:
GATHER_STATS_JOB TRUE WEEKEND_WINDOW freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0
GATHER_STATS_JOB TRUE WEEKNIGHT_WINDOW freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;byminute=0; bysecond=0
表示有两个窗口执行统计信息收集的作业。WEEKEND_WINDOW是每周六00:00执行。WEEKNIGHT_WINDOW是每周一至周五22:00执行。
10g的统计信息自动收集有一些缺陷,例如只有两个维护窗口,调整不灵活,且并没有对这两个维护窗口施加资源限制,可能会影响正常的业务。
10、11g则优化了统计信息的自动收集策略,引入了七个维护窗口,可以看出每个维护窗口会有资源限制,周一至周五是22:00开始,最长执行4小时,周六日是06:00开始,最长执行20小时,
这里写图片描述
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,
这里写图片描述
选择输出文件类型,可以试HTML或文本文件,HTML展示更清晰,而且有超链接可用。


2.若是单实例此处无需选择,若是RAC,则需要选择创建的具体实例(也有针对所有RAC节点的统一AWR报告生成脚本),还需要选择创建的快照日期,默认是当天,

这里写图片描述


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

这里写图片描述


4.选择输出文件名称,默认是awrrpt_实例序号
开始快照ID结束快照ID.html,
这里写图片描述


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

这里写图片描述
此时这份AWR报告就创建在当前目录下。


6.可以使用浏览器打开AWR,

这里写图片描述


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

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


总结:

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

阅读(1306) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册