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 |
如果是以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$... |
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 |
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
顶级等待事件部分描述了被抽样会话活动中由用户,后台等产生的顶级等待事件,使用这些信息可以识别是哪些等待事件造成了短暂的性能问题.顶级等待事件包含以下部分:
(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这三个列相关联.
案例如下图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.6、top 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所示: