Oracle-ASH报告获取及分析
前言
由于最近要调整oracle性能,需要使用到ASH报告,介于此整理了关于ASH报告的相关信息。
1、ASH报告简介
ASH(Active Session History 活动会话历史记录)临时地保存系统当前的性能诊断信息。和AWR不同,ASH是保存内存之中, 当ASH分配的空间用光的时候,新的记录会覆盖掉旧的记录;AWR会有延迟,看的历史的性能诊断信息,最大可能有一小时的延迟,而ASH是记录当前的最新的性能诊断信息的。ASH 每秒钟收集一次当前处于非空闲等待事件的、活动状态的、session的信息,并保存在V$ACTIVE_SESSION_HISTORY视图中
2、ASH报告获取
1、Linux下面以oracle用户登录,输入‘sqlplus / as sysdba’,登录数据库,在sql提示符处输入<u>@?/rdbms/admin/ashrpt.sql</u>如下图:
![](https://img.haomeiwen.com/i9740787/19301c33b007c491.png)
2、指定想生成的报告格式html或text,默认为html格式,直接回车就可以
![](https://img.haomeiwen.com/i9740787/6a8fb39dd737d6c7.png)
3、指定在ash报告开始、结束时间,时间格式有四种,如下图
![](https://img.haomeiwen.com/i9740787/4b2b7136d18a79e3.png)
输入 begin_time 的值:<u>15:55:00</u>
输入 duration 的值:<u>900</u> 单位为S,900S即为15分钟
4、指定报告的名字
![](https://img.haomeiwen.com/i9740787/a1070259e0f8f157.png)
输入 report_name 的值:<u>ash.html</u> ,名字自定义
5、报告生成在当前文件夹,可以导出来进行分析
![](https://img.haomeiwen.com/i9740787/032c5ffa562b229f.png)
3、ASH报告分析
3.1基本信息
每个ash报告中的起始都记录了oracle系统的基本信息,包括操作系统的信息
![](https://img.haomeiwen.com/i9740787/1465d16f759d0dc8.png)
上图中提供了基本的数据库信息
DB Name:数据库名
DB ID:数据库Id(获取方法select dbid from v$database;)
Instance:实例名
Inst num:数据库实例启动日期
Release:数据库服务器版本号
RAC:是否为RAC
Host:主机名
![](https://img.haomeiwen.com/i9740787/6d054049a67d0e05.png)
CPUs****:逻辑cpu个数
SGA Size:SGA大小。
Buffer Cache:Buffer缓存大小
Shared Pool****:共享池大小
ASH Buffer Size:ASH缓存大小
![](https://img.haomeiwen.com/i9740787/358ea79ae5854a5f.png)
Sample Time****:采样时间
Data Source****:数据来源
Analysis Begin Time:开始采样时间
Analysis End Time::采用结束时间
Elapsed Time:采样经历时间
Sample**** Count:样本数量
Average**** Active Sessions:平均活跃会话数
Avg. Active Session per CPU:****平均cpu会话数
3.2 Top Events 等待事件
![](https://img.haomeiwen.com/i9740787/fd2a521ebaaf4dbe.png)
top等待事件描述了被抽样会话活动中,由用户、后台等产生的等待事件,使用这些信息可以识别是那些等待事件造成了短暂的性能问题
1、Top User Events即:占很高百分比的用户进程等待事件
2、Top Background Events:占很高百分比的后台进程等待事件
3、Top Event P1/P2/P3 Values:占很高百分比的等待事件的参数值,它通过总的等待时间(%Event)百分比进行排序后被显示.对于每一个等待事件p1,p2,p3的值与等待事件参数parameter 1,parameter 2,parameter 3这三个列相关联
3.3 Load Profile
load profile部分描述了在抽样的会话活动中的负载分析.使用这部分信息可以识别造成短暂性能问题的服务,客户或sql命令类型.
3.3.1 Top Service/Module
top service/module:这部分信息显示了在抽样会话活动中占很高百分比的服务和模块信息
![](https://img.haomeiwen.com/i9740787/4f12fde109972795.png)
重点关注如下参数:
1、Service/Module:服务/模块;
2、%Activity:活跃率
3.3.2 Top Client IDs
top client ids:这部分信息显示了在抽样会话活动中占很高百分比的客户端的id信息它是数据库会话中应用程序的特定标识符
3.3.3 Top SQL Command Types
top sql command types:这部分信息显示了在抽样会话活动中占很高百分比的sql命令类型比如select或update
![](https://img.haomeiwen.com/i9740787/0ad1d6863ade586d.png)
SQL Command Type :SQL类型,增删改查、PLSQL
Distinct SQLIDs :执行IP
% Activity Avg :活跃率
Active Sessions:平均会话数
3.3.4 Top Phases of Execution
top phases of execution:这部分信息显示了在抽样会话活动中占很高百分比的执行步骤比如sql,pl/sql和java的编译和执行操作.
3.4 Top SQL
top sql:顶级sql部分描述了抽样会话活动中的顶级sql语句,使用这部分信息可以识别出造成短暂性能问题的高负载sql语句
![](https://img.haomeiwen.com/i9740787/f4e23b226de7fe26.png)
3.4.1 Top SQL with Top Events
top sql with top events:这部分信息显示了在抽样会话活动中占总的等待事件很高百分比的sql语句.通过点击SQLID跳转到具体SQL信息界面。
![](https://img.haomeiwen.com/i9740787/ad912c755b8bc7ad.png)
3.4.2 Top SQL with Top Row Sources
top sql with top row sources:这部分信息显示了在抽样会话活动中占很高百分比的sql语句和它们的详细执行计划信息.通过这部分信息可以识别出哪部分的sql执行消耗了大量的sql执行时间,通过点击SQLID跳转到具体SQL信息界面。
![](https://img.haomeiwen.com/i9740787/bfd675804bc83e8d.png)
3.4.3 Complete List of SQL Text
complete list of sql text:这部分信息显示了顶级sql语句的完整的文本内容
![](https://img.haomeiwen.com/i9740787/4fb0601411b10069.png)
3.4.5 Top PL/SQL Procedures
Top PL/SQL Procedures:这部分信息显示了在抽样会话活动中占很高百分比的pl/sql过程.
[图片上传失败...(image-e39410-1545034282648)]
3.5 Top Session
top sessions:这部分信息描述了会话正在等待的一个特定等待事件.使用这部分信息来识别在抽样会话活动中占很高百分比的会话它们可能是造成短暂性能问题的原因
3.5.1 Top Sessions
top sessions:这部分信息显示了在抽样会话活动中占很高百分比的等待会话.
3.5.2 Top Blocking Sessions
top blocking sessions:这部分信息显示了在抽样会话活动中占很高百分比的阻塞会话.
3.6 Top Objects/Files/Latches
top objects/files/latches这部分信息显示了通常最消耗数据库资源的信息
1、top db objects:显示了在抽样会话活动中占所有引用对象很高百分比的数据库对象(比如表和索引)
2、top db files:显示了在抽样会话活动中占访问量很高百分比的数据库文件
3、top latches:显示了在抽样会话活动中占很高百分比的闩锁信息。
PS:闩锁是一种简单低级别串行化机制用来保护sga中的共享数据结构.比如闩锁保护当前访问数据库和缓冲区缓存中数据块结构的用户列表.当维护或查找这些结构时服务器或后台进程请求持有闩锁的时间是非常短暂的.闩锁的实现依赖于操作系统特别是一个进程等待获取一个闩锁多长时间.
3.7 Activity Over Time
activity over time:这一部分是ash报告信息最丰富的一部分.这部分信息对于长时间周期的ash报告来说因为在分析期间它提供了关于活动和工作负载概要深层次的详细信息.activity over time会被分成10个时段.每个时段的大小基于分析所持续的时间.所有内部时段是相等的大小它们可以相互比较.例如,如果分析时间持续10分钟那么所有的时段将会是每个一分钟.然后如果分析时间持续9分30秒,那么外部的时段可能是每个15秒内部的时段可能每个1分钟.
![](https://img.haomeiwen.com/i9740787/8a6983b714eaa08e.png)
slot time : 时段的持续时间
solt count :在时段中抽样会话的数量
event :在时段中顶级的三个等待事件
event count:ash抽样等待的等待事件的数量
%event :ash抽样等待的等待事件在整个分析期间所占的百分比