ASH(Active Session History)——分析(2)!

ASH(Active Session History)——分析(2)!



下面是ASH报告的第一部分:

ASH Report For ORCL/orcl


DB Name DB Id Instance Inst num Release RAC Host
ORCL 1293815896 orcl 1 10.2.0.4.0 NO linux


CPUs SGA Size Buffer Cache Shared Pool ASH Buffer Size
1 160M (100%) 48M (30.0%) 96M (60.0%) 2.0M (1.3%)


  Sample Time Data Source
Analysis Begin Time: 25-11月-11 06:33:55 V$ACTIVE_SESSION_HISTORY
Analysis End Time: 25-11月-11 07:35:25 V$ACTIVE_SESSION_HISTORY
Elapsed Time: 61.5 (mins)  
Sample Count: 18  
Average Active Sessions: 0.00  
Avg. Active Session per CPU: 0.00  
Report Target: None specified  
这一部分除了数据库的一些信息之外,还包括报告的起止时间、时间区间、采样频次、会话平均活动情况,以及会话平均cpu使用情况。

如果是以sid级别生产报告,则如下:(注意Report Target)


  Sample Time Data Source
Analysis Begin Time: 25-11月-11 07:07:07 V$ACTIVE_SESSION_HISTORY
Analysis End Time: 25-11月-11 08:07:20 V$ACTIVE_SESSION_HISTORY
Elapsed Time: 60.2 (mins)  
Sample Count: 5  
Average Active Sessions: 0.00  
Avg. Active Session per CPU: 0.00  
Report Target: SESSION_ID = 166 20% of total database activity

Top User Events

Event Event Class % Activity Avg Active Sessions
CPU + Wait for CPU CPU 16.67 0.00
log file sync Commit 16.67 0.00

这一部分是用户会话的等待事件的信息。列出了采样时段内数据库发生的显著用户等待!


Top Background Events

Event Event Class % Activity Avg Active Sessions
control file parallel write System I/O 27.78 0.00
CPU + Wait for CPU CPU 16.67 0.00
log file parallel write System I/O 16.67 0.00
null event Other 5.56 0.00
这一部分列出后台进程的等待事件。列出了后台进程的等待事件!


Top Event P1/P2/P3 Values

Event % Event P1 Value, P2 Value, P3 Value % Activity Parameter 1 Parameter 2 Parameter 3
control file parallel write 27.78 "3","3","3" 27.78 files block# requests
log file parallel write 16.67 "1","5","1" 5.56 files blocks requests
    "1","6","1" 5.56      
    "1","22","1" 5.56      
log file sync 16.67 "1010","0","0" 5.56 buffer# NOT DEFINED NOT DEFINED
    "1385","0","0" 5.56      
    "5057","0","0" 5.56      
这一部分信息是上部分等待事件的具体描述。列出了相关等待时间及其参数值。根据这些参数,可以知道等待发生在哪些对象或资源上!


Top Service/Module

Service Module % Activity Action % Action
SYS$BACKGROUND UNNAMED 61.11 UNNAMED 61.11
SYS$USERS   16.67   16.67
  sqlplus@linux (TNS V1-V3) 16.67 UNNAMED 16.67
SYS$BACKGROUND MMON_SLAVE 5.56 Auto ADDM Slave Action 5.56
这一部分是按照活动的频率列出前五位的应用程序。


Top SQL Command Types

  • 'Distinct SQLIDs' is the count of the distinct number of SQLIDs with the given SQL Command Type found over all the ASH samples in the analysis period
SQL Command Type Distinct SQLIDs % Activity Avg Active Sessions
SELECT 1 5.56 0.00
这部分列出了数据库中活动最频繁的操作。


Top SQL Statements

SQL ID Planhash % Activity Event % Event SQL Text
4z2at9d1natrv 2848324471 5.56 CPU + Wait for CPU 5.56 SELECT INSTANCE_NUMBER FROM V$...
这部分安装sql的活动频度列出了前6位的sql语句。


Top SQL using literals

No data exists for this section of the report.

这部分列出了一些未绑定变量的sql。


Complete List of SQL Text


SQL Id SQL Text
4z2at9d1natrv SELECT INSTANCE_NUMBER FROM V$INSTANCE
这部分是列出了所有的sql语句。


Top Sessions

  • '# Samples Active' shows the number of ASH samples in which the session was found waiting for that particular event. The percentage shown in this column is calculated with respect to wall clock time and not total database activity.
  • 'XIDs' shows the number of distinct transaction IDs sampled in ASH when the session was waiting for that particular event
  • For sessions running Parallel Queries, this section will NOT aggregate the PQ slave activity into the session issuing the PQ. Refer to the 'Top Sessions running PQs' section for such statistics.
Sid, Serial# % Activity Event % Event User Program # Samples Active XIDs
165, 1 27.78 control file parallel write 27.78 SYS oracle@linux (CKPT) 5/3,690 [ 0%] 0
166, 1 16.67 log file parallel write 16.67 SYS oracle@linux (LGWR) 3/3,690 [ 0%] 0
167, 1 16.67 CPU + Wait for CPU 16.67 SYS oracle@linux (DBW0) 3/3,690 [ 0%] 0
135, 165 11.11 CPU + Wait for CPU 11.11 SYS sqlplus@linux (TNS V1-V3) 2/3,690 [ 0%] 0
135, 108 5.56 null event 5.56 SYS oracle@linux (m001) 1/3,690 [ 0%] 0

这部分列出了活动最频繁的会话信息。这一部分为我们提供了非常有用的信息,那就是哪些进程活动频繁。我们通过这一部分获取到某个活动频繁的会话信息,可以通过使用ashrpti.sql来生成针对这个会话的ASH性能报告,或者可以使用sql_trace对这个会话进程跟踪。这样我们就能了解到当前这个会话正在做什么。


Top Blocking Sessions

  • Blocking session activity percentages are calculated with respect to waits on enqueues, latches and "buffer busy" only
  • '% Activity' represents the load on the database caused by a particular blocking session
  • '# Samples Active' shows the number of ASH samples in which the blocking session was found active.
  • 'XIDs' shows the number of distinct transaction IDs sampled in ASH when the blocking session was found active.
Blocking Sid % Activity Event Caused % Event User Program # Samples Active XIDs
166, 1 16.67 log file sync 16.67 SYS oracle@linux (LGWR) 3/3,690 [ 0%] 0
这一部分列举了被阻塞的会话信息。


Top Sessions running PQs

No data exists for this section of the report.

这部分列出了活动频繁的前几位并行执行的会话信息。


Top DB Objects

No data exists for this section of the report.

这部分列举了相关等待具体等待的对象。


Top DB Files

No data exists for this section of the report.

这部分列举访问的数据文件信息。


Top Latches

No data exists for this section of the report.

这部分列出latch竞争。

Activity Over Time

  • Analysis period is divided into smaller time slots
  • Top 3 events are reported in each of those slots
  • 'Slot Count' shows the number of ASH samples in that slot
  • 'Event Count' shows the number of ASH samples waiting for that event in that slot
  • '% Event' is 'Event Count' over all ASH samples in the analysis period
Slot Time (Duration) Slot Count Event Event Count % Event
06:36:00 (6.0 min) 1 CPU + Wait for CPU 1 5.56
06:48:00 (6.0 min) 2 control file parallel write 2 11.11
06:54:00 (6.0 min) 2 log file parallel write 1 5.56
    log file sync 1 5.56
07:00:00 (6.0 min) 3 CPU + Wait for CPU 1 5.56
    control file parallel write 1 5.56
    null event 1 5.56
07:06:00 (6.0 min) 2 log file parallel write 1 5.56
    log file sync 1 5.56
07:12:00 (6.0 min) 2 CPU + Wait for CPU 1 5.56
    control file parallel write 1 5.56
07:18:00 (6.0 min) 3 CPU + Wait for CPU 1 5.56
    log file parallel write 1 5.56
    log file sync 1 5.56
07:30:00 (5.4 min) 3 CPU + Wait for CPU 2 11.11
    control file parallel write 1 5.56
这部分列举了各种等待的细粒度显示。

当我们需要对一些活动的会话做分析时,使用ASH更加方便,这样可以排除很多不需要的信息干扰,更容易定位到问题的所在;

当我们需要对数据库系统做整体性能评估时,需要分析AWR性能报告。

=============================================================================
补充:

ASH报告

使用ash报告,在生成ash报告之后,可以重新检索哪些标识为短暂性能问题的信息。

ash报告的内容分成了以下几个部分:

top events

load profile

top sql

top pl/sql

top Java

top sessions

to objects/files/latches

activity over time

41.png

 

4.2 Top Evnets

顶级等待事件部分描述了被抽样会话活动中由用户,后台等产生的顶级等待事件,使用这些信息可以识别是哪些等待事件造成了短暂的性能问题.顶级等待事件包含以下部分:

1Top User Events顶级用户事件

这部分信息显示了在抽样会话活动中占很高百分比的用户进程等待事件。

 

2Top Background Events顶级后台事件

这部分信息显示了在抽样会话活动中占很高百分比的后台进程等待事件。

 

3Top Event P1/P2/P3 Values顶级等待事件参数P1/P2/P3

这部分信息显示了在抽样会话活动中占很高百分比的等待事件的参数值它通过总的等待时间(%Event)百分比进行排序后被显示.对于每一个等待事件p1,p2,p3的值与等待事件参数parameter 1,parameter 2,parameter 3这三个列相关联.

 

案例如下图42.png所示:


 

4.3 Load Profile

load profile部分描述了在抽样的会话活动中的负载分析.使用这部分信息可以识别造成短暂性能问题的服务,客户或sql命令类型.负载概要部分包含以下部分信息:

 

(1)top service/module

这部分信息显示了在抽样会话活动中占很高百分比的服务和模块信息

 

(2)top client ids

这部分信息显示了在抽样会话活动中占很高百分比的客户端的id信息它是数据库会话中应用程序的特定标识符

 

(3)top sql command types

这部分信息显示了在抽样会话活动中占很高百分比的sql命令类型比如select或update

 

(4)top phases of execution

这部分信息显示了在抽样会话活动中占很高百分比的执行步骤比如sql,pl/sql和java的编译和执行操作.

 

案例如下图43.png所示:

 

 


4.4 Top Sql

顶级sql部分描述了抽样会话活动中的顶级sql语句,使用这部分信息可以识别出造成短暂性能问题的高负载sql语句

顶级sql部分包含以下信息:

top sql with top events

top sql with top row sources

top sql using literals

top parsing module/action

complete list of sql text

 

(1)top sql with top events

这部分信息显示了在抽样会话活动中占总的等待事件很高百分比的sql语句.

 

(2)top sql with top row sources

这部分信息显示了在抽样会话活动中占很高百分比的sql语句和它们的详细执行计划信息.通过这部分信息可以识别出哪部分的sql执行消耗了大量的sql执行时间

 

(3)top sql using literals

这部分信息显示了在抽样会话活动中占很高百分比的使用literal值的sql语句.可以重新检查这部分sql语句看是否能使用绑定变量来代替literal值.

 

(4)top parsing module/action

这部分信息显示了在抽样会话活动中当执行解析sql语句时占很高百分比的模块和操作

 

(5)complete list of sql text

这部分信息显示了顶级sql语句的完整的文本内容

 

(6)top pl/sql

这部分信息显示了在抽样会话活动中占很高百分比的pl/sql过程.

 

(7)top java

这部分信息显示了在抽样会话活动中占很高百分比的java程序

 

 

4.5 top sessions

这部分信息描述了会话正在等待的一个特定等待事件。使用这部分信息来识别在抽样会话活动中占很高百分比的会话它们可能是造成短暂性能问题的原因.top sessions部分包含以下信息:

 

(1)top sessions

这部分信息显示了在抽样会话活动中占很高百分比的等待会话

 

(2)top blocking sessions

这部分信息显示了在抽样会话活动中占很高百分比的阻塞会话

 

(3)top sessions running pqs

这部分信息显示了哪些在抽样会话活动中占很高百分比的正处于等待的并行查询

 

 

4.6top objects/files/latches

这部分信息显示了通常最消耗数据库资源的信息括以下部分:

 

(1)top db objects

这部分信息显示了在抽样会话活动中占所有引用对象很高百分比的数据库对象(比如表和索引)

 

(2)top db files

这部分信息显示了在抽样会话活动中占访问量很高百分比的数据库文件

 

(3)top latches

这部分信息显示了在抽样会话活动中占很高百分比的闩锁信息

闩锁是一种简单低级别串行化机制用来保护sga中的共享数据结构.比如闩锁保护当前访问数据库和缓冲区缓存中数据块结构的用户列表.当维护或查找这些结构时服务器或后台进程请求持有闩锁的时间是非常短暂的.闩锁的实现依赖于操作系统特别是一个进程等待获取一个闩锁多长时间.

 

(4)Activity over time

这一部分是ash报告信息最丰富的一部分.这部分信息对于长时间周期的ash报告来说因为在分析期间它提供了关于活动和工作负载概要深层次的详细信息.activity over time会被分成10个时段.每个时段的大小基于分析所持续的时间.第一个和最后一个时段是奇怪.所有内部时段是相等的大小它们可以相互比较.例如,如果分析时间持续10分钟那么所有的时段将会是每个一分钟.然后如果分析时间持续9分30秒,那么外部的时段可能是每个15秒内部的时段可能每个1分钟

 

特定时段中每个时段包含的信息如下:

列                       描述

slot time(持续时间)      时段的持续时间

solt count               在时段中抽样会话的数量

event                    在时段中顶级的三个等待事件

event count              ash抽样等待的等待事件的数量

%event                   ash抽样等待的等待事件在整个分析期间所占的百分比

 

当比较内部时段时,通过识别异常的event count和slot count列执行一个倾斜分析.event count列的异常指示了在抽样会话中等待的等待事件数量增加了.slot count列的异常指示活动的会自豪感增加了,因为ash数据只从活动会话中进持抽样说明数据库的

负载增加了.通常来说当活动会话抽样的数理和与这些会话相关的等待事件增加时那么这个时段可能会造成短暂性能问题,如下44.png所示:


请使用浏览器的分享功能分享到微信等