Oracle10g ASH使用

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 的值: <enter默认html格式>
输入 begin_time 的值: -30    (查询过去半小时内的session情况)
输入 duration 的值: <enter默认到目前位置>
输入 report_name 的值: <enter默认指定的报告名字>
Report written to ashrpt_1_1112_1047.html
下载ashrpt_1_1112_1047.html文件并查看分析。

--End--

 

转自:http://hi.baidu.com/edeed/blog/item/fe54b91234f7ddc9c3fd7833.html

相关:http://www.eygle.com/archives/2005/03/oracle10gaeasha.html

 

另外知识:用Oracle实现ASH的数据透视图

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值