在oracle 10g中,新增v$session_wait_history视图记录的是数据库的历史状态及session的历史等待信息等数据,也就是活动session的最近十次的等待事件,同期oracle又推出了ASH新特性,活动session历史信息记录active session history ASH。
ASH以v$session为基础,每秒钟采样一次,采样工作由oracle 10g新引入的后台进程mmnl完成,可以查看v$process视图或者通过警告日志来查看具体的mmnl进程信息。
Ash功能默认是开启的,由隐含参数_ash_enable控制
SQL> col ksppinm for a20
SQL> col ksppdesc for a20
SQL> col ksppstvl for a20
SQL> select ksppinm,ksppdesc,ksppstvl from x$ksppi a,x$ksppcv b
2 where a.indx=b.indx and a.ksppinm='_ash_enable';
KSPPINM KSPPDESC KSPPSTVL
-------------------- -------------------- --------------------
_ash_enable To enable or disable TRUE
Active Session samp
ling and flushing
而ash的采样间隔时间由另一个内部隐含参数决定_ash_sampling_interval
SQL> select ksppinm,ksppdesc,ksppstvl from x$ksppi a,x$ksppcv b
2 where a.indx=b.indx and a.ksppinm='_ash_sampling_interval';
KSPPINM KSPPDESC KSPPSTVL
-------------------- -------------------- --------------------
_ash_sampling_interv Time interval betwee 1000
al n two successive Act
ive Session samples
in millisecs
根据oracle性能和功能的特点,ash频繁的采样是否会影响性能,采样对象能肯定会有影响,但是因为oracle采样工具是直接访问的oracle10g内部结构,及其高效的,对于性能的影响也是非常低的。
Ash信息是在内存中滚动的,需要的时候跟回滚段等一样会被覆盖,可以通过v$active_session_history视图来访问ash记录的信息,对于活动的session,每次采样都会在视图中记录一行信息,这部分内存也在sga中分配
SQL> select * from v$sgastat where name like 'ASH%';
POOL NAME BYTES
------------ -------------------------- ----------
shared pool ASH buffers 2097152
生成ash报告可以通过脚本方式或者oem图形界面生成,ash报告包括top等待事件,top sql,top session等内容
脚本方式:执行相应脚本oracle_homerdbmsadminashrpt.sql然后填写相应信息即可在相应目录下生成一个报告信息。
AWR自动负载信息库
内存中记录的ASH信息始终是有限的,为了保存历史数据,这些信息最终需要写入磁盘,这些历史信息的存储,引出了oracle 10g的AWR特性。AWR收集关于该特定数据库的操作统计信息和其他统计信息,oracle以固定时间间隔(默认一个小时)为其所有重要统计信息和负载信息执行快照,并将快照存储在AWR中。这些信息在AWR中默认保留一周然后被清除。
AWR采样工作由后台进程mmon每60分钟执行一次,ASH信息也被包含在AWR负载库中。虽然ASH buffer设计保留1小时信息,但是经常这个内存是不足够的,当ASH buffer满了后,后台进程mmnl将会主动将ash信息写出。由于数据量较大,写出的数据占采样数据的10%,通过direct-path insert完成,减少redo生成,从而减少数据库性能影响。
AWR收集统计信息的特性statistics_level影响,该参数有3个可选值。
BASIC:AWR统计信息收集和所有自我调整特性都被关闭
TYPICAL:数据库收集部分统计信息,这些信息为典型的数据库监控需要,默认设置
ALL:所有可能统计信息被收集
写出的比例受隐含参数控制_ash_disk_filter_ratio,默认是10,写出到AWR负载库的ASH信息记录在AWR的基础表WRH$_ACTIVE_SESSION_HISTORY(这个表是分区表),oracle自动进行清除。AWR记录的信息还包括别的方面统计信息等重要数据,oracle 10g中新增的sysaux表空间存储awr信息。用过statspack也可以收集统计信息,但是无法收集session历史信息。
有了AWR数据仓库后,oracle10g引入了另一个自动数据库诊断监控程序ADDM,ADDM定期检查数据库的状态,根据内建的专家系统,自动确定潜在的数据库性能瓶颈,其执行效率很高,几乎不影响数据库总体性能。
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25362835/viewspace-1057067/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25362835/viewspace-1057067/