
[ 三思笔记 ] 学用 ORACLE AWR 和 ASH 特性 http://www.5ienet.com/ Power By 君三思 QQ
群:
7783093 4
一、
一、
一、
一、 ASH
ASH
ASH
ASH 和
和
和
和 AWR
AWR
AWR
AWR 的故事
的故事
的故事
的故事
1.1
1.1
1.1
1.1 关于 ASH
ASH
ASH
ASH
我们都知道,用户在 ORACLE 数据库中执行操作时,必然要创建相应的连接和会话,
其中,所有当前的会话信息都保存在动态性能视图 V$SESSION 中,通过该视图, DBA 可
以查看用户实际执行的操作, 或者当前的等待事件等。 通常这部分信息是调优过程中的关 键
信息,不过,一旦连接断开。会话信息就会被同时从 V$SESSION 及其它相关视图中清除,
也就是说,用户执行完操作走人,而你 (DBA) ,如果不能在当前逮到他,过了这点,就不 知
道它曾经做过什么了。
10g 版本中, ORACLE 又新增加了一个视图 ( 其它是若干,不过咱们还是以 session 为 引
子说 )
:
V$ACTIVE_SESSION_HISTORY , 看名字就知道, 就是活动会话的历史记录,这
下,
即使用户操作完成后, 断开了连接也不怕, 因为其会话的情况已经被记录了下来, 这项特 性
就是 ASH
ASH
ASH
ASH 了,全称与视图名相同,正是: ACTIVE SESSION HISTORY 。
ASH 每秒钟收集一次当前处于非空闲等待事件的、活动状态的、 session 的信息,并保
存在 V$ACTIVE_SESSION_HISTORY 视图中,我们 ( 应该以及必须 ) 知道,动态性能视图其
实上是 ORACLE 自行构造的一堆存在于 SGA 内存区的虚表,就是说, ASH 的数据是保存
在内存里的,实际上, ORACLE 分配给 ASH 的空间并不是无限大 ( 更何况 ORACLE 自身 管
理的内存空间也不是无限大 ) ,查看 ASH 可供使用的内存空间,可以通过如下 SQL :
SQL> select pool, name, bytes/1024/1024 Mb From v$sgastat where name like 'ASH %';
POOL NAME Mb
------------ -------------------------- ---------------
shared pool ASH buffers 15.5
直白的 讲 , V$ACTIVE_SESSION_HISTORY 中能够记录多少 会话 信息, 一方面 取决于
该数据库的 SGA 分配给 ASH buffers 的 大小 ,另一方面取决于数据库的启动和关闭 ( 重启数
据库时将重构 SGA 内存区 ) 。这两方面的因素制约了 V$ACTIVE_SESSION_HISTORY 中 能
够保存的会话信息的能力, 做为 DBA , 我们肯定是希望 ASH 尽可能多的保留关于会话的 信
息, 但目前来看单纯依靠 V$ACTIVE_SESSION_HISTORY 肯定无法实现这点, 那怎么办 呢?
别担心, ORACLE 又提供了 AWR
特性,
ASH 收集到的会话信息, 是做为 AWR 中快照信 息
的一部分,被保存到了硬盘上。
1.2
1.2
1.2
1.2 关于 AWR
AWR
AWR
AWR
AWR 是 Oracle 10g 版本
推出的新特性,
全称叫 Automatic Workload Repository- 自动负 载
信息库。 谈到这一特性呢,不得不先提 Statspack , Statspack 称的上是 ORACLE 世界里的 老
人了, 不过毕竟年岁大了, 腿脚虽然还算灵便,但效率不那么高了,用时髦话讲就是不能 适
应时代发展步伐, 不能紧跟时代潮流, 不能保持做为一名优秀党员的先进性, 始终坚持带 三
个表的为 DBA 服务。 但是, 说到底 Statspack 还是为了党国事业奋斗了一辈子,在党内还 是
评论