ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【转】Oracle10g ASH使用

【转】Oracle10g ASH使用

原创 Linux操作系统 作者:stone0619 时间:2009-05-05 14:02:30 0 删除 编辑
Oracle10g ASH使用
2008-11-12 11:48
ASH(Active Session History)

从Oracle10g开始引入了V$ACTIVE_SESSION_HISTORY视图,用于查询用户活动会话的历史信息。

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

ASH缺省每一秒收集一下活动会话的情况,间隔时间由 _ash_sampling_interval 参数确定。

由于数据量巨大,把所有的ASH数据写到磁盘上是不可接受的。通常每60分钟MMON进程会写这些信息,当ASH BUFFER满的话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)

V$ACTIVE_SESSION_HISTORY中的数据在被新数据周期性地覆盖前保留30 分钟,当数据从这个动态性能视图中清除时,这些数据被送到活动工作负载信息库(Active Workload Repository,AWR)中,它是一个基于磁盘的信息库。被清除的ASH(活动会话历史)数据可以在 DBA_HIST_ACTIVE_SESSION_HIST 视图中看到,能够看到过去的会话的等待事件,在默认状态下,AWR中的数据7天后即被清除。

V$ACTIVE_SESSION_HISTORY包含top wait events, top SQL, top SQL command types,top sessions等等对于诊断故障非常有用的信息。

V$ACTIVE_SESSION_HISTORY是生成ASH报表的来源,可以通过OEM来生成report,也可以通过Oracle新提供的一个脚本来完成这个工作,执行脚本:
SQL> @?/rdbms/admin/ashrpt.sql
输入 report_type 的值:
输入 begin_time 的值: -30    (查询过去半小时内的session情况)
输入 duration 的值:
输入 report_name 的值:
Report written to ashrpt_1_1112_1047.html
下载ashrpt_1_1112_1047.html文件并查看分析。

--End--

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

请登录后发表评论 登录
全部评论

注册时间:2009-05-04

  • 博文量
    29
  • 访问量
    42075