ASH入门

ASH介绍:ASH是从10G开始新引入的一种性能监视方法。与AWRADDM一起结合,形成了强大的性能诊断体系。是否启用ASH,可以通过_ASH_ENABLE(FALSE/TRUE,default:TRUE)来进行控制.

 

ASH的定位:AWR提供了整个实例的某个周期的性能数据,比较适合从全局的角度来分析,但是得到的数据不是最及时和最细的。使用SQL TRACE可以对每个SQL语句进行跟踪,产生的信息非常详细,由于太过于详细,又不利于快速的分析性能。当然也可以由用户自行对V$SESSION进行采询采样,如果过于频率,带来的负载比较大。而ASHORACLE自动在代码层面上来执行,带来的影响最少,对CPU的使用不超过2%

 

 

ASH的工作过程:主要由MMNL进程来执行,从V$SESSION视图来对数据进行采样,对STATUS栏位为’ACTIVE’的会话的相关信息进行采样(_ASH_SAMPLE_ALL,表示采样范围,DEFAULTfalse,true表示对每个会话都进行采样).采样的频率为一秒,由参数_ASH_SAMPLING_INTERVAL(default:1000毫秒)来控制。然后刷新到ash buffers当中,可以通过以下查询来看:

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

 

POOL         NAME                            BYTES

------------ -------------------------- ----------

shared pool  ASH buffers                   2097152

 

可以通过_ASH_SIZE参数来决定ASH buffers大小.我们可能通过v$active_session_history视图来对这里的数据进行访问。也可以通过ashdump事件来进行访问,ashdump产生的信息可读性不强.AWR快照发生时或者是ASH BUFFERS达到三份之一满时,数据被刷新到DBA_HIST_ASTIVE_SESSION_HISTORY.

 

 

ASH的使用方法:1,OEM上,性能页中关于ash的;2,$ORACLE_HOME/rdbms/admin/ashrpt.sql;脚本.3,手动查询v$active_session_history.(个人比较喜欢这种方式);4,ASHDUMP产生TRC文件.

 

 

ASH的数据栏位:具体可以参看oracle reference中的栏位,了解相关的栏位的意义.但是总的说来有大概以下几个方面:

1,  会话:sid,serial#,session_type

2,  等待方面,event,p1,p2,p3

3,  应用方面:module,action,program

4,SQL方面:sql_id,sql_opname

 

 

ASH的数据分析:这个可以要根据需要来查询,网络上的脚本非常多。比如我们可以通过以下查询,看出在10分钟内,哪个SQL语句执行的次数最多:

 

select sql_id,count(*),count(*)/sum(count(*)) over ()

from v$active_session_history

where sample_time>sysdate-1/24/60*10

group by sql_id

order by count(*);

 

比如我们在AWR中看到CBC事件,占用比较多的等待时间,接下来我们可以查询ASH

Eventcache buffers chains的语句,然后重点对等待事件长的语句进行分析.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值