ITPub博客

首页 > 应用开发 > IT综合 > ash的一点总结

ash的一点总结

原创 IT综合 作者:warehouse 时间:2009-10-31 09:02:17 0 删除 编辑
10g 引入ash(active session history)真是个不错的东西[@more@]

ash的一点总结
10g 引入ash(active session history)真是个不错的东西
10g引入v$active_session_history视图用来定期取样v$session中的active session的数据数据,这里的active可以这样理解,根据oracle的doc描述,只要session处于等待或者持有cpu就算活动的,对应的含义是:WAITING或者ON CPU;

取样的间隔受到隐含参数_ash_sampling_interval的限制,default是1000,单位ms(毫秒),不过尝试修改为3000,貌似没有起作用,这个大家也可以自己测试;v$active_session_history的内容其实是来自内存结构,oracle直接读取share pool中的一部分区域,这部分区域称为:ASH buffers,当前大小可以这样查看:

SQL> select * from v$sgastat where name='ASH buffers';

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

SQL>

目前是2m,ASH buffers的取值大小为:Min(shared_pool_size*5%,2M*cpu_count)

v$active_session_history中的数据正常由mmon后台进程default每隔1小时写入磁盘,但是当数据达到ASH buffers的2/3满时,由mmnl后台进程写入磁盘,最终被保留到awr对应的基表中,基表对应的视图是dba_hist_active_sess_history,我们可以浏览该视图查看session的历史数据,dba_hist_active_sess_history保留的时间和awr保留snapshot保留的时间是一样的,default 7天,我们也可以修改。

v$active_session_history中的有用字段绝大多数和v$session相同,其实v$active_session_history就是对v$session的延续,由于当session结束时v$session中就没有了该session的信息,因此想了解一个session过去的信息在10g之前是不可能的,10g引入的v$active_session_history解决了这一问题,由于v$active_session_history中数据的采样粒度较小,这样我们就根据v$active_session_history的数据进行不同粒度的汇总,从而分析不同时期系统的性能;v$active_session_history中提供的信息比较丰富:汇总之后有top (user,backgound)event,top session ,top command type,top services,top client,top blocking session,top session running PQs,top object/file/latch等,我们客户根据ash report从不用角度分析系统的性能

最后简单介绍一下ash report的产生,可以使用em来产生,
也可以在sqlplus中运行脚本:$ORACLE_HOME/ashrpt.sql来产生report,report有2种格式,default html,产生报告时需要输入begin time,
这个既可以输入相对时间也可以输入绝对时间,
运行时看提示的例子就可以了,这里的时间格式和nls环境变量没有任何关系,之后输入duration,duration只能是一个绝对的时间,default是sysdate,最后输入报表的路径和名字就可以了。

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

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

注册时间:2007-12-07

  • 博文量
    717
  • 访问量
    5098436