暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
AWR報告詳解.doc
53
38页
6次
2023-12-04
5墨值下载
AWR Oracle 10g 版本 推出的新特性, 全称
Automatic Workload Repository-自动负载信
息库, AWR 是通过对比两次快照(snapshot)收集
到的统计信息,来生成报表数据,生成的报表
包括多个部分
WORKLOAD
REPOSITORY report for
DB
Name
DB Id
Instanc
e
Inst num
Releas
e
RAC Host
ICCI 131409839
6
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)
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
逻辑 CPU4 个物理 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
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 cachelibrary cache 用来存储最近
解析(或编译)后 SQLPL/SQL Java
classes 等。Dictionary cache 用来存储最近引
用的数据字典。发生在 library cache
dictionary cache cache miss 代价要比发生在
buffer cache 的代价高得多。因此 shared pool
的设置要确保最近使用的数据都能被 cache
Load Profile
Per Second Per Transaction
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
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 表明可能有争用问题。
Redo size每秒产生的日志大小(单位字节)
可标志数据变更频率, 数据库任务的繁重与否。
Logical reads每秒/每事务逻辑读的块数.
决每秒产生的逻辑读的 block 数。Logical
Reads= Consistent Gets + DB Block Gets
Block changes每秒/每事务修改的块数
Physical reads每秒/每事务物理读的块数
Physical writes每秒/每事务物理写的块数
User calls每秒/每事务用户 call 次数
ParsesSQL 解析的次数.每秒解析次数,包括
fast parsesoft parse hard parse 三种数量
的综合。 软解析每秒超过 300 次意味着你"
用程"率不高,调整
session_cursor_cache。在这里,fast parse
的是直接 PGA 中的情况(设置了
session_cached_cursors=nsoft 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每次排序的行数
:
Oracle 解析和软解析
  提到软解析(soft prase)解析(hard
prase),就不能不说一下 Oracle sql 的处理过
程。当你发出一 sql 语句交付 Oracle,在
获取结果Oracle 对此 sql 将进行步骤
的处理过程:
  1语法检查(syntax check)
  检查 sql 写是否语法
  2检查(semantic check)
  诸检查 sql 语句中的访问对是否存在
用户是否具备相应的权限
  3、对 sql 语句进行解析(prase)
  利用内部算 sql 进行解析,生成解析
(parse tree)及执行计(execution plan)
  4 sql返回结果(execute and
return)
  其中,软、解析就发生在三个过程里。
  Oracle 利用内部的 hash sql
hash 值,然后在 library cache 查找是否存
hash
  假设存在,则将此 sql cache 中的进行比
  假设“相同”,就将利用有的解析
,而省略化器的关工作。这也就是
软解析的过程。
  诚然,如果上面的 2 设中任有一个不
那么优化器都将进行创建解析、生成
行计的动作。这个过程就叫解析。
  创建解析、生成行计对于 sql
来说是开销昂贵的动作,所,应当极避免
解析,量使用软解析。
Instance Efficiency
Percentages (Target 100%)
Buffer Nowait %: 100.00 Redo NoWait %:
Buffer Hit %: 98.72 In-memory Sort %:
Library Hit %: 99.97 Soft Parse %:
Execute to Parse %: 89.09 Latch Hit %:
Parse CPU to Parse Elapsd %: 7.99 % Non-Parse CPU:
本节包含了 Oracle 关键标的内存中率
其它数据库实例操作的率。其中 Buffer Hit
Ratio 也称 Cache Hit RatioLibrary Hit ratio
Library Cache Hit ratio Load Profile 一节
相同,这一节也没有所谓“正确”的值,而只能
据应用的特点判断是否合。在一个使用直接
行大并行查询 DSS 环境20%
Buffer Hit Ratio 是可以接受的,而这个值对于
一个 OLTP 系统是全不能接受的。
Oracle 经验,对于 OLTPT 系统,Buffer Hit
Ratio 90%上。
Buffer Nowait 表示在内存得数据的等待
。在缓冲区中获取 Buffer 等待比率。
Buffer Nowait 的这个值一般需要大于 99%。否
则可能存在争用,可在后面的等待事中进
buffer hit 表示进程从内存中到数据块的比
率,监视这个值是否发生重大变化比这个值本
更重要。对于一 OLTP 系统,如果此值
低于 80%,应该给数据库分更多的内存。
据块在数据缓冲区中的中率,通常应在 95%
上。否则,小于 95%调整重要的参数,
小于 90%可能是要 db_cache_size。一个高
中率,不一定代表这个系统的性能是最
的,比如大量的非选择性的引被频繁访问,
会造中率很高的假相(大量的 db file
sequential read),是一个比较低的中率,
对这个系统的性能产生影响
中率的变,往往是一个不的信息。
如果中率大,可以检查 top buffer get
SQL导致大量逻辑读的语句引,如
中率小,可以检查 top physical
reads SQL检查产生大量物理读的语句,主要
那些没有使用引或者引被删除的。
Redo NoWait 表示在 LOG 缓冲
BUFFER 等待比。如果太低(可参
90%值)考虑增加 LOG BUFFER redo
buffer 1M 时,就要写到 redo log 文件
般当 redo buffer 设置超过 1M,不太可能
存在等待 buffer 空间分的情况。当前,一
设置为 2M redo 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 区。STATEMENT 在共区的
率,通常应 95%上,否则要要
大共享池;使用定变量修改
cursor_sharing 等参数。
Latch HitLatch 是一种保内存结
以认为是 SERVER 进程获取访问内存数据结
可。要确保 Latch Hit>99%,否则意味着
Shared Pool latch 争用,可能
SQL,或者 Library Cache 太小,可使用定变
更或 Shared Pool 解决。要确保>99%,否
则存在重的性能问题。当该值出问题的时
们可以借助后面的等待时间和 latch 分析
查找解决问题。
Parse CPU to Parse Elapsd解析实际运行
时间/(解析实际运行时间+解析中等待资源时间)
越好计算公式为:Parse CPU to Parse
Elapsd %= 100*(parse time cpu / parse time
elapsed):解析实际运行时间/(解析实际
行时间+解析中等待资源时间)。如果比率为
100%,意味着 CPU 等待时间为 0,没有任
待。
Non-Parse CPU SQL 实际运行时间/(SQL
实际运行时间+SQL 解析时间),太低表示解析
消耗时间过多。计算公式为:% Non-Parse
CPU =round(100*1-
PARSE_CPU/TOT_CPU),2)。如果这个值比较
小,表示解析消耗的 CPU 时间过多。与
PARSE_CPU 比,如果 TOT_CPU 很高,这
个比值将不是分析查询的工作。
100%,这是很的,说明计算机执行的
大部分工作是查询的工作,而 Execute to
Parse语句执行与分析的比,如果要 SQL
重用率高,则这个比例会很高。高表示
一次解析后被重复执行的次数多。计算公式
为:Execute to Parse =100 * (1 -
Parses/Executions)。本中,不多每
execution 5 要一次 parse。所如果系统
Parses > Executions,就可能出现该比率小于 0
的情况。<0 通常说明 shared pool 设置或
语句效率存在问题,反复解析,reparse
可能较,或者是可能 snapshot 有关,通常
说明数据库性能存在问题。
In-memory Sort在内存中排序的比率,如
果过低说明有大量的排序时表空间中进行。
考虑调 PGA(10g)如果低于 95%,可通过
适当调大初始化参数
PGA_AGGREGATE_TARGET 或者
of 38
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。