passby-grav
Oracle
自带性能分析工具-
AWR
介绍和分
析
杭州华三通信技术有限公司
目
录
1 Oracle 10g
的
AWR
性能优化工具简介
< br>
2 AWR
配置
2.1 AWR
统计数据的缺省配置
2.2
修改
AWR
< br>统计数据的设置
2.3
AWR
的使用
2.3.1 AWR<
/p>
产生快照点
(
时间点
)
的方法:手动或自动方式
2.3.2 AWR
产生报表的方法:使用
SQL
命令,根据快照产生相应实例的报表
2.4
关注报表具体内容
2.4.1 Load Profile
2.4.2 Instance Efficiency Percentages
(Target 100%)
2.4.3 IO
Stats
3
对
< br>AWR
报表内容进行分析的
ADDM
工具
3.1
ADDM
概述
3.2
ADDM
的使用方法
3.2.1 <
/p>
在所有
Oracle
服务器上确认
EM
的状态,并启动
EM
进程
3.2.2
通过
IE
浏览器,登录
EM
界面
3.3
ADDM
查询和诊断到的问题有那些
3.3.1
查看集群中
Oracle
服务器的硬件配置
3.3.2
CPU
的瓶颈
3.3.3
内存结构上的瓶颈?
3.3.4 <
/p>
内存参数
SGA
、
PGA
查看和分析
3.3.5
I/O
是否存在性能瓶颈
?
(I/O
子系统是否工作正常
) ?
3.3.6
高负载的
SQL
语句
(
是否存在消耗过量系统资源的
SQL)
?
3.4 ADDM
分析的结果
4
总结
5
附录
1
Oracle 10g
的
AWR
性能优
化工具简介
AWR
(Automatic
Workload
< br>Repository)
既自动工作负载信息库是
Ora
cle
10g
新提供的收集数据库统计信息的内置工具。
p>
它比之前的
statspack
有显著的改
进,
收集的信息也更多、更全面,使用方法也更简单。
它主要采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟
< br>踪潜在的问题,如包括
AWR
内存区,历史数据存储文件
和
ASH
等部件。
< br>AWR
报告的内容繁多,官方文档也没有对所有参数给出说明。
< br>AWR
产生的报
表包括以下几部分。报表具体内容参见如
下插入的对象。
1
、
Report Summery
Cache sizes
Load
profile
Instance Efficiency
Percentages (Target 100%)
Shared Pool Statistics
Top 5 Timed Events
2
、
RAC Statistics
Global Cache Load Profile
Global Cache Efficiency Percentages
(Target local+remote 100%)
Global Cache and Enqueue Services -
Workload Characteristics
Global Cache and Enqueue Services -
Messaging Statistics
3
、
Wait Events Statistics
Time Model Statistics
Wait Class
Wait
Events
Background Wait
Events
Operating System
Statistics
Service
Statistics
Service Wait
Class Stats
4
、
SQL Statistics
SQL ordered by Elapsed Time
SQL ordered by CPU Time
SQL ordered by Gets
SQL ordered by Reads
SQL ordered by Executions
SQL ordered by Parse Calls
SQL ordered by Sharable
Memory
SQL ordered by
Version Count
SQL ordered by
Cluster Wait Time
Complete
List of SQL Text
5
、
Instance Activity Statistics
Instance Activity Stats
Instance Activity Stats - Absolute
Values
Instance Activity
Stats - Thread Activity
6
、
IO
Stats
Tablespace IO
Stats
File IO
Stats
7
、
Buffer Pool Statistics
8
、
Advisory Statistics
Instance Recovery Stats
Buffer Pool Advisory
PGA Aggr Summary
PGA Aggr Target Stats
PGA Aggr Target Histogram
PGA Memory Advisory
Shared Pool Advisory
SGA Target Advisory
Streams Pool Advisory
Java Pool Advisory
9
、
Wait Statistics
Buffer Wait Statistics
Enqueue Activity
10
、
Undo Statistics
Undo Segment Summary
Undo Segment Stats
11
、
Latch Statistics
Latch Activity
Latch Sleep Breakdown
Latch Miss Sources
Parent Latch Statistics
Child Latch Statistics
12
、
Segment Statistics
Segments by Logical Reads
Segments by Physical Reads
Segments by Row Lock Waits
Segments by ITL Waits
Segments by Buffer Busy
Waits
Segments by Global
Cache Buffer Busy
Segments
by CR Blocks Received
Segments by Current Blocks
Received
13
、
Dictionary Cache Statistics
Dictionary Cache Stats
Dictionary Cache Stats (RAC)
14
、
Library Cache Statistics
Library Cache Activity
Library Cache Activity (RAC)
15
、
Memory Statistics
Process Memory Summary
SGA Memory Summary
SGA breakdown difference
16
、
Streams Statistics
Streams CPU/IO Usage
Streams Capture
Streams Apply
Buffered Queues
Buffered Subscribers
Rule Set
17
、
Resource Limit Stats
18
、
Parameters
19
、
Global Enqueue Statistics
20
、
Global CR Served Stats
21
、
Global CURRENT Served Stats
22
、
Global Cache Transfer Stats
2 AWR
配置
2.1 AWR
统计数据的缺省配置
AWR
实质上是一个
Oracle
的内置工具,它采集与性能相关的统计数据,并从
那些统计数据
中导出性能量度,以跟踪潜在的问题。
AWR
利用多个快照
p>
(
既时
间点
)
p>
来采集数据。快照由一个称为
MMON
的新后台进程及其该进程自动地每
小时采集一次。为了节省空间,采集的数据在
7
天后自动清除。快照频率
(
SNAP_INTERVAL
)和保留时间(
RET
ENTION
)都可以由用户修改。查看
当前的缺省设置,可以
使用下面的语句:
SQL> select
snap_interval, retention from
dba_hist_wr_control;
SNAP_INTERVAL
RETENTION
+00000
01:00:00.0
+00007
00:00:00.0
这些
SQL
语句显示快照每小时采集一次,采集的数据保留
7
天。
注意:
1
、
snap_interval
取值范围为
[
10
分钟
52560000
分钟
]
2.2
修改
< br>AWR
统计数据的设置
例如,根据使用需要,修改快照时间间隔为
20
分钟,保留时间为
2
天
,通过
如下命令修改,参数以分钟为单位。
修改:
SQL>
begin
dbms_workload__snapshot_settings
(
interval => 20,
retention => 2*24*60
);
end;
/
PL/SQL
过程已成功完成。
修改后,查询结果:
SQL> select snap_interval, retention
from dba_hist_wr_control;
SNAP_INTERVAL
RETENTION
+00000
00:20:00.0
+00002
00:00:00.0
2.3
AWR
的使用
2.3.1 AWR
产生快照点
(
时间点
< br>)
的方法:手动或自动方式
1. AWR
手动产生快照
SQL> exec
dbms_workload__snapshot;
PL/SQL
过程已成功完成。
2. AWR
自动产生快照
根据所设定的快照频率(
SNAP_INTERVAL
< br>)自动产生快照
2.3.2 AWR
产生报表的方法:使用
SQL
命令,根据快照产生相应
实例的报表
使用
SQL>
@?/rdbms/admin/awrrpt
命令产生报表。该命令实际调用的是位于
名称:
$$O
RACLE_HOME/rdbms/admin/
下的脚本
awr
提供一个脚本来生成报表。
报表
的形式有两种:
text
和
html<
/p>
。
建议生成
html
格式的报表,因为可读性非常。
用脚本生成
awr
报表需要以
sys
用
户登录并执行命令。执行过程需要输入报表
类型、
天数
(用来决定显示那几天内的快照
(snapshot)
< br>)
、
begin_snap
、<
/p>
end_snap
、
以及报表名称等
p>
5
个参数。
1.
AWR
产生报表举例
(1)
推荐采用通过客户端连接实例产生报表
有两种方法执行如下命令:
通过客户端连接实例或登录到
Or
acle
服务器再连接
实例。
通过不同的方式登录,产生报表的位置是不同的。
1
、通过
Windows
客户端
DOS
窗口连接实例,产生报表的位置位于默认登录<
/p>
路径,如下:
通过
Windows
DOS
窗口登录并执行
@?/rdbms/admin/awrrpt
命令,所产生的
报表位于
C:
< br>目录下
2
、通过
Oracle
服务器连接实例,产生报表位于
/ho
me/oracle
目录下
# cd /home/oracle
# ls -l awrrpt_2_1_
-rw-r--r--
1 oracle
oinstall
324609 Oct 16
14:23 awrrpt_2_12_
(2)
查看产生快照时间点间隔和采集数据保持的天数
SQL> select snap_interval,
retention from dba_hist_wr_control;
SNAP_INTERVAL
RETENTION
+00000
01:00:00.0
+00007
00:00:00.0
注意:
默认情况下,
Oracle
数据库每隔
1
个
小时会自动生成
1
个快照点,
并保持<
/p>
7
天内的快照点的
数据,以便用户分析。
(3)
执行
SQL
命令,产生指定快照时间点
间隔的数据报表
SQL>
@?/rdbms/admin/awrrpt
Current Instance
DB Id
DB Name
Inst Num
Instance
-----------
------------
--------
------------
1286484956 ORA
2
ora2
//
生成实例
ora2
的统计报表
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would
you
like
an
HTML
report,
or
a
plain
text
report?
Enter
'html'
for
an
HTML report, or 'text'
for plain text Defaults to 'html'
输入
report_type
的值
:
html
//
报表类型
Type Specified:
html
Instances in this Workload Repository
schema
DB Id
Inst Num
DB
Name
Instance
Host
------------
--------
------------
------------
------------
* 1286484956
2
ORA
ora2
aix53
1286484956
1
ORA
ora1
aix54
Using 1286484956 for
database Id
Using
2 for instance number
Specify the number of days
of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~
Entering
the
number
of
days
(n)
will
result
in
the
most
recent
(n)
days
of
snapshots being listed.
Pressing
completed
snapshots.
输
入
num_days
的
值
:
3
//
天
数
(<
/p>
用
来
决
定
显示
那
几
天
内的
快
照
点
(snapshot))
Listing the last 3 days of Completed
Snapshots
Instance
DB Name
Snap Id
Snap Started
Snap Level
ora2
ORA
1
16 10
月
2008 12:00
1
2
16
10
月
2008 13:00
1
3
16
10
月
2008 14:00
1
4
16
10
月
2008 15:00
1
5
16
10
月
2008 16:00
1
6
16
10
月
2008 17:00
1
7
16
10
月
2008 17:15
1
//
手动生成的快照点
8
16 10
月
2008 18:00
1
9
16
10
月
2008 19:00
1
10
16
10
月
2008 20:00
1
11
16
10
月
2008 21:00
1
12
16
10
月
2008 22:00
1
13
16
10
月
2008 23:00
1
14
17
10
月
2008 00:00
1
15
17
10
月
2008 01:00
1
注:以上是根据
AWR
的默认设置,每小时产生一个快照点数据
Specify the Begin and End Snapshot
Ids
~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~
输入
begin_snap
的值
:
12
Begin Snapshot
Id specified:
12
输入
end_snap
的值
:
15
End
Snapshot Id specified:
15
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is
awrrpt_2_12_.
To use this name, press
输入
report_name
的值
:
//<
/p>
回车,
可以使用缺省值:
awrrpt_
2_12_
2.4
关注报表具体内容
报表内的参数内容
繁多,
oracle
官方网站搜索,也没有找到文档对如此众多
参
数的介绍。从存储的角度,个人认为需要关注的内容主要有:
Report Summery
Cache sizes
Load
profile
Instance Efficiency
Percentages (Target 100%)
Shared Pool Statistics
Top 5 Timed Events
IO Stats
Tablespace IO Stats
File IO Stats
2.4.1 Load Profile
Redo size
:
Logical reads:
Block changes:
Physical
reads:
Physical writes:
User calls:
Parses:
Hard parses:
Sorts:
Logons:
Executes:
Transactions:
Per
Second
1,207.60
18.45
6.23
0.01
0.40
2.42
1.39
0.02
0.80
0.04
3.91
0.42
Per
Transaction
2,906.73
44.42
14.99
0.02
0.96
5.84
3.33
0.05
1.92
0.10
9.42
% Blocks
changed per Read:
Rollback per
transaction %:
33.74
52.36
Recursive Call %:
Rows per
Sort:
85.40
11.78
1. Redo size
表示
instance
每秒
/
每事务产生的日志大小
(
单位字节
< br>)
,可表示数据库任务的繁
重与否。如日志量比较大,特
别是每个事务的日志量都比较大的时候,需要检
查是否有较大的事务在运行。
2. Logical reads
表示
p>
instance
每秒
/
< br>每事务产生的逻辑读,单位是
block
。
3. block changes
表示
instance
每秒
/
每事务
block
变化数量,数据库事务带来改变的块数量
4. Physical reads
表示
instance
每秒
/
p>
每事务产生的物理读,
单位是
block<
/p>
。
如果说逻辑读是从内存
中获得数据,<
/p>
那么,
物理读就是要实实在在的从硬盘或者磁盘阵列中获得数据,
这个取决于磁盘和阵列的相应速度。
与逻辑读同样,
物理读也可能来自于
select
语句,而不一定
仅是来自于事务。
5. Physical writes
表示
instance
每秒
/
每事务产生的物理写,
单位是
< br>block
。
这个指标在很大程度上
决定了数据库系统的写压力。
6. User
calls
表示
instance
每
秒
/
每事务产生的用户调用次数。
Us
er calls/Executes
基本代表了
每个语句的请
求次数,
Executes
越接近
Us
er calls
越好。
7.
Parses
表示
instance
每秒
/
每事务解析总次数。包括软分析和硬分析,但是不包括快
速
分析。近似反应每秒
/
事务语句的执
行次数
,
软解析每秒超过
300
次意味着你的
应用程序
效率不高,没有使用
soft parse
< br>,建议调整
session_cursor_cache
。
8. Hard parses
表示
instance
每秒
/
每事务产生的硬解析次数,这在高可用的
OLTP
环境中应当
尽可能避免,
应当正确地使用绑定变量避免这样的
情况发生。
每秒超过
100
次,
就可能说明你绑定使用的不好
9.
Sorts
表示
instance
每
秒
/
每事务产生的排序次数。
10. Executes
表示
in
stance
每秒
/
每事务产生的语句
执行次数,
包括了用户执行的
SQL
语
句与
系统执行的
SQL
语句,表示一个
系统
SQL
语句的繁忙程度。
11. Transactions
表示
instance
每秒
/
每事务产
生的事务数,
表示一个数据库系统的事务繁重程度。
这在不同的
系统中,
略有差异,
如在一个典型的交易系统中
(如:
证券、
银行)
,
可能主要是事务比较多;而在一个网站系统,可能主要是
Web
查询(
select
)
比较多。
12. Rollback per
transaction%
看回滚率是不是很高,因为回滚很耗资源。如果回滚过高,
可能说明你的数据
库经历太多的无效操作。过多的回滚可能还会带来
Undo Block
的竞争。
2.4.2 Instance Efficiency Percentages
(Target 100%)
Buffer Nowait %:
100.00
Redo NoWait %:
100.00
Buffer Hit %:
Library Hit %:
Execute to
Parse %:
Parse CPU to Parse Elapsd %:
99.96
98.67
64.62
32.10
In-memory Sort %:
Soft Parse %:
Latch Hit %:
% Non-Parse CPU:
100.00
98.43
100.00
97.68
1. Buffer Nowait %
在缓冲区中获取
Buffer
的未等待比率<
/p>
,
Buffer
Nowait<99
%
说明,有可能是有热
块
(
查找
x$$bh
的
tch
和
v$$latch_children
的
cache buffers chains)
2. Redo NoWait %
在
Redo
缓冲区获取
Buffer
的
未等待比率
3. Buffer Hit %
数据块在数据缓冲区中得命中率。如果在典型的
OLTP
环境中,通常应在
95%
以上。
否
则应考虑加大
db_cache_size,
但是大量的非选择
的索引也会造成该值很
高(大量的
db file
sequential read
)。
4. In-memory Sort %
在内存中的排序率。
5.
Library Hit %
主要代表
sql
在共享区的命中率,通常在
95%
以上,否则,需要要
考虑加大共
享池,绑定变量,修改
cursor_sharin
g
等参数。
6. Soft
Parse %
近似看作
sql
在共
享区的命中率,小于
95%
,需要考虑到绑定。如果低于
80%
,
那么可能是
sql
没有被重用。
7.
Execute to Parse %
sql
语
句
解
析
后
被
重
复
执
行
的
次
数
,
如
果
过
低<
/p>
,
可
以
考
虑
设
置
session_cached_cursors
参数
,
公式为
100 * (1 -
Parses/Executions) = Execute to
Parse
所以如果系统
Parses
> Executions,
就可能出现该比
?
小于
0
的情况
,
该值
<0
通常说明
sha
red
pool
设置或效
?
存在问题造成反复解析,
reparse
可能较
严重
,
或者可是同
snapshot<
/p>
有关如果该值为负值或者极低
,
通常说明
数据库性能存在问
题。
8.
Latch Hit %
表示内部结构维护锁命中率,通常高于
99
%。其值低是因为
shared_pool_size<
/p>
过大或没有使用绑定变量导致硬解析过多。
9. Parse CPU to Parse Elapsd %
< br>解析实际运行事件
/
解析实际运行时间。
2.4.3 IO Stats
1.
Tablespace IO Stats
ordered by IOs
(Reads + Writes) desc
Read
s
Av
Reads/
s
0
Av
Rd(ms
)
2.50
Av
Blks/R
d
1.06
Write
s
Av
Writes/
s
0
Buffe
r
Av
Buf
Wt(ms
Tablespace
Waits
)
2
0.00
SYSAUX
UNDOTBS
2
SYSTEM
32
1,283
0
0
0.00
0.00
480
0
0
0.00
24
0
0.42
1.00
65
0
0
0.00
2. File IO Stats
ordered by
Tablespace, File
Av
Read
s/s
Av
Rd(
ms)
Av
Blks/
Rd
Av
Write
s/s
Buff
er
Wai
ts
Av
Buf
Wt(
ms)
Tablesp
ace
Filename
Rea
ds
Writ
es
SYSAU
X
SYSTE
M
UNDOT
BS2
/dev/rorasys
aux
/dev/rorasyst
em
/dev/roraund
otbs2
32
0
2.50
1.06
1,28
3
0
2
0.00
24
0
0.42
1.00
65
0
0
0.00
0
0
480
0
0
0.00
3
对
< br>AWR
报表内容进行分析的
ADDM
工具
3.1
ADDM
概述
现在
Oracle Database 10g
中推出的这个引擎称为自动数据库诊断监控程序既
ADDM
(
Automatic
Performance
Diagnosis
)
。为了作出决策,
ADDM
使用了
由
AWR
采集的数据。在
AWR
进行的每一次快照采集之后,调用
ADDM
< br>来检
查量度并生成建议。因此,实际上拥有了一个一天二十四小时工作的自动数据
库管理员,
它主动地分析数据并生成建议,
从而把
DBA
解放出来,
使能够关
注
更具有战略意义的问题。
缺省情况下,在安装
Oracle 10g RAC
软件时
,
即安装
EM
10g
(
Oracle Enterprise
Manager
)
,
在概念
上它与以前版本的不同之处在于,它不是客户端安装的工具;