awr是指“自动工作量资料档案库”,是Oracle数据库用于收集、管理和维护数据库整个运行期间和性能相关统计数据的存储仓库,是Oracle数据库性能调整和优化的基础。awr收集到的数据会被定期保存到磁盘,可以从数据字典查询以及生成性能报告。
本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。
在对Oracle数据库做性能优化和调整的时候,整个数据库在运行期间的现状或者说真实状态只有在被完整记录下来,才是可查,可知,可比较,可推测或者说为未来优化调整提供支撑建议的基础。那在Oracle数据库中这个机制是由AWR来实现的。
AWR是Oracle数据库用于收集,管理和维护数据库整个运行期间和性能相关统计数据的存储仓库,是Oracle数据库性能调整和优化的基础。
1. 什么是AWR
AWR是Automatic Workload Repository的简称,中文叫着自动工作量资料档案库。既然是仓库,又是保存负载数据,所以保存的是数据库性能相关的数据。即特定数据库或者实例在过去运行期间整个性能表现。AWR能实现性能数据的收集,处理,维护,以及给出调整参考等。这些收集到的数据被定期保存到磁盘,可以从数据字典查询以及生成性能报告等。
2. AWR统计信息收集处理的内容
用于确定数据库段的访问和使用的对象统计信息
基于活动时间模型的统计,位于v$sys_time_model和v$sess_time_model视图
系统和会话级别统计信息收集,位于v$sesstat和v$systat视图
基于耗用时间和CPU时间等高负载的sql语句
ASH统计信息,代表了最近的活动会话的历史
3. AWR涉及的2个重要参数
- statistics_level
BASIC:
仅提供最基本的性能数据收集功能,许多性能基线所需的统计数据未被收集。Oracle不建议使用该值。
TYPICAL:
这是默认值。段统计,时间统计,以及所有建议类统计数据被收集。
ALL:
收集所有typical级别数据、操作系统时间统计和行源执行统计信息等。多用于调试模式,生产环境不建议使用。
- timed_statistics
指定时间相关的统计信息是否收集。当statistics_level为TYPICAL 或者ALL时,该值被设置为true,否则,设置为false。建议检查该参数,并设置为true。
4.快照和基线
- 快照
AWR快照就是将收集到的性能数据以一定的频率持久化到磁盘。这个持久化的作用主要是用于后续进行分析或比对,同时这些性能数据也提供给ADDM进行性能诊断并输出诊断结果。即:AWR每小时对v$active_session_history进行采样一次,并将信息保存到磁盘中,并且保留8天(11g缺省值),8天后旧的记录才会被覆盖。这些采样信息被保存在视图wrh$_active_session_history中。而这个采样频率(1小时)和保留时间(8天)可以根据实际情况进行调整。
- 基线
有数据,能比对,才能够真正反映问题的实质。那么在Oracle数据库里边,我们可以将其业务负载高峰期的活动会话历史数据,更确切的说是AWR持久化的数据贴个标签,这个标签就是所谓的基线。因此基线就是某个特定时段业务高峰期数据库整体性能的一个基准报告,一旦当后续数据库出现性能问题或运行不佳的时候,通过使用基线,与性能问题期间的性能统计数据进行比对,得出两者的差异报告,有助于问题的定位与解决。
由于基线依赖于AWR快照,因此,当我们设定基线之后,相应的AWR快照数据被保留。为了避免磁盘空间的占用,我们对于基线也可以设置相应的保留期,一旦保留期限到达,意味着基线失效,以及相应的AWR快照数据也会被自动删除。基于基线保留策略,基线有几种不同的形式,如下:
固定基线(Fixed Baselines)
固定基线也就是选择特定的时间周期(可以按照snap_id或者直接指定时间),为其创建基线,用于后续进行AWR报告比对输出结果。
移动窗口基线(Moving Window Baseline)
Oracle 数据库自动维护系统定义的移动窗口基线。系统定义的移动窗口基线的默认窗口大小为当前的 AWR 保留期,默认为八天。如果计划使用自适应阈值,则可考虑使用更大的移动窗口(如 30 天),以便准确计算阈值。可通过将该移动窗口中的天数更改为等于或小于 AWR 保留期中的天数,来重新调整移动窗口基线的大小。因此,如果要增大移动窗口,首先需要相应增大 AWR 保留期。AWR 保留期和系统定义的移动窗口基线的窗口大小为两个独立的参数。AWR 保留期必须大于或等于系统定义的移动窗口基线的窗口大小。
系统定义的基线为 OEM 性能屏幕提供了默认的基线,以便将其性能与当前数据库性能比较。
注:在 Oracle Database 11g 中,快照数据的默认保留期已从七天更改为八天,以确保捕获整个星期的性能数据。
基线模板(Baseline Templates)
可以使用基线模板为将来的时间段创建基线。有两种类型的基线模板:单一和重复。
可以使用单个基线模板为将来的单个连续时间段创建基线。如果你事先知道你打算在将来捕获的某个时间段,这种方法是有用的。例如,你可能想要捕获AWR数据的系统测试,预计在即将到来的周末。在这种情况下,可以创建一个单独的基线模板以自动捕获测试发生时的时间段。
可以使用重复基线模板创建和删除基于重复时间计划的基线。这是有用的,如果你希望Oracle数据库自动捕获一个连续的时间段为其创建基线。例如,你可能想要捕获AWR数据为一个月每星期一上午。在这种情况下,您可以创建一个重复基线模板,以便在每个星期一的重复日程中自动创建基线,并在指定的到期时间间隔(如1个月)后自动删除旧的基线。
- 自适应阈值(Adaptive Thresholds)
自适应阈值可以帮你以最低的开销监控和检测出性能问题。自适应阈值能够从在移动窗口基线捕获到的度量值里得到的统计信息中,为系统度量自动设置警告和关键报警(warning and critical alert)的阈值。这些统计信息每周会重新生成,并可能由于系统性能随着时间变化改变,而产生新的阈值。
比如,很多数据库白天是一个OLTP系统,而到晚上需要执行一些批量进程(例如生成报表)。每个事务响应时间的性能度量对检测OLTP的性能退化问题在白天可能很有用,但是这个阈值常常对于批量工作来说会太低,而频繁触发报警。自适应阈值能检测到这样的工作量模式,并自动为白天和夜里设置不同的阈值。
自适应阈值的类型有两种:
最大值的百分比:该阈值被计算为在移动窗口基线中观察到的数据的最大值的百分比的倍数。
重要性级别:阈值被设为一个统计学中的百分位来观察基于移动窗口基线数据的阈值以上的值,来体现异常程度。百分位能指定为以下几种:高(0.95),100个中只有5个能超过这个值;非常高(0.99):100个中只有1个能超过这个值;严重的(0.999):1000个钟只有1个能超过这个值;极端的(0.9999):10000个钟只有1个能超过这个值。
当一个系统以高峰期工作量来设计的,并且你希望在当前工作量接近或超过先前的高值时触发报警,最大值百分比阈值将非常有用。例如,每秒产生redo量的度量就是个典型的例子。
重要性级别阈值在以下情况很有用:当系统运行正常时表现得很稳定,但当性能变差时可能会在一个大范围内波动。例如,每个事务的响应时间的度量在一个优化过的OLTP系统上将表现平稳,但当性能问题凸显时,可能会波动很大。采用重要性级别阈值,当环境产生不正常的度量值和系统性能时触发报警。
Author : Leshami
Blog : http://blog.csdn.net/leshami
- 空间消耗(Space Consumption)
以下因素可以被用来判断AWR的空间消耗:
在任一给定时间系统中的活动会话数;
快照时间间隔,时间间隔越小,快照产生越频繁,增加AWR采集的数据的占用空间;
历史数据保留时间
默认情况下,快照每小时捕获一次,并在数据库中保存8天。使用这些默认设置,一个典型的并发量为10个会话数的系统大约需要200-300M的空间来存放AWR数据。但是在降低保留时间的时间,请注意,若AWR中的数据不足,可能会影响一些组件和功能的准确性和精确度:ADDM、SQL Tuning Advisor、Undo Advisor、Segment Advisor。
可能的话,Oracle建议将AWR保留时间设得足够大,至少能捕获一个完整的工作量周期。当你的系统工作量周期为1周,比如工作日是OLTP的工作负荷,而在周末运行批量工作,则默认的8天保留时间不需要去修改。当如果你的系统的高峰期在每个月的月末,那么你可能需要将这个保留时间更改到1个月。
例外情况下,你可以将快照时间间隔改成0来关闭自动收集快照。在这种情况下,工作量和统计数据的自动收集将被停止,且许多Oracle数据库的自动管理功能将不能使用。另外,你不能手动创建快照,因此Oracle强烈建议不要关闭snapshot的自动收集。
5. AWR结构图
推荐教程:《Oracle教程》