DB Name
|
DB Id
|
Instance
|
Inst num
|
Release
|
RAC
|
Host
|
TEST1212
|
3399531915
|
test1212
|
1
|
10.2.0.1.0
|
NO
|
DANDAN
|
Snap Id
|
Snap Time
|
Sessions
|
Cursors/Session
|
Begin Snap:
|
1
|
20-12月-10 21:01:03
|
15
|
2.5
|
End Snap:
|
2
|
20-12月-10 22:00:52
|
17
|
5.4
|
Elapsed:
|
|
59.81 (mins)
|
|
|
DB Time:
|
|
0.83 (mins)
|
|
|
DBid是唯一的数据库的标示,在rman中也能看到该值
C:"Documents and Settings"sure>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期一 12月 20 22:34:01 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: TEST1212 (DBID=3399531915)
RMAN>
DB Time不包括Oracle后台进程消耗的时间。如果DB Time远远小于Elapsed时间,说明数据库比较空闲。计算公式:
在59分钟里(其间收集了2次快照数据),数据库耗时0.83分钟,系统有1个CPU,平均CPU耗时0.83分钟,CPU利用率只有大约1.38%(0.83/59.81)。说明系统压力非常小(该系统啥都没做J)。
对于批量系统,数据库的工作负载总是集中在一段时间内。如果快照周期不在这一段时间内,或者快照周期跨度太长而包含了大量的数据库空闲时间,所得出的分析结果是没有意义的。这也说明选择分析时间段很关键,要选择能够代表性能问题的时间段。
Cache Sizes
Begin
|
End
|
Buffer Cache:
|
412M
|
408M
|
Std Block Size:
|
8K
|
Shared Pool Size:
|
156M
|
160M
|
Log Buffer:
|
6,968K
|
显示SGA中每个区域的大小,可用来与初始参数值比较。
shared pool主要包括library cache和dictionary cache。library cache用来存储最近解析(或编译)后SQL、PL/SQL。library cache用来存储最近引用的数据字典。发生在library cache或dictionary cache的cache miss代价要比发生在buffer cache的代价高得多。因此shared pool的设置要确保最近使用的数据都能被cache,也就是尽可能的保持被命中(即传说中的命中率)。
Load Profile
Per Second
|
Per Transaction
|
Redo size:
|
4,600.89
|
18,956.88
|
Logical reads:
|
427.08
|
1,759.70
|
Block changes:
|
29.02
|
119.57
|
Physical reads:
|
1.84
|
7.57
|
Physical writes:
|
0.37
|
1.52
|
User calls:
|
0.11
|
0.47
|
Parses:
|
5.13
|
21.14
|
Hard parses:
|
0.59
|
2.44
|
Sorts:
|
3.03
|
12.47
|
Logons:
|
0.03
|
0.14
|
Executes:
|
17.41
|
71.72
|
Transactions:
|
0.24
|
|
% Blocks changed per Read:
|
6.80
|
Recursive Call %:
|
99.93
|
Rollback per transaction %:
|
0.00
|
Rows per Sort:
|
189.64
|
显示数据库负载概况,将之与基线数据比较才具有更多的意义,如果每秒或每事务的负载变化不大,说明应用运行比较稳定。单个的报告数据只说明应用的负载情况,绝大多数据并没有一个所谓“正确”的值,然而Logons大于每秒1~2个、Hard parses大于每秒100、全部parses超过每秒300表明可能有争用问题。
Redo size:每秒/每事务产生的redo大小(单位字节),可标志数据库任务的繁重程序。
Logical reads:每秒/每事务逻辑读的块数
Block changes:每秒/每事务修改的块数
Physical reads:每秒/每事务物理读的块数
Physical writes:每秒/每事务物理写的块数
User calls:每秒/每事务用户call次数
Parses:SQL解析的次数
Hard parses:其中硬解析的次数,硬解析太多,说明SQL重用率不高。
Sorts:每秒/每事务的排序次数
Logons:每秒/每事务登录的次数
Executes:每秒/每事务SQL执行次数
Transactions:每秒事务数
Blocks changed per Read:表示逻辑读用于修改数据块的比例
Recursive Call:递归调用占所有操作的比率
Rollback per transaction:每事务的回滚率
Rows per Sort:每次排序的行数
Instance Efficiency Percentages (Target 100%)
Buffer Nowait %:
|
100.00
|
Redo NoWait %:
|
100.00
|
Buffer Hit %:
|
99.57
|
In-memory Sort %:
|
100.00
|
Library Hit %:
|
92.37
|
Soft Parse %:
|
88.46
|
Execute to Parse %:
|
70.52
|
Latch Hit %:
|
99.99
|
Parse CPU to Parse Elapsd %:
|
84.03
|
% Non-Parse CPU:
|
80.34
|
这一段包含了Oracle关键指标的内存命中率及其它数据库实例操作的效率。
Buffer Hit Ratio:也称Cache Hit Ratio,Library Hit ratio也称Library Cache Hit ratio。同Load Profile一节相同,这一节也没有所谓“正确”的值,而只能根据应用的特点判断是否合适。在一个使用直接读执行大型并行查询的DSS环境,20%的Buffer Hit Ratio是可以接受的,而这个值对于一个OLTP系统是完全不能接受的。根据Oracle的经验,对于OLTPT系统,Buffer Hit Ratio理想应该在90%以上。
Buffer Nowait:表示在内存获得数据的未等待比例。
buffer hit:表示进程从内存中找到数据块的比率,监视这个值是否发生重大变化比这个值本身更重要。对于一般的OLTP系统,如果此值低于80%,应该给数据库分配更多的内存。
Redo NoWait:表示在LOG缓冲区获得BUFFER的未等待比例。如果太低(可参考90%阀值),考虑增加LOG BUFFER。
library hit:表示Oracle从Library Cache中检索到一个解析过的SQL或PL/SQL语句的比率,当应用程序调用SQL或存储过程时,Oracle检查Library Cache确定是否存在解析过的版本,如果存在,Oracle立即执行语句;如果不存在,Oracle解析此语句,并在Library Cache中为它分配共享SQL区。低的library hit ratio会导致过多的解析,增加CPU消耗,降低性能。如果library hit ratio低于90%,可能需要调大shared pool区。
Latch Hit:Latch是一种保护内存结构的锁,可以认为是SERVER进程获取访问内存数据结构的许可。要确保Latch Hit>99%,否则意味着Shared Pool latch争用,可能由于未共享的SQL,或者Library Cache太小,可使用绑定变更或调大Shared Pool解决。
Parse CPU to Parse Elapsd:解析实际运行时间/(解析实际运行时间+解析中等待资源时间),越高越好。
Non-Parse CPU:SQL实际运行时间/(SQL实际运行时间+SQL解析时间),太低表示解析消耗时间过多。
Execute to Parse:是语句执行与分析的比例,如果要SQL重用率高,则这个比例会很高。该值越高表示一次解析后被重复执行的次数越多。
In-memory Sort:在内存中排序的比率,如果过低说明有大量的排序在临时表空间中进行。考虑调大PGA。
Soft Parse:软解析的百分比(softs/softs+hards),近似当作sql在共享区的命中率,太低则需要调整应用使用绑定变量。
Shared Pool Statistics
Begin
|
End
|
Memory Usage %:
|
45.69
|
56.15
|
% SQL with executions>1:
|
52.03
|
32.99
|
% Memory for SQL w/exec>1:
|
87.15
|
60.31
|
Memory Usage %:对于一个已经运行一段时间的数据库来说,共享池内存使用率,应该稳定在75%-90%间,如果太小,说明Shared Pool有浪费,而如果高于90,说明共享池中有争用,内存不足。
SQL with executions>1:执行次数大于1的sql比率,如果此值太小,说明需要在应用中更多使用绑定变量,避免过多SQL解析。
Memory for SQL w/exec>1:执行次数大于1的SQL消耗内存的占比。
Top 5 Timed Events
Event
|
Waits
|
Time(s)
|
Avg Wait(ms)
|
% Total Call Time
|
Wait Class
|
CPU time
|
|
37
|
|
74.1
|
|
db file sequential read
|
3,312
|
12
|
4
|
24.1
|
User I/O
|
control file parallel write
|
1,198
|
5
|
4
|
9.5
|
System I/O
|
os thread startup
|
58
|
2
|
33
|
3.9
|
Concurrency
|
db file scattered read
|
432
|
2
|
4
|
3.4
|
User I/O
|
posted on 2010-12-20 23:06
xrzp 阅读(638)
评论(0) 编辑 收藏 所属分类:
oracle-优化