您的位置:首页 > 数据库 > Oracle

Oracle10g的ASH及历史信息记录

2011-12-08 13:59 162 查看
性能调整和问题诊断是任何数据库管理人员必须面临的最大挑战和必须完成的重要管理任务。基于管理上的简化和易用性的努力,Oracle推出了Autometic Database Diagnostic Monitor (ADDM) ,通过ADDM,Oracle试图使数据库的维护工作变得更简单更容易。

AWR是新的管理体系结构的中心元素,它为了发现问题和自我调整,为oracle内部服务组件提供了采集,处理,维护和访问性能统计数据.

AWR每60分钟就进行一次快照,所以最近的一次快照可能在一小时之前,这样AWR就没有足够的信息来进行当前的分析.典型的情况下,当前的分析需要最近的五到十分钟的详细信息.ASH(Active Session History)因此被引入用以保留最近的会话活动的历史信息.

因为记录会话的活动是非常昂贵的,ASH每秒采样V$session,记录会话等待的事件.不活动的会话不会被采样.这个采样工具是非常有效的,因为它直接访问oracle10g内部结构.

ASH设计为在内存中的滚动的,在需要的时候早期的信息是会被覆盖的.ASH可以通过v$active_session_history视图来访问.这个实例每个样本的每个活动会话有一行.

由于数据量巨大,把所有的ASH数据写到磁盘上是不可接受的。一般是在写到磁盘的时候过滤这个数据。这是通过MMON和MMNL自动完成的。

SQL> select * from v$sgastat where name like '%ASH%';

POOL         NAME                            BYTES
------------ -------------------------- ----------
shared pool  ASH buffers                   6291456

注意,ASH buffers的大小按照以下算法分配:

Min(shared_pool_size*5%,2M*cpu_count)

SQL> select name,value,display_value from v$parameter
2  where name in ('shared_pool_size','cpu_count');

NAME                           VALUE                DISPLAY_VALUE
------------------------------ -------------------- --------------------
cpu_count                      4                    4
shared_pool_size               125829120            120M

根据这个算法,系统分配的ASH Buffers为6M.

这些历史信息记录在数据库中,可以通过v$session_wait_history进行查询:

SQL> desc v$session_wait_history
Name       Type         Nullable Default Comments
---------- ------------ -------- ------- --------
SID        NUMBER       Y
SEQ#       NUMBER       Y
EVENT#     NUMBER       Y
EVENT      VARCHAR2(64) Y
P1TEXT     VARCHAR2(64) Y
P1         NUMBER       Y
P2TEXT     VARCHAR2(64) Y
P2         NUMBER       Y
P3TEXT     VARCHAR2(64) Y
P3         NUMBER       Y
WAIT_TIME  NUMBER       Y
WAIT_COUNT NUMBER       Y

显然ASH/ADDM是Oracle在管理上的又一巨大提高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: