暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle中,什么是ASH?

DB宝 2021-03-23
3768


题目部分

【DB笔试面试817】在Oracle中,什么是ASH?


     





答案部分


ASHActive Session History,活动会话历史信息)、AWRAutomatic Workload Repository自动负载信息库ADDMAutomatic Database Diagnostic Monitor,数据库自动诊断监视工具)Oracle性能调整的三把利剑,需要深入地了解,但是面试一般都问得比较简单,主要问到的是AWR

Oracle性能调整最重要的就是对最影响性能的SQL的调整。在一个应用中,能够影响到数据库的只有SQL,也只能是SQL。系统不能一味依靠增强硬件、修改系统、数据库参数来提高数据库的性能更多的应该关注那些最影响性能的SQL语句。ASH报告、AWR报告和ADDM报告都是能够找出影响性能SQL的工具。在分析ASH报告、AWR报告和ADDM报告的时候,最重要的工作就是找出对性能影响最大的SQL语句,并对其进行优化。

ASHActive Session History,活动会话历史信息)每秒从V$SESSION中取ACTIVE状态会话的信息,存储在V$ACTIVE_SESSION_HISTORY中,并收集所有活动会话的等待信息不活动的会话不会采样。这里的活动会话包含2类情况,一类是非空闲等待事件WAIT_CLASS <> 'Idle'),一类是“ON CPU”状态的会话。采样工作由新引入的后台进程MMNLManageability Monitor Lite Process来完成。若ASH数据被刷新到磁盘,则需要从DBA_HIST_ACTIVE_SESS_HISTORY视图中查询相关信息。

是否启用ASH功能,受一个隐含参数_ASH_ENABLE”的控制,默认为TRUE而采样时间同样由另一个隐含参数_ASH_SAMPLING_INTERVAL决定,默认为1000毫秒,即1秒。

 1SYS@lhrdb> set pagesize 9999
2SYS@lhrdb> set line 9999
3SYS@lhrdb> col NAME format a40
4SYS@lhrdb> col KSPPDESC format a50
5SYS@lhrdb> col KSPPSTVL format a20
6SYS@lhrdb> SELECT a.INDX,
7  2         a.KSPPINM NAME,
8  3         a.KSPPDESC,
9  4         b.KSPPSTVL 
10  5  FROM   x$ksppi  a,
11  6         x$ksppcv b
12  7  WHERE  a.INDX = b.INDX
13  8  and lower(a.KSPPINM) like  lower('%&parameter%');
14Enter value for parameter: _ash_enable
15old   8: and lower(a.KSPPINM) like  lower('%&parameter%')
16new   8: and lower(a.KSPPINM) like  lower('%_ash_enable%')
17
18      INDX NAME                                     KSPPDESC                                           KSPPSTVL
19---------- ---------------------------------------- -------------------------------------------------- --------------------
20      2840 _ash_enable                              To enable or disable Active Session sampling and f TRUE
21                                                    lushing
22SYS@lhrdb> /
23Enter value for parameter: _ash_sampling_interval
24old   8: and lower(a.KSPPINM) like  lower('%&parameter%')
25new   8: and lower(a.KSPPINM) like  lower('%_ash_sampling_interval%')
26      INDX NAME                                     KSPPDESC                                           KSPPSTVL
27---------- ---------------------------------------- -------------------------------------------------- --------------------
28      2838 _ash_sampling_interval                   Time interval between two successive Active Sessio 1000
29                                                    n samples in millisecs

1000毫秒,正好是1秒的时间。

众所周知,动态性能视图实质Oracle自行构造的一堆存在于SGA内存区的虚表,也就是说,ASH的数据是保存在内存里的,实际上,Oracle分配给ASH的空间并不是无限大,ASH buffers的最小值为1MB,最大值不超过30MBASH占用的SGA内存大小可以通过如下SQL查询:

1SYS@lhrdb> SELECT * FROM V$SGASTAT WHERE NAME LIKE '%ASH buffers%';
2POOL         NAME                                          BYTES
3------------ ---------------------------------------- ----------
4shared pool  ASH buffers                                16777216

可以看到这里分配了大约16M大小的内存。

直白讲,V$ACTIVE_SESSION_HISTORY中能够记录多少会话信息,一方面取决于该数据库的SGA分配给ASH buffers的大小,另一方面取决于数据库的启动和关闭重启数据库时将重构SGA内存区。这两方面的因素制约了V$ACTIVE_SESSION_HISTORY中能够保存的会话信息的能力。作一名DBA,肯定是希望ASH尽可能多保留关于会话的信息,但目前来看单纯依靠V$ACTIVE_SESSION_HISTORY肯定无法实现这个目标有什么更好的方法呢?Oracle又提供了AWR特性,ASH收集到的会话信息,是AWR中快照信息的一部分,被保存到了硬盘上。



本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗


    ==================================================================================================================

    【干货来了|小麦苗IT资料分享】
    ★小麦苗DB职场干货:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w
    ★小麦苗数据库健康检查:https://share.weiyun.com/5lb2U2M
    ★小麦苗微店:https://weidian.com/?userid=793741433
    ★各种操作系统下的数据库安装文件(Linux、Windows、AIX等):https://pan.baidu.com/s/1hqff3Evv6oj2-Tn87MpFkQ
    ★小麦苗分享的资料:https://share.weiyun.com/57HUxNi
    ★小麦苗课堂资料:https://share.weiyun.com/5fAdN5m
    ★小麦苗课堂试听资料:https://share.weiyun.com/5HnQEuL
    ★小麦苗出版的相关书籍:https://share.weiyun.com/5sQBQpY
    ★小麦苗博客文章:https://share.weiyun.com/5ufi4Dx
    ★数据库系列(Oracle、MySQL、NoSQL):https://share.weiyun.com/5n1u8gv
    ★公开课录像文件:https://share.weiyun.com/5yd7ukG
    ★其它常用软件分享:https://share.weiyun.com/53BlaHX
    ★其它IT资料(OS、网络、存储等):https://share.weiyun.com/5Mn6ESi
    ★Python资料:https://share.weiyun.com/5iuQ2Fn
    ★已安装配置好的虚拟机:https://share.weiyun.com/5E8pxvT
    ★小麦苗腾讯课堂:https://lhr.ke.qq.com/
    ★小麦苗博客:http://blog.itpub.net/26736162/
    ★OCP培训:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA
    ★12c的OCP培训:https://mp.weixin.qq.com/s/hMLHlyjMHhLmA0xN4hLvfw
    ★OCM培训:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA
    ★高可用(RAC+DG+OGG)培训:https://mp.weixin.qq.com/s/4vf042CnOdAD8zDyjUueiw
    ★小麦苗课堂腾讯视频:http://v.qq.com/vplus/71f69a319a24c6808cd6e6189ae90664


    ==================================================================================================================

     本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

    ● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

     本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

     版权所有,欢迎分享本文,转载请保留出处

     QQ:646634621  QQ群:230161599、618766405

     微信:lhrbestxh

     微信公众号:DB宝

     提供Oracle OCP、OCM、高可用(rac+dg+ogg)和MySQL最实用的技能培训

    ● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

    长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:DB宝,学习最实用的数据库技术。


    文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论