详细分析_ORACLE_AWR报告 下载本文

. . . .

详细分析ORACLE AWR报告 AWR 是 Oracle 10g 版本 推出的新特性, 全称叫Automatic Workload Repository-自动负载信息库, AWR 是通过对比两次快,照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分。 WORKLOAD REPOSITORY report for DB Name ICCI DB Id Instance Inst num Release RAC Host HPGICCI1 1314098396 ICCI1 1 10.2.0.3.0 YES Begin Snap: End Snap: Elapsed: DB Time: Snap Id 2678 2680 Snap Time 25-Dec-08 14:04:50 25-Dec-08 15:23:37 78.79 (mins) 11.05 (mins) Sessions 24 26 Cursors/Session 1.5 1.5 DB Time不包括Oracle后台进程消耗的时间。如果DB Time远远小于Elapsed时间,说明数据库比较空闲。

db time= cpu time + wait time(不包含空闲等待) (非后台进程) 说白了就是db time就是记录的服务器花在数据库运算(非后台进程)和等待(非空闲等待)上的时间

DB time = cpu time + all of nonidle wait event time

在79分钟里(其间收集了3次快照数据),数据库耗时11分钟,RDA数据中显示系统有8个逻辑CPU(4个物理CPU),平均每个CPU耗时1.4分钟,CPU利用率只有大约2%(1.4/79)。说明系统压力非常小。

列出下面这两个来做解释: Report A:

Snap Id Snap Time Sessions Curs/Sess

--------- ------------------- -------- --------- Begin Snap: 4610 24-Jul-08 22:00:54 68 19.1 End Snap: 4612 24-Jul-08 23:00:25 17 1.7 Elapsed: 59.51 (mins) DB Time: 466.37 (mins)

Report B:

Snap Id Snap Time Sessions Curs/Sess

--------- ------------------- -------- --------- Begin Snap: 3098 13-Nov-07 21:00:37 39 13.6 End Snap: 3102 13-Nov-07 22:00:15 40 16.4 Elapsed: 59.63 (mins)

专业资料 精心整理

. . . .

DB Time: 19.49 (mins)

服务器是AIX的系统,4个双核cpu,共8个核: /sbin> bindprocessor -q

The available processors are: 0 1 2 3 4 5 6 7 先说Report A,在snapshot间隔中,总共约60分钟,cpu就共有60*8=480分钟,DB time为466.37分钟,则:

cpu花费了466.37分钟在处理Oralce非空闲等待和运算上(比方逻辑读)

也就是说cpu有 466.37/480*100% 花费在处理Oracle的操作上,这还不包括后台进程 看Report B,总共约60分钟,cpu有 19.49/480*100% 花费在处理Oracle的操作上 很显然,2中服务器的平均负载很低。

从awr report的Elapsed time和DB Time就能大概了解db的负载。

可是对于批量系统,数据库的工作负载总是集中在一段时间内。如果快照周期不在这一段时间内,或者快照周期跨度太长而包含了大量的数据库空闲时间,所得出的分析结果是没有意义的。这也说明选择分析时间段很关键,要选择能够代表性能问题的时间段。 Report Summary Cache Sizes

Buffer Cache: Shared Pool Size: Begin 3,344M 704M End 8K 14,352K 3,344M Std Block Size: 704M Log Buffer: 显示SGA中每个区域的大小(在AMM改变它们之后),可用来与初始参数值比较。

shared pool主要包括library cache和dictionary cache。library cache用来存储最近解析(或编译)后SQL、PL/SQL和Java classes等。library cache用来存储最近引用的数据字典。发生在library cache或dictionary cache的cache miss代价要比发生在buffer cache的代价高得多。因此shared pool的设置要确保最近使用的数据都能被cache。

Load Profile

Redo size: Logical reads: Block changes: Physical reads: Physical writes: User calls: Parses: Hard parses: Per Second 918,805.72 3,521.77 1,817.95 68.26 362.59 326.69 38.66 0.03 Per Transaction 775,912.72 2,974.06 1,535.22 57.64 306.20 275.88 32.65 0.03 专业资料 精心整理

. . . .

Sorts: Logons: Executes: Transactions: % Blocks changed per Read: Rollback per transaction %: 0.61 0.01 354.34 1.18 51.62 Recursive Call %: 85.49 Rows per Sort: 0.51 0.01 299.23 51.72 ######## 显示数据库负载概况,将之与基线数据比较才具有更多的意义,如果每秒或每事务的负载变化不大,说明应用运行比较稳定。单个的报告数据只说明应用的负载情况,绝大多数据并没有一个所谓“正确”的值,然而Logons大于每秒1~2个、Hard parses大于每秒100、全部parses超过每秒300表明可能有争用问题。 Redo size:每秒产生的日志大小(单位字节),可标志数据变更频率, 数据库任务的繁重与否。Logical reads:每秒/每事务逻辑读的块数.平决每秒产生的逻辑读的block数。Logical Reads= Consistent Gets + DB Block Gets Block changes:每秒/每事务修改的块数 Physical reads:每秒/每事务物理读的块数 Physical writes:每秒/每事务物理写的块数 User calls:每秒/每事务用户call次数

Parses:SQL解析的次数.每秒解析次数,包括fast parse,soft parse和hard parse三种数量的综合。 软解析每秒超过300次意味着你的\应用程序\效率不高,调整session_cursor_cache。在这里,fast parse指的是直接在PGA中命中的情况(设置了session_cached_cursors=n);soft parse是指在shared pool中命中的情形;hard parse则是指都不命中的情况。

Hard parses:其中硬解析的次数,硬解析太多,说明SQL重用率不高。每秒产生的硬解析次数, 每秒超过100次,就可能说明你绑定使用的不好,也可能是共享池设置不合理。这时候可以启用参数cursor_sharing=similar|force,该参数默认值为exact。但该参数设置为similar时,存在bug,可能导致执行计划的不优。

Sorts:每秒/每事务的排序次数 Logons:每秒/每事务登录的次数 Executes:每秒/每事务SQL执行次数

Transactions:每秒事务数.每秒产生的事务数,反映数据库任务繁重与否。

Blocks changed per Read:表示逻辑读用于修改数据块的比例.在每一次逻辑读中更改的块的百分比。

Recursive Call:递归调用占所有操作的比率.递归调用的百分比,如果有很多PL/SQL,那么这个值就会比较高。

Rollback per transaction:每事务的回滚率.看回滚率是不是很高,因为回滚很耗资源 ,如果回滚率过高,可能说明你的数据库经历了太多的无效操作 ,过多的回滚可能还会带来Undo Block的竞争 该参数计算公式如下: Round(User rollbacks / (user commits + user rollbacks) ,4)* 100% 。 Rows per Sort:每次排序的行数 注:

专业资料 精心整理