Oracle数据库ASH和AWR的简单介绍

数据库 Oracle
Oracle数据库中,ASH保存了系统最新的处于等待的会话记录,可以用来诊断数据库的当前状态;而AWR中的信息最长可能有1小时的延迟,所以其采样信息并不能用于诊断数据库的当前状态,但可以用来作为一段时期内数据库性能调整的参考。

Oracle数据库中,有时我们可能会遇到这样的术语:ASHAWR,那么它们是怎样产生的呢?它们的作用又是什么呢?本文我们就来介绍这一部分内容。

1.10g之前

用户的连接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该连接断开后,其原来的连接信息在v$session和v$session_wait中就会被删除。这是10g之前的状况。

2.v$session_wait_history与ASH

若是一个普通的会话(我是指没有大量地耗费资源),则对于性能调整来说无足轻重。但若该会话在活动时大量占用了资源(比如:CPU,内存,I/O等),该会话信息的丢失,将无法评测当时的系统瓶颈究竟是什么。令DBA高兴的是,Oracle 10g中保留下了v$session_wait中的这些信息。

在Oracle 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给出了一个关系图:

Oracle数据库ASH和AWR的简单介绍

图1 各个视图的层次

其中视图dba_hist_active_sess_history是wrh$_active_session_history和其他几个视图的联合展现,通常通过这个视图进行历史数据的访问。

关于Oracle数据库ASH和AWR方面的知识就介绍到这里了,希望本次的介绍能够对您有所收获。

【编辑推荐】

  1. 关于Oracle数据库闪回个性的详细介绍
  2. Oracle数据库对DDL语句和DML语句的事务管理
  3. Oracle数据库启动参数文件及相关SQL语句简介
  4. Oracle数据库的几种文件及表空间数据块的知识简介
  5. Oracle数据库查询登录用户名所属表空间及其使用情况

 

责任编辑:赵鹏 来源: ChinaUnix博客
相关推荐

2018-05-30 09:23:11

数据库Oracle性能收集

2011-08-11 16:55:34

Oracle数据库AWR

2011-08-11 16:29:49

Oracle数据库AWRASH

2011-08-12 12:59:33

Oracle数据库同义词

2012-06-25 10:40:24

Oracleawr

2018-01-04 10:43:43

OracleMysqlJava

2010-04-15 13:01:25

Oracel数据库

2015-10-28 14:45:35

ORACLE AIO异步IO

2015-10-28 17:39:04

ORACLE AIO异步IO

2009-07-01 11:08:14

JSP DestoryJSP Init数据库链接

2009-11-20 15:03:29

2011-08-05 09:33:56

OracleUser ProcesServer Proc

2010-05-07 17:39:02

Oracle数据库性能

2010-04-02 12:23:30

Oracle数据库

2010-04-23 14:32:01

Oracle数据库

2010-04-20 11:41:55

Oracle数据库

2010-04-23 16:05:50

Oracle数据库

2010-04-07 09:31:02

Oracle数据库

2011-05-17 13:43:23

Oracle数据库

2009-08-24 18:09:13

C#调用Oracle数
点赞
收藏

51CTO技术栈公众号