WORKLOAD REPOSITORY report for
DB Name
DB Id
Instance
Inst num
Release
RAC
Host
ICCI
1314098396
ICCI1
1
10.2.0.3.0
YES
HPGICCI1
Snap Id
Snap Time
Sessions
Cursors/Session
Begin Snap:
2678
25-Dec-08 14:04:50
24
1.5
End Snap:
2680
25-Dec-08 15:23:37
26
1.5
Elapsed:
 
78.79 (mins)
 
 
DB Time:
 
11.05 (mins)
 
 
Elapsed表示整个AWR报表统计的时间长度
DB Time是记录在服务器花在数据库运算(非后台进程)和等待(非空闲等待)上的时间
DB Time=cpu time+wait time(不包含空闲等待)(非后台进程)
DB Time不包括Oracle后台进程消耗的时间。如果DB Time远远小于Elapsed时间,说明数据库比较空闲。
上述报表中
Snapshot时间间隔约为79分钟,cpu就公有8*79=632分钟。DB Time为11.05分钟,则:cpu花费了11.05分钟在处理oracle非空闲等待和运算上(比如逻辑读),也就是说cpu有11.05/632=0.017%花费在处理oracle的操作上。
从awr report的Elapsed time和DB Time就能大概了解db的负载,计算公式可参考为:cpu负载=DB Time/(cpu数*Elapsed)*100%
在79分钟里(其间收集了3次快照数据),数据库耗时11分钟,RDA数据中显示系统有8个逻辑CPU(4个物理CPU),平均每个CPU耗时1.4分钟,CPU利用率只有大约2%(1.4/79)。说明系统压力非常小。
可是对于批量系统,数据库的工作负载总是集中在一段时间内。如果快照周期不在这一段时间内,或者快照周期跨度太长而包含了大量的数据库空闲时间,所得出的分析结果是没有意义的。这也说明选择分析时间段很关键,要选择能够代表性能问题的时间段。
Report Summary
Cache Sizes
Begin
End
Buffer Cache:
3,344M
3,344M
Std Block Size:
8K
Shared Pool Size:
704M
704M
Log Buffer:
14,352K
显示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
Per Second
Per Transaction
DB Time(s)
2.4
0.0
Redo size:
918,805.72
775,912.72
Logical reads:
3,521.77
2,974.06
Block changes:
1,817.95
1,535.22
Physical reads:
68.26
57.64
Physical writes:
362.59
306.20
User calls:
326.69
275.88
sql存储过程实例Parses:
38.66
32.65
Hard parses:
0.03
0.03
Sorts:
0.61
0.51
Logons:
0.01
0.01
Executes:
354.34
299.23
Transactions:
1.18
 
% Blocks changed per Read:
51.62
Recursive Call %:
51.72
Rollback per transaction %:
85.49
Rows per Sort:
>###
显示数据库负载概况,将之与基线数据比较才具有更多的意义,如果每秒或每事务的负载变化不大,说明应用运行比较稳定。单个的报告数据只说明应用的负载情况,绝大多数据并没有一个所谓“正确”的值,然而Logons大于每秒1~2个、Hard parses大于每秒100、全部parses超过每秒300表明可能有争用问题。
DB Time(s):每秒内用于DB处理的时间,其他时间为等待时间
Redo size:每秒/每事务产生的redo大小(单位字节),可标志数据库任务的繁重程序。其中Per Second表示每秒中产生的redo的字节数,Per Transaction表示每个事务产生的redo的字节数,可以通过后者可以看到事务的大小,协助判断是否commit次数太多。例如per second很大,而per transaction很小,说明commit次数太多。通常在很繁忙的系统中日志生成量可能达到上百k,甚至几百k。
Logical reads:每秒/每事务逻辑读的块数(我们可以这样认为,block在内存中,我们每一次读一块内存,就相当于一次逻辑读),单位为块,在良好的OLTP环境中,Logical reads/Executes不会超过50,一般只有10左右,如果该指标较大,表示语句可能不够优化,需要具体分析,在该示例中,3,521.77/354.34,那么在OLAP中呢?
Block changes:每秒/每事务修改的块数,即每秒中多少个块发生变化
Physical reads:每秒/每事务物理读的块数,即每秒数据库从磁盘读取的块个数
Physical writes:每秒/每事务物理写的块数,即每秒有多少个块接受了数据库写入数据。
User calls:每秒/每事务用户call次数User calls/Executes基本代表每个语句的请求次数,Executes越接近User calls越好。
Parses:每秒的SQL语句解析的次数,超过300即需要关注,可以考虑调整参数session_cursor_cache来改善解析次数过高的现象。
Hard parses:其中硬解析的次数,如果硬解析次数太高,说明SQL重用率不高。例如超过1
00,基本都是由于不使用bind var所导致的,导致cpu使用率的问题,极有使得性能急剧下降。
Sorts:每秒/每事务的排序次数
Logons:每秒/每事务登录的次数
Executes:每秒/每事务SQL执行次数,包括用户执行的sql语句与系统执行的sql语句,表示一个系统sql的繁忙程度。
Transactions:每秒产生的事物个数,反映数据库负载程度,不同的系统,略有差异,在典型的交易系统中,事务较多,而网站系统,可能select查询较多。
Blocks changed per Read:表示逻辑读用于修改数据块的比例
Recursive Call:递归调用占所有操作的比率
Rollback per transaction:每事务的回滚率
Rollbacks:表示数据库中事务的回退率,如果不是因为业务本身的原因,通常应该小于10%为好,回退是一个很消耗资源的操作。
Rows per Sort:每次排序的行数
:
Oracle的硬解析和软解析
  提到软解析(soft parse)和硬解析(hard parse),就不能不说一下Oraclesql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:
  1、语法检查(syntax check)
  检查此sql的拼写是否语法。
  2、语义检查(semantic check)
  诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。
  3、对sql语句进行解析(parse)
  利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)
  4、执行sql,返回结果(execute and return)
  其中,软、硬解析就发生在第三个过程里。
  Oracle利用内部的hash算法来取得该sqlhash值,然后在library cache里查是否存在该hash值;
  假设存在,则将此sqlcache中的进行比较;
  假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。
  诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。
  创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。
Instance Efficiency Percentages (Target 100%)
Buffer Nowait %:
100.00
Redo NoWait %:
100.00
Buffer Hit %:
98.72
In-memory Sort %:
99.86
Library Hit %:
99.97
Soft Parse %:
99.92
Execute to Parse %:
89.09
Latch Hit %:
99.99
Parse CPU to Parse Elapsd %:
7.99
% Non-Parse CPU:
99.95
本节包含了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时,未进行等待的比率,越高越好。
buffer hit%表示进程从内存中到数据块的比率,监视这个值是否发生重大变化比这个值本身更重要。对于一般的OLTP系统,命中率通常在95@以上,如果此值低于80%,应该给数据库分配更多的内存,考虑加大db_cache_size在数据仓库OLAP环境中,数据缓冲命中率不是一个重要的指标,因为OLAP数据库主要是物理读,甚至是直接读,该命中率不可能高。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。