author:skate
time:2010-03-25
如何查看awr/statspack报表,来定位系统的问题
数据库的性能指标一般都有什么?只有定好指标才能判定系统的性能,性能参考指标一般有如下几个:
1.响应时间:平均每事务的响应时间和,系统的响应速度
2. cpu时间:平均每事务所消耗的cpu时间(和响应时间不同,因为这里不报错cpu等待时间)
3. 等待时间:等待事件的平均每次等待时间
4. 逻辑读:就是一致读
5. 物理读:从disk读
6. 事务数/秒:平均每秒的事务数
7. redo size/秒:每秒产生的redo
8. redo size/事务:每事务产生的redo
9. 系统cpu(user%+sys%):系统cpu使用百分比
10. 系统内存使用率
11. 磁盘系统使用率
从awr/statspack报表判断系统性能,一般主要看事务响应时间和等待时间,来判断数据库是否正常为外界应用提供服务.
一般oltp系统的响应时间在15s内都是可以接受的。
Awr:
DB Name | DB Id | Instance | Inst num | Release | RAC | Host |
DBTICA | 4056410298 | Orcl | 1 | 10.2.0.1.0 | NO | db3 |
| Snap Id | Snap Time | Sessions | Cursors/Session |
Begin Snap: | 8190 | 13-Mar-10 21:00:46 | 69 | 4.3 |
End Snap: | 8192 | 13-Mar-10 23:00:50 | 61 | 4.5 |
Elapsed: |
| 120.07 (mins) |
|
|
DB Time: |
| 30.40 (mins) |
|
|
Cache Sizes
| Begin | End |
|
|
Buffer Cache: | 19,872M | 19,872M | Std Block Size: | 8K |
Shared Pool Size: | 2,608M | 2,608M | Log Buffer: | 14,360K |
Load Profile
| Per Second | Per Transaction |
Redo size: | 65,916.00 | 7,091.88 |
Logical reads: | 35,000.51 | 3,765.69 |
Block changes: | 444.38 | 47.81 |
Physical reads: | 0.02 | 0.00 |
Physical writes: | 12.19 | 1.31 |
User calls: | 2,323.80 | 250.02 |
Parses: | 593.14 | 63.82 |
Hard parses: | 1.20 | 0.13 |
Sorts: | 559.07 | 60.15 |
Logons: | 0.05 | 0.01 |
Executes: | 1,224.35 | 131.73 |
Transactions: | 9.29 |
|
% Blocks changed per Read: | 1.27 | Recursive Call %: | 50.27 |
Rollback per transaction %: | 0.02 | Rows per Sort: | 0.13 |
Instance Efficiency Percentages (Target 100%)
Buffer Nowait %: | 100.00 | Redo NoWait %: | 100.00 |
Buffer Hit %: | 100.00 | In-memory Sort %: | 100.00 |
Library Hit %: | 99.93 | Soft Parse %: | 99.80 |
Execute to Parse %: | 51.55 | Latch Hit %: | 99.99 |
Parse CPU to Parse Elapsd %: | 71.22 | % Non-Parse CPU: | 94.67 |
Shared Pool Statistics
| Begin | End |
Memory Usage %: | 82.93 | 89.01 |
% SQL with executions>1: | 89.78 | 83.82 |
% Memory for SQL w/exec>1: | 80.34 | 75.70 |
Top 5 Timed Events
Event | Waits | Time(s) | Avg Wait(ms) | % Total Call Time | Wait Class |
CPU time |
| 1,418 |
| 77.7 |
|
enq: TX - contention | 144 | 320 | 2,221 | 17.5 | Other |
log file sync | 29,576 | 18 | 1 | 1.0 | Commit |
latch: shared pool | 254 | 16 | 64 | .9 | Concurrency |
log file parallel write | 74,540 | 12 | 0 | .7 | System I/O |
名词解释:db time, cpu time, elapsed time
db time
db time是指oracle花费在cpu上和等待事件上的时间,所以说,db_time=cpu_time+waited time。db time已经做为10g awr的一个采样指标,在上面的awr中可以看到,在9iR2上,我们同样可以通过top 5部分计算出来。在本例中,db time=1,418【CPU time】/77.7【%】/60=30.41min(和数据库监控值差一点啊)。这与awr db time一栏的采样数值基本是一致的.其实用任何等待事件都可以计算的
cpu time
Oracle引入CPU time是在9iR2版本,cpu time是衡量一个数据库负载的重要指标,可以将它看成是“CPU used by this session”的收集汇总。
9iR2之前,top 5部分称之为“Top 5 Wait Events”,其中cpu time并不包含在top 5内,该部分是纯粹的等待事件的汇总。而在9iR2之后,Top 5称之为“top 5 timed events”,从字面上也可以发现二者的区别。oracle将cpu time作为一个事件纳入top 5中,新的top 5包含cpu time和waited time 2部分,也就是db time(上面提到的)。
我们可以通过cpu time与waited time的比值,来了解库的负载和运行情况,通常较高的比例代表较好的性能;而通过平均每颗CPU耗费的cpu time和Elapsed time的比例,可以评估整个系统在CPU方面是否存在瓶颈.
elapsed time
elapsed time是指物理的流逝时间,这是一个采样的时间跨度基数
下面几个需要计算的性能指标,其他的可以直接在awr/statspack查到
1. response time
基于transaction或者user call的平均响应时间,可以看做是我们做性能优化效果的一个证据.个人觉得没必要太注重这个数值。response time=service time(cpu time) + waited time。放到我们前面的这个awr中,平均事务响应时间也就可以近似这样计算:avg trans response time =1,418【CPU time】/77.7【%】/60/120.07【Elapsed】/9.29【transactions per second】=0.027s
2. 等待时间:
查看最多的等待事件的平均每次等待事件,在awr中直接就给计算出来了啊,在Top 5 Timed Events 中的avg wait(ms)就表示平均每次等待事件,在statspack就要自己计算了, avg time per wait=320【enq: TX - contention】/144=2.222s=2221ms(大约等于)
3. cpu时间
平均每事务的消耗cpu时间,在10g中可以直接查询到。但在9i中就需要计算
cpu time per trans =1418【cpu time】/9.29【transactions per second】/120.07【Elapsed】/60=0.021s
----end-----