热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

对于数据库运行期间的各种状态的实时监控以及相关性能数据捕获对于解决性能问题,提高整体业务系统运行效率是至关重要的。在Oracle数据库中,实

对于数据库运行期间的各种状态的实时监控以及相关性能数据捕获对于解决性能问题,提高整体业务系统运行效率是至关重要的。在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标识符

??对象号,文件号和块号

??等待事件标识符和参数

??会话标识符和会话序列号

??模块和动作名称

??会话的客户端标识符

??服务哈希标识符

??阻塞会话

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

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

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

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

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

SQL
	三、ASM采样示例

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

如上图中,活动会话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 
	六、ASH报告结构

ASH报告结构,如下图所示: 
Oracle活动会话历史(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、头部信息:

Oracle活动会话历史(ASH)及报告解读 
注,DataSource 可以有2个来源,一个是V$ACTIVE_SESSION_HISTORY,一个是DBA_HIST_ACTIVE_SESS_HISTORY

2、首要等待事件

首要等待事件部分描述了被抽样会话活动中由用户,后台等产生的首要等待事件,首要等待事件,意味着采样期间这些事件是产生性能问题的根源。 
Oracle活动会话历史(ASH)及报告解读
首要等待事件包含以下部分: 
(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

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

4、Top SQL

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

5、完整SQL列表

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

6、首要会话

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

7、首要对象,文件,栓

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

8、分时活动

Oracle活动会话历史(ASH)及报告解读 
该部分内容将报告期间按不同时间片段来展现活动等待事件。 
如上图所示,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) 热对象的分区以及索引分离,反向索引设计等
转:http://blog.csdn.net/leshami/article/details/73526881


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
author-avatar
重孙女俘虏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有