AWR报告的详细操做及说明:WHY—为何会出现ASH和AWR?

1. 10g以前
用户的链接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该链接断开后,其原来的链接信息在v$session和v$session_wait中就会被删除。这是10g以前的情况。
2. v$session_wait_history与ASH
如果一个普通的会话(我是指没有大量地耗费资源),则对于性能调整来讲无足轻重。但若该会话在活动时大量占用了资源(好比:CPU,内存,I/O等),该会话信息的丢失,将没法评测当时的系统瓶颈到底是什么。令DBA高兴的是,oracle10g中保留下了v$session_wait中的这些信息。
在10g中新出现了一个视图:v$session_wait_history。这个视图保存了每一个活动session在v$session_wait中最近10次的等待事件。但这对于一段时期内的数据库性能情况的监测是远远不够的,为了解决这个问题,在10g中还新添加了一个视图:v$active_session_history。这就是ASH(active session history)。
典型的状况下,为了诊断当前数据库的状态,须要最近的五到十分钟的详细信息。然而,因为记录session的活动信息是很费时间和空间的,ASH采用的策略是:保存处于等待状态的活动session的信息,每秒从v$session_wait中采样一次,并将采样信息保存在内存中。
3. AWR
注意,ASH的采样数据是保存在内存中。而分配给ASH的内存空间是有限的,当所分配空间占满后,旧的记录就会被覆盖掉;并且数据库重启后,全部的这些ASH信息都会消失。这样,对于长期检测oracle的性能是不可能的。在Oracle10g中,提供了永久保留ASH信息的方法,这就是AWR(auto workload repository)。
因为所有保存ASH中的信息是很是耗费时间和空间的,AWR采用的策略是:每小时对v$active_session_history进行采样一次,并将信息保存到磁盘中,而且保留7天,7天后旧的记录才会被覆盖。这些采样信息被保存在视图wrh$_active_session_history中。而这个采样频率(1小时)和保留时间(7天)是能够根据实际状况进行调整的,这就给DBA们提供了更加有效的系统监测工具。
AWR永久地保存系统的性能诊断信息,由SYS用户拥有。一段时间后,你可能想清除掉这些信息;有时候为了性能诊断,你可能须要本身定义采样频率来获取系统快照信息。Oracle 10g在包dbms_workload_repository中提供了不少过程,经过这些过程,你能够管理快照并设定基线(baselines)。
4. 小结
这样,咱们就知道了ASH和AWR产生的缘由和功能。ASH保存了系统最新的处于等待的会话记录,能够用来诊断数据库的当前状态;而AWR中的信息最长可能有1小时的延迟,因此其采样信息并不能用于诊断数据库的当前状态,但能够用来做为一段时期内数据库性能调整的参考。
对于这些视图间的继承关系,eygle给出了一个关系图:
图1 各个视图的层次
其中视图dba_hist_active_sess_history是wrh$_active_session_history和其余几个视图的联合展示,一般经过这个视图进行历史数据的访问。
分享:
 

0数据库

喜欢session

相关文章
相关标签/搜索