AWR基础知识及基本操作

1.1 Oracle ASH/AWR

1.1.1        ASH

用户在ORACLE数据库中执行操作时,所有当前的会话信息都保存在动态性能视图V$SESSION中,通过该视图,DBA可以查看用户实际执行的操作,或者当前的等待事件等。不过,一旦连接断开。会话信息就会被同时从V$SESSION及其它相关视图中清除.10g 版本中,ORACLE又新增加了一个视图:V$ACTIVE_SESSION_HISTORY使用因为其会话的情况已经被记录了下来,这项特性就是ASH了,全称与视图名相同,正是:ACTIVE SESSION HISTORY

ASH 每秒钟收集一次当前处于非空闲等待事件的、活动状态的、session的信息,并保存在V$ACTIVE_SESSION_HISTORY视图中,我们 (应该以及必须)知道,动态性能视图其实上是存在于SGA内存区的虚表,就是说,ASH的数据是保存在内存里的。V$ACTIVE_SESSION_HISTORY中能够记录多少会话信息, 一方面取决于该数据库的SGA 分配给ASH buffers的大小 ,另一方面取决于数据库的启动和关闭(重启数据库时将重构SGA内存区)。我们肯定是希望ASH尽可能多的保留关于会话的信息,但目前来看单纯依靠 V$ACTIVE_SESSION_HISTORY肯定无法实现这点,于是,ORACLE又提供了AWR特性,ASH收集到的会话信息,是做为AWR中快照信息的一部分,被保存到了硬盘上

1.1.2        为什么会出现ASHAWR

用户的连接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该连接断开后,其原来的连接信息在v$sessionv$session_wait中就会被删除。10g中新出现了一个视图:v$session_wait_history。这个视图保存了每个活动sessionv$session_wait中最近10次的等待事件。但这对于一段时期内的数据库性能状况的监测是远远不够的,为了解决这个问题,在10g中还新添加了一个视图:v$active_session_history。这就是ASHactive session history)。

典型的情况下,为了诊断当前数据库的状态,需要最近的五到十分钟的详细信息。然而,由于记录session的活动信息是很费时间和空间的,ASH采用的策略是:每秒从v$session_wait中采样一次,并将采样信息保存在内存中

1.1.3        AWR

ASH的采样数据是保存在内存中,当所分配空间占满后,旧的记录就会被覆盖掉;而且数据库重启后,所有的这些ASH信息都会消失。在Oracle10g中,提供了永久保留ASH信息的方法,这就是AWRauto workload repository)。

由于全部保存ASH中的信息是非常耗费时间和空间的,AWR采用的策略是:每小时对v$active_session_history进行采样一次,并将信息保存到磁盘中,并且保留7天,7天后旧的记录才会被覆盖。这些采样信息被保存在视图wrh$_active_session_history中。

1.               设置基线

基线(baseline)是一种机制,这样你可以在重要时间的快照信息集做标记。一个基线定义在一对快照之间,快照通过他们的快照序列号识别.每个基线有且只有一对快照。一次典型的性能调整实践从采集量度的基准线集合、作出改动、然后采集另一个基准线集合开始。可以比较这两个集合来检查所作的改动的效果。

2.               ash占用的内存大小

ASH的采集信息保存在内存中,在旧的信息被采样到AWR中后,可被新采集的信息覆盖,重启oracle后该信息被清除。分配给ASH的内存大小可以查询到:

SQL> select pool, name, bytes/1024/1024 From v$sgastat where name like '%ASH %';
POOL          NAME          BYTES/1024/1024
------------- ------------- ---------------
shared pool   ASH buffers                 2

3.               mmon进程与mmnl进程

快照由一个称为 MMON 的新的后台进程(及其从进程)以及MMNL后台进程自动地每隔固定时间采样一次。AWR的采样工作由MMON进程每个1小时执行一次,ASH信息同样会被采样写出到AWR负载库中。虽然ASH buffer被设计为保留1小时的信息,但很多时候这个内存是不够的,当ASH buffer写满后,另外一个后台进程MMNL将会主动将ASH信息写出。

4.               SYSAUX表空间

这些采样数据都存储在SYSAUX表空间中,并且以WRM$_* WRH$_*的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照),后一种类型保存实际采集的统计数据。

SQL> select table_name from dba_tables where table_name like 'WRM$%';

TABLE_NAME

-----------------------

WRM$_WR_CONTROL

WRM$_SNAP_ERROR

WRM$_SNAPSHOT

WRM$_DATABASE_INSTANCE

WRM$_BASELINE

SYSAUX表空间满后,AWR将自动覆盖掉旧的信息,并在警告日志中记录一条相关信息:

ORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_3533490838_1522 by 128 in                 tablespace SYSAUX 

5.               采样数据量

写出的数据占采样数据的10%,写出时通过direct-path insert完成,尽量减少日志生成,从而最小化数据库性能的影响。

6.               初始化参数statistics_level

AWR的行为受到参数STATISTICS_LEVEL的影响。这个参数有三个值:BASICawr统计的计算和衍生值关闭.只收集少量的数据库统计信息.TYPICAL:默认值.只有部分的统计收集.他们代表需要的典型监控oracle数据库的行为.ALL : 所有可能的统计都被捕捉. 并且有操作系统的一些信息.这个级别的捕捉应该在很少的情况下,比如你要更多的sql诊断信息的时候才使用.

7.               AWR的报告类型

/rdbms/admin/awrrpr相当于以前的statspack,查看长期的数据库情况,相对ash而言。

/rdbms/admin/ashrpt查看当前的数据库情况,因为ash是每秒从v$session进行进行取样,awr收集的数据要比ash多得多。

/rdbms/admin/addmrpt 相当于是驻留在oracle里的一位专家,是一个自我诊断引擎。产生symptomprobleminfomation,提供解决问题的建议,并自动修复一些具体的故障。

/rdbms/admin/awrinfo显示的都是awr的相关信息,包括快照信息、sysaux空间使用、awr组件、ash等信息

1.1.4 小结

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

1 各个视图的层次

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26276376/viewspace-749096/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26276376/viewspace-749096/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值