Oracle Statspack分析报告详解

statspack 输出结果中必须查看的十项内容

1、负载间档(Load profile)

2、实例效率点击率(Instance efficiency hit ratios)

3、首要的5个等待事件(Top 5 wait events)

4、等待事件(Wait events)

5、闩锁等待

6、首要的SQL(Top sql)

7、实例活动(Instance activity)

8、文件I/O(File I/O)

9、内存分配(Memory allocation)

10、缓冲区等待(Buffer waits

1.报表头信息

数据库实例相关信息,包括数据库名称、ID、版本号及主机等信息。

STATSPACK report for

DB Name DB Id Instance Inst Num Release Cluster Host

BLISSDB 4196236801 blissdb 1 9.2.0.4.0 NO BLISS

Snap Id Snap Time Sessions Curs/Sess Comment

Begin Snap: 4 23-6月 -05 17:43:32 10 3.3

End Snap: 5 23-6月 -05 18:01:32 12 6.1

Elapsed: 18.00 (mins)

Cache Sizes (end)

Buffer Cache: 24M Std Block Size: 8K

Shared Pool Size: 48M Log Buffer: 512K

2.负载间档

该部分提供每秒和每个事物的统计信息,是监控系统吞吐量和负载变化的重要部分。

Load Profile

~~~~~~~~~~~~

Per Second Per Transaction

Redo size: 431,200.16 18,627,847.04z

Logical reads: 4,150.76 179,312.72

Block changes: 2,252.52 97,309.00

Physical reads: 23.93 1,033.56

Physical writes: 68.08 2,941.04

User calls: 0.96 41.36

Parses: 1.12 48.44

Hard parses: 0.04 1.92

Sorts: 0.77 33.28

Logons: 0.00 0.20

Executes: 2.36 102.12

Transactions: 0.02

Redo size:每秒产生的重做日志大小(单位字节),可标志数据变更频率, 数据库任务的繁重与否。本例中平均每秒产生了430K左右的重做,每个事务品均产生了18M

的重做。

Logical reads:平次每秒产生的逻辑读,单位是block。

block changes:每秒block变化数量,数据库事物带来改变的块数量。

Physical reads:平均每秒数据库从磁盘读取的block数。

Logical reads和Physical reads比较:大约有0.55%的逻辑读导致了物理I/O,平均每个事务执行了大约18万个逻辑读,在这个例子中,有一些大的事务被执行,因此很

高的读取数目是可以接受的。

Physical writes:平均每秒数据库写磁盘的block数。

User calls:每秒用户call次数。

Parses和Hard parses:每秒大约1.12个解析,其中有4%为硬解析,系统每25秒分析一些SQL,都还不错。对于优化好的系统,运行了好几天后,这一列应该达到0,所有

的sql在一段时间后都应该在共享池中。

Sorts:每秒产生的排序次数。

Executes:每秒执行次数。

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

% Blocks changed per Read: 54.27 Recursive Call %: 86.94

Rollback per transaction %: 12.00 Rows per Sort: 32.59

% Blocks changed per Read:说明46%的逻辑读是用于那些只读的而不是可修改的块,该系统只更新54%的块。

Rollback per transaction %:事务回滚的百分比。计算公式为:Round(User rollbacks / (user commits + user rollbacks) ,4)* 100%。本例中每8.33个事务

导致一个回滚。如果回滚率过高,可能说明数据库经历了太多的无效操作。过多的回滚可能还会带来Undo Block的竞争。

3.实例命中率

该部分可以提前找出ORACLE潜在将要发生的性能问题,很重要。

Instance Efficiency Percentages (Target 100%)

~~~~~~~~~~~~~~~~~~~~

Buffer Nowait %: 100.00 Redo NoWait %: 100.00

Buffer Hit %: 99.42 In-memory Sort %: 100.00

Library Hit %: 98.11 Soft Parse %: 96.04

Execute to Parse %: 52.57 Latch Hit %: 100.00

Parse CPU to Parse Elapsd %: 11.40 % Non-Parse CPU: 99.55

Buffer Nowait %:在缓冲区中获取Buffer的未等待比率,Buffer Nowait<99%说明,有可能是有热块(查找x$bh的 tch和v$latch_children的cache buffers chains)

Redo NoWait %:在Redo缓冲区获取Buffer的未等待比率。

Buffer Hit %:数据块在数据缓冲区中的命中率,通常应在90%以上,否则,小于95%,需要调整重要的参数,小于90%可能是要加db_cache_size,但是大量的非选择的

索引也会造成该值很高(大量的db file sequential read)。如果一个经常访问的列上的索引被删除,可能会造成buffer hit 显着下降。如果增加了索引,但是它影

响了ORACLE正确的选择表连接时的驱动顺序,那么可能会导致buffer hit 显着增高。如果命中率变化幅度很大,说明需要改变SQL模式。

In-memory Sort %:在内存中的排序率。

Library Hit %:主要代表sql在共享区的命中率,通常在95%以上,否则需要要考虑加大共享池,绑定变量,修改cursor_sharing等参数。

Soft Parse %:近似看作sql在共享区的命中率,小于<95%,需要考虑到绑定,如果低于80%,那么就可能sql基本没有被重用。

Execute to Parse %:一个语句执行和分析了多少次的度量。在一个分析,然后执行语句,且再也不在同一个会话中执行它的系统中,这个比值为0。计算公式为:

Execute to Parse =100 * (1 - Parses/Executions)。所以如果系统Parses > Executions,就可能出现该比率小于0的情况。本例中,对于每个分析来说大约执行了

2.1次。该值<0通常说明shared pool设置或效率存在问题,造成反复解析,reparse可能较严重,或者可是同snapshot有关,如果该值为负值或者极低,通常说明数据库

性能存在问题。

Latch Hit %:要确保>99%,否则存在严重的性能问题,比如绑定等会影响该参数。

Parse CPU to Parse Elapsd %:计算公式为:Parse CPU to Parse Elapsd %= 100*(parse time cpu / parse time elapsed)。即:解析实际运行时间/(解析实际

运行时间+解析中等待资源时间)。此处为11.4%,非常低,用于解析花费的每个CPU秒花费了大约8.77秒的wall clock时间,这说明花了很多时间等待一个资源。如果该

比率为100%,意味着CPU时间等于经过的时间,没有任何等待。

% Non-Parse CPU:计算公式为:% Non-Parse CPU =round(100*1-PARSE_CPU/TOT_CPU),2)。太低表示解析消耗时间过多。与PARSE_CPU相比,如果TOT_CPU很高,这

个比值将接近100%,这是很好的,说明计算机执行的大部分工作是执行查询的工作,而不是分析查询的工作。

4.Shared Pool相关统计数据

Shared Pool Statistics Begin End

------ ------

Memory Usage %: 60.45 62.42

% SQL with executions>1: 81.38 78.64

% Memory for SQL w/exec>1: 70.36 68.02

Memory Usage %:正在使用的共享池的百分率。这个数字应该长时间稳定在75%~90%。如果这个百分率太低,就浪费内存。如果这个百分率太高,会使共享池外部的组

件老化,如果SQL语句被再次执行,这将使得SQL语句被硬解析。在一个大小合适的系统中,共享池的使用率将处于75%到略低于90%的范围内。

% SQL with executions>1:这是在共享池中有多少个执行次数大于一次的SQL语句的度量。在一个趋向于循环运行的系统中,必须认真考虑这个数字。在这个循环系统

中,在一天中相对于另一部分时间的部分时间里执行了一组不同的SQL语句。在共享池中,在观察期间将有一组未被执行过的SQL语句,这仅仅是因为要执行它们的语句

在观察期间没有运行。只有系统连续运行相同的SQL语句组,这个数字才会接近100%。这里显示,在这个共享池中几乎有80%的SQL语句在18分钟的观察窗口中运行次数多

时间: 2024-11-08 21:23:02

Oracle Statspack分析报告详解的相关文章

Oracle 死锁分析过程详解

Oracle 死锁分析 关于死锁一般3种处理方式 1.事前预测 2.资源分级 3.事后检测释放 我知道的ORACLE MYSQL都是采用第三种在行锁级别上的话. 这里分析一个ORACLE死锁,首先一个死锁肯定会生成一个TRACE文件,这里会记录很多信息如: Deadlock graph: ---------Blocker(s)--------  ---------Waiter(s)--------- Resource Name          process session holds wai

oracle闪回表详解

  --- 说明闪回数据库 --- 使用闪回表将表内容还原到过去的特定时间点 --- 从删除表中进行恢复 --- 使用闪回查询查看截止到任一时间点的数据库内容 --- 使用闪回版本查询查看某一行在一段时间内的各个版本 --- 使用闪回事务查询查看事务处理历史记录或行 优点: 闪回技术由于只能处理更改数据,所以从根本上改变了恢复技术.使用这个技术时,从错误中恢复花费的时间等于制造错误所花费的时间.当闪回技术使用时,它与介质恢复相比,在易用性.可用性和还原时间方面有明显的优势. 闪回数据库使用闪回日

【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解>    系列文章目录导航     --通过知识共享树立个人品牌.           本是成书的,但后来做其他事了,就无偿的贡献出来,被读者夸其目前为止最"实在.经典"的写ORACLE PL/SQL编程的文章-!   觉得对你有帮助,请留言与猛点推荐,谢谢.     [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序

[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七:   程序包的创建与应用(聪明在于学习,天才在于积累!) --通过知识共享树立个人品牌.     继上七篇:            [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)            [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,

[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)

原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下) --通过知识共享树立个人品牌. 继上六篇:        [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)        [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)        [推荐]ORA

[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)  [顶]ORACLE PL/SQL编程详解之二:   PL/SQL块结构和组成元素(为山九仞,岂一日之功)     继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)                [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不

趋势科技技术分析:详解无文件勒索病毒Sorebrect

本文讲的是趋势科技技术分析:详解无文件勒索病毒Sorebrect,Fileless威胁和ransomware并不是什么新的东西,但是包含其特征组合的恶意软件却可能成为一种新的危险.例如,我们最近发现的Fileless代码注入ransomware – SOREBRECT. 事实上,我们是在今年第二季度初的监测中首次遇到SOREBRECT的,它对中东各个组织的系统和网络造成了很大的影响.而在我们提取和分析了SOREBRECT样本之后,发现了它用来加密受害者数据的不寻常技术.当然,它滥用PsExec实

[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)

原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) --通过知识共享树立个人品牌. 继上五篇:    [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)    [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)        [推荐]ORACLE PL/SQL编程之五:异常

RTP协议分析和详解

一.RTP协议分析 第1章.     RTP概述 1.1.  RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议).它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本).RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议).RTP用来为IP网上的语音.图像.传真等多种需要实时传输的多媒体数据提供端到端的实时