Oracle活动会话历史(ASH)及报告解读

对于数据库运行期间的各种状态的实时监控以及相关性能数据捕获对于解决性能问题,提高整体业务系统运行效率是至关重要的。在Oracle数据库中,实时捕获相关性能数据是通过ASH工具来实现的。ASH通过每秒钟抽取活动会话样本,为分析在最近时刻的性能问题提供最直接最有效的依据。本文主要讲述ASH的用法及使用。

一、活动会话历史概述

Oracle v$active_session_history视图提供了实例中的活动会话采样。通过该视图提供的最详细最完整性能数据,可作为定位性能故障的一手证据。任一连接到数据库时,那些不属于空闲等待类的事件的会话被认为是活动会话。这包括在采样时在CPU上的任何会话。

活动会话样本存储在SGA中的循环缓冲区中。随着系统活动的增加,可以存储在循环缓冲区中的会话活动的秒数将减少。会话样本的时间保留在v$视图中。在v$视图中显示的会话活动的秒数是完全依赖于数据库活动的。

当自动工作负载信息库(AWR)快照的创建,动态性能视图v$active_session_history的内容被刷新到磁盘。通过只捕获活动会话,表示一组可管理的数据,它的大小直接关系到正在执行的工作,而不是系统上允许的会话数。

数据字典dba_hist_active_sess_history是视图v$active_session_history的历史数据,dba_hist_active_sess_history视图默认每十秒收集一次信息储存在磁盘中。也就是说最终保存到磁盘的数据也就是实时收集数量量的1/10。相应地,可用于诊断性能的数据也就没有v$active_session_history更详细,更丰富。

活动会话数据流:

   v$session(ASH Buffer) —>v$active_session_history—>dba_hist_active_sess_history(AWR仓库)

活动会话历史样本通常包括如下:

  SQL语句的SQL标识符

  对象号,文件号和块号

  等待事件标识符和参数

  会话标识符和会话序列号

  模块和动作名称

  会话的客户端标识符

  服务哈希标识符

  阻塞会话

二、活动会话历史逻辑架构图

如上图所示,ASH从V$SESSION提取信息样本。每秒提取一个样本,直接读取Oracle使用的特定结构数据,而不是使用SQL,因此该方式比较高效。

ASH被设计为内存中的滚动缓冲区,以前的信息在需要时被覆盖。由于ASH缓冲区中的数据量可能非常大,并且将其全部刷新到磁盘是不可接受的。更有效的方法是过滤历史数据,同时将其刷新到工作负载存储库。每隔60分钟通过可管理性监视器(MMON)进程自动执行此操作,并且每当缓冲区已满时,都通过MMNL进程完成。

注意:ASH的存储器来自系统全局区域(SGA),它在实例的使用寿命期间是固定的。它代表每个CPU 2 MB的内存。 ASH不能超过共享池大小的百分之五,也就是SGA_TARGET的百分之五。

SQL> select * from v$version where rownum<2;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

SQL> select pool, name, bytes/1024/1024 From v$sgastat where name like '%ASH %';

POOL         NAME                       BYTES/1024/1024
------------ -------------------------- ---------------
shared pool  ASH buffers                     10.4000015

SQL> select 'Leshami' Author,'http://blog.csdn.net/leshami' Blog,
  2  '645746311' QQ from dual;

AUTHOR  BLOG                         QQ
------- ---------------------------- ---------
Leshami http://blog.csdn.net/leshami 645746311

三、ASM采样示例

如前所述,ASH代表了近期活动的历史。 该图显示了当活动时如何采样会话。 每秒钟,Oracle数据库服务器查看活动会话,并记录这些会话正在等待的事件。 非活动会话不被采样。 采样非常高效,因为它直接访问Oracle数据库内部结构。

如上图中,活动会话1 Wait I/O以及Wait Block被记录到v$active_session_history视图。

四、访问活动会话数据

检查当前活动会话历史:v$active_session_history

检查活动会话历史数据:dba_hist_active_sess_history

生成ASH报告

通过OEM 诊断包性能页面

五、生成ASH报告

SQL> @?/rdbms/admin/ashrpt.sql

Current Instance
~~~~~~~~~~~~~~~~
   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
   42938845 ORA11G              1 ora11g

Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type: html --指定报告类型,此处使用html
Type Specified:  html

Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   DB Id     Inst Num DB Name      Instance     Host
------------ -------- ------------ ------------ ------------
* 42938845          1 ORA11G       ora11g       ydq05

Defaults to current database
Using database id: 42938845

Enter instance numbers. Enter 'ALL' for all instances in a
RAC cluster or explicitly specify list of instances (e.g., 1,2,3).
Defaults to current instance.
Using instance number(s): 1 --输入实例号,RAC可以选择ALL或者特定实例号

ASH Samples in this Workload Repository schema--当前已保存的ASH sample数据
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Oldest ASH sample available:19-Apr-17 22:00:37[  12689 mins in the past]
Latest ASH sample available:28-Apr-17 17:31:09[      0 mins in the past]

Specify the timeframe to generate the ASH report
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter begin time for report:  --输入起止时间
                              --以下为参考格式,
--    Valid input formats:
--      To specify absolute begin time:
--        [MM/DD[/YY]] HH24:MI[:SS]
--        Examples: 02/23/03 14:30:15
--                  02/23 14:30:15
--                  14:30:15
--                  14:30
--      To specify relative begin time: (start with '-' sign)
--        -[HH24:]MI
--        Examples: -1:15  (SYSDATE - 1 Hr 15 Mins)
--                  -25    (SYSDATE - 25 Mins)

Defaults to -15 mins         缺省为-15分钟
Enter value for begin_time:  未输入则使用缺省值
Report begin time specified:

Enter duration in minutes starting from begin time:
Defaults to SYSDATE - begin_time
Press Enter to analyze till current time
Enter value for duration:    输入持续时间,缺省为当前
Report duration specified:

Using 28-Apr-17 17:16:09 as report begin time
Using 28-Apr-17 17:31:09 as report end time

Specify Slot Width (using ashrpti.sql) for 'Activity Over Time' section
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

-- Explanation:
--   In the 'Activity Over Time' section of the ASH report,
--   the analysis period is divided into smaller slots
--   and top wait events are reported in each of those slots.

-- Default:
--   The analysis period will be automatically split upto 10 slots
--   complying to a minimum slot width of
--     1 minute,  if the source is V$ACTIVE_SESSION_HISTORY or
--     5 minutes, if the source is DBA_HIST_ACTIVE_SESS_HISTORY.

Specify Slot Width in seconds to use in the 'Activity Over Time' section:
Defaults to a value as explained above:
Slot Width specified:

-- 以下部分描述如何生成特定的ASH报告,如根据SESSION,SQL_ID,模块等生成,省略
               ....................
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is ashrpt_1_0428_1731.html.  To use this name,
press <return> to continue, otherwise enter an alternative.
Enter value for report_name: 

Using the report name ashrpt_1_0428_1731.html

六、ASH报告结构

ASH报告结构,如下图所示:

Top Events:

  报告的用户事件,背景,事件,和事件的参数值

Load Profile:
  报告顶级服务/模块,顶级客户端,识别SQL命令和执行SQL的类型

Top SQL:
  报告与首要事件相关SQL语句,与rowsources相关SQL,完整SQL语句,SQL语句绑定变量使用

Top PL/SQL Procedures:
  列出的PL/SQL程序,占百分比最高的采样会话活动

Top Java Workload:
  描述了在采样会话活动java程序

Top Sessions:
  首要会话,阻塞会话和并行相关会话

Top Objects/Files/Latches:
  报告对象,文件,或锁存

Activity Over Time:
  报告前三等待事件为10个同样大小的时间报告期,该报告可以让你看到在最后时刻非常详细的活动。

七、ASH报告分析

1、头部信息:


注,DataSource 可以有2个来源,一个是V$ACTIVE_SESSION_HISTORY,一个是DBA_HIST_ACTIVE_SESS_HISTORY

2、首要等待事件

首要等待事件部分描述了被抽样会话活动中由用户,后台等产生的首要等待事件,首要等待事件,意味着采样期间这些事件是产生性能问题的根源。

首要等待事件包含以下部分:
(1)Top User Events首要用户事件
首要用户事件,也成为前台等待事件,信息显示了在抽样会话活动中占很高百分比的用户进程等待事件。

(2)Top Background Events首要后台事件
这部分信息显示了在抽样会话活动中占很高百分比的后台进程等待事件。

(3)Top Event P1/P2/P3 Values首要等待事件参数P1/P2/P3
这部分信息显示了在抽样会话活动中占很高百分比的等待事件的参数值它通过总的等待时间(%Event)百分比进行排序后被显示.对于每一个等待事件p1,p2,p3的值与等待事件参数parameter 1,parameter 2,parameter 3这三个列相关联,分别是文件号,块号,set-id#

如上图所示,当前的数据库主要事件为

free buffer waits
  服务器进程扫描LRU列表获得空闲的缓冲区(例如,从磁盘读取数据块,或者构造一致性读Cr块等到缓冲区时)。扫描到一个阈值后,如果服务器进程无法找到可用缓冲区,它请DBWR从LRU列表将脏缓冲区写出到磁盘,等待直到缓冲释放。在DBWR写出脏缓冲释放前的等待,称为free buffer waits。通常2个主要的情形导致free buffer waits,一个是DBWR写出脏块速度不够快,二是Buffer cache过小。

write complete waits
  DBWR将脏缓冲区记录到磁盘上的期间,对缓冲区以exclusive模式占有buffer lock,此时,读取或修改缓冲区的其他进程就需要等待此项工作结束,这时等待write complete waits事件。

buffer busy waits
  缓冲区繁忙等待,发生这个事件的两个主要情况是:另一个会话正将块读到缓冲区中;另一个会话以不兼容的方式持有我们所请求的有缓冲区。

3、Load Profile

4、Top SQL

5、完整SQL列表

6、首要会话

7、首要对象,文件,栓

8、分时活动


该部分内容将报告期间按不同时间片段来展现活动等待事件。
如上图所示,activity over time被分成8个时段,前3个等待事件会出现在每一个时间段。
从上图可知,基本上来说,整个采样期间都是经历三个和buffer相关的等待事件。%event并没有出现明显的尖波。

下面是每列的描述
列 描述
slot time(持续时间) 时段的持续时间
solt count 在时段中抽样会话的数量
event 在时段中顶级的三个等待事件
event count ash抽样等待的等待事件的数量
%event ash抽样等待的等待事件在整个分析期间所占的百分比

9、报告得到的初步结论

1) 整个采样期间,OLTP特征显著,主要表现为大量的DML操作
2) 首要的等待事件表现为Buffer相关,很容易联想到增加Buffer size,但是从报告头部可知Buffer 仅占用23.5%
3) 对于首要等待事件,DBWR存在调整及优化的可能,例如增加DBWn进程数目,加快写入,以及优化磁盘IO
4) 优化检查点,以加快数据写出到磁盘
5) 优化SQL以减少过多的IO负载,同时也可以考虑优化SQL所在的包,存储过程
6) 热对象的分区以及索引分离,反向索引设计等

八、更多参考

Oracle ADDM性能诊断利器及报告解读
Oracle AWR特性描述
Oracle AWR管理与维护
Oracle自动性能统计
Oracle Time Model Statistics(时间模型统计)

时间: 2024-10-28 10:12:13

Oracle活动会话历史(ASH)及报告解读的相关文章

ASH(Active Session History)活动会话历史说明

原文转自:http://blog.csdn.net/tianlesoftware/article/details/6448765 在Oracle 10g中,推出了一些与DB 性能相关的功能,比如AWR, ADDM, STA, 以及这篇讲的ASH(Active Session History).   关于其他的几个功能说明,参考我之前的Blog:        Oracle AWR 介绍        http://blog.csdn.net/tianlesoftware/archive/2009

Oracle ADDM性能诊断利器及报告解读

性能优化是一个永恒的话题,性能优化也是最具有价值,最值得花费精力深入研究的一个课题,因为资源是有限的,时间是有限的.在Oracle数据库中,随着Oracle功能的不断强大和完善,Oralce数据库在性能方面实现自我诊断及优化的功能也越来智能化,这大大的简花了人工优化的脑力和体力的开销,尤其是借助ADDM自动诊断并给出调整建议.本文主要描述ADDM功能及特性. 一.ADDM的主要功能 ADDM全称是Automatic Database Diagnostic Monitor,是Oracle一个实现性

Google Website Optimizer报告解读

  前段时间用博客的几个测试页面尝试了下使用Google Website Optimizer做A/B测试,经过这段时间收集了一些测试数据,感谢大家帮忙点击.其实之前一直想介绍Google的这个网站对比实验优化工具,完全免费而且操作简单,并且在不久的将来独立的Google Website Optimizer就会消失,这块功能会被整合到Google Analytics里面,相信很多GA的用户已经在Content模块中发现了新增的Experiments这个功能,这个就是从Google Website

《中国网页游戏行业发展报告解读》回顾与总结

<中国网页游戏行业发展报告解读>网络连接地址:http://www.17xie.com/book-63015486.html 对于报告观点的回顾总结 1在开发领域3D网页游戏已经在国外有多款产品,2.5D产品在国内外产品数量也很 丰富,未来将在资本的助推下与客户端游戏在市场上直接竞争,竞争将在多个层面展开,以市场营销推广最为 激烈. 2网页游戏题材已经从策略类游戏占据市场主导发展成为 一款网页游戏融合多种游戏模式,游戏中包含其他互联网应用的状况,创新在网页游戏开发领域得到了极大展现. 3以AP

美国国防部发布报告解读中国电子战战术

3月24日讯 俄罗斯入侵乌克兰时展示了先进的电磁频谱和通信干扰能力,美国认为中国在该领域的能力也在不断提升. 美国国防部向国会提交的有关中国军事和安全进展的2016年度报告评估指出,中国非常重视电子战,其重视程度与传统的天空.地面和海上域相当. 美国国防部深度解读中国电子战战术 - E安全 这份报告称中国人民解放军将电子战作为重要的力量倍增器,可能会在冲突发生时利用电子战支持所有的作战军种.解放军的电子战部队已经执行了干扰和抗干扰行动,这检验了中国军方对电子战武器.设备和性能的了解,有助于提高中

CCBN2011主题报告解读:广电示好一厢情愿

作 者:陈琛 3月23-25日,以"创新.融合.服务"为核心理念,以"推进 三网融合,共享广电未来"为主题的第十九届中国国际广播电视信息网络展览会(CCBN2011)在京举行.3月22日,国家广电总局副局长田进出席CCBN2011主题报告会,以"加快推进三网融合"为主题,就三网融合的战略意义.国外经验.实施原则.推进任务.广电系统重点工作等多方面问题进行了系统诠释与部署. 作为2011年广电系统工作"风向标",本届CCBN主题

甲骨文全面提升Oracle内存应用的分析、报告和OLTP性能

甲骨文全球大会,2013年9月23日--速度和敏捷性主导当今的全球经济.传统交易系统产生数量多得令人难以置信的有用数据,但是需要进行手动或单独的批量系统处理,以对数据进行分析并立即以可视方式为业务决策提供数据.处理能力已经显著改进,也可以提高关键业务应用的性能,但是直到现在,尚未利用这样的处理能力进行实时复杂的数据分析,以做出正确决策,解决关键业务问题. 财务结算.成本管理.预测.规划等关键业务应用和工作流程的执行常常需要数小时或数天时间.基于Oracle数据库内存选件的Oracle内存应用改变

Google Analytics报告解读

Google Analytics(分析)将其所有报告分为六个类别:控制台.访问者.流量来源.内容.目标和电子商务.控制台是报告摘要的汇总之地.目标是网站分析者为了更好地分析网站数据而为网站设置的目标,可以说销售数据,也可以是订单数量.在此不讨论控制台和目标.具体看一下其他四个报告中的术语: 1. Google Analytics(分析)流量来源报告 直接流量:表示通过点击书签或直接在浏览器中输入您的网址来到您网站的访问者所带来的访问次数. 推介网站:包括所有为您带来了流量的网站,起到推介作用的可

Oracle中会话与事务的区别

一个会话可以启动多个事务,会话是session,指一次连接. 事务是指一个操作单元,要么成功,要么失败,没有中间状态. 会话中可以完成多个事务. 例如: 会话好比,在应用程序中连接数据库要执行连接,然后会关闭,这算一次会话. 事务呢,就好比在打开会话后要执行程序中的某一个或多个对数据库进行的操作. 事物的最好例子就是转账,从一个账户赚钱到另一个账户,两张表的数据修改,要么全成功,要门全变回原样. 会话看 v$session 事务看 v$transaction 这两张视图通过 v$session.