偶然间发现,几年前,冯老师关于statspack的一篇文章,写的不错,收下了先。
http://www.dbanotes.net/Oracle/AboutStatspack.htm
Statspack 是 Oracle 提供的一个实例级的Tuning工具。很多DBA都喜欢用这个工具来进行数据库的优化调整。不过在交流中发现很多朋友对这个工具的的运用还有一些 问题。下面就其中比较容易出问题的几个方面进行一下简单的分析。
快照的采样时间间隔问题
我们知道,Statspack的report实际上也就是对比两个快照 (Snapshot,也就是数据库当前状态 ) 得出的结果。
一般情况下,专家建议生成Statspack报告的快照时间间隔为15-30分钟。
试想,一个人去医院看病,医生对其测量体温,一般也就是5-10分钟左右就可以了, 为什么是这麽长的时间?因为5-10分钟这段时间基本可以近似的得到你的体温。如果时间过短,可能达不到既定的目的,测到的体温会偏低,时间过长,甚至长达几 个小时的话(假设有这种情况),病人可能都昏迷几次了 ;) 。
对生成Statspack报告的快照时间间隔也是这样,如果两个Snap Time时间过短,数据 库的一些主要周期性事务可能还没有运行,信息收集不完全。如果间隔过长,数据一样会有偏差。
假设如下的情况:系统一直正常,但是最近几天有用户反映,在A时间段应用程序执行 很慢。B时间段正常,而 A时间段有一个主要的事务X运行(也是用户使用到的事务)。 B时间段有另外一个比较消耗资源的事务Y在运行。A和B时间段的跨度比较大。本来你的 快照如果覆盖A时间段内就已经能够的收集到比较准确的数据了,但不巧的是,你的Report 所用的两个Snap ID的时间跨度太长,从而把B时间段内的统计数据也收集了进来。 Statspack 经过比较,“认为”事务Y是对系统有主要影响(这也会在Report上体现出来),而你,经过分析,认为Y才是罪魁祸首,接下来,你不遗余力的对Y进行了tuning......
问题出现了!调整了B之后,用户继续报告,A时间段内系统不但没有变快,反而变得更慢,甚至不可忍受。这种情况是很危险 的,可能会对系统造成不同程序的损害。在比较严格的环境中,这已经构成了一次比较严重的事故。
或许你也要承认,Statspack的快照的采样时间间隔还真需要重视呢......
这是一个Oracle 8.1.7.0.1 版本下的Statspack报告:
Snap Id Snap Time Sessions
------- ------------------ --------
Begin Snap: 637 04-Aug-03 11:59:33 25
End Snap: 646 04-Aug-03 16:29:06 25
Elapsed: 269.55 (mins)
从中可以看到快照637和快照646之间为269.55 (mins)。这么长的时间跨度,即使数据库在一定时间间隔内有问题,在这里的体现也会有偏差。
下面的这个Statspack 报告的时间有点不靠谱了:
Snap Length
Start Id End Id Start Time End Time (Minutes)
-------- -------- -------------------- -------------------- -----------
314 1053 11-Dec-03 18:07:13 19-Dec-03 10:53:02 11,085.82
11,085.82分钟? 这么长时间内的数据采集分析,怕是绝大部分内容都是不能相信的了。
还要注意的是,我们说的时间间隔,是Begin Snap和End Snap之间的间隔,而不是相邻两个Snap 之间的间隔。对于Snap收集的间隔,建议以不要影响性能为准,收集的太过于频繁,会对性能和 存储都造成压力。对于所谓的15-30分钟,不能墨守成规。具体的环境下应该加以调整。
以偏概全
Statspack从本质上说,是对系统的性能统计数据进行采样,然后进行分析,采样,就会有偏差。如何消除偏差?统计学指出差值随样品个数的增加而降低。所以,只凭借一个Report文档就断定数据库的性能问题出在某处,是比较武断的做法(个别情况除外)。需要DBA创建多个Report,包括不同时间段,对比进行分析,这样才会起到很好的效果。在寻求技术支持的时候也最好能够多提交几份Report,便于支持人员迅速帮助解决问题。
有关Timed_statistics参数
虽然这算是一个低级的错误,还是很遗憾,常常看到一些朋友对这个参数的忽略.如果在 Timed_statistics的值设置为False的时候进行收集,可以说,收集到的东西用处不是很大 (我想你不会只想看一些实例名字、初始化参数之类的信息吧)。甚至可以说,如果该参数不设置为True,性能分析无从说起。
你成了泄密者?
Statspack 报告会汇集到你的数据库系统比较全面的信息,如果不对报告加以"伪装"就随意发布到一些技术论坛上寻求支持,无疑给一些黑客以可乘之机。你的数据库名字、实例名字、主机名、数据库版本号、兼容参数、关键的表名字、文件路径等等,尤其是关键的SQL都是黑客们或是恶意入侵者的最好的参考信息。
商业竞争对手也可能正在对你的数据库虎视眈眈。
如果你有意积极配合这些恶意窥探者,那么就把你的Statspack公之于众吧 :-)
分享到:
相关推荐
statspack完整使用指南: 包括: statspack的安装; statspack的自动数据收集; statspack的门限调整; statspack的报表自动产生与邮件发送(aix环境下); statspack的报表详细解析.
总的来说,"Statspack工具在Oracle项目中的应用.doc"文档很可能详细介绍了如何在实际操作中使用Statspack进行性能分析,包括设置参数、收集策略、解读报告等方面。掌握Statspack的使用技巧,对于任何处理Oracle...
首先,安装Statspack主要涉及以下几个步骤: 1. **创建统计收集器用户**:在开始安装之前,你需要创建一个专门用于Statspack的用户,这个用户通常具有足够的权限来执行性能监控和报告。例如,你可以创建一个名为`...
Statspack 的安装和使用是数据库管理中的重要环节,尤其对于监控和问题排查至关重要。以下是关于Oracle 9i Statspack的详细安装和使用步骤: 1. **Statspack的安装** 在安装Statspack之前,你需要以sysdba角色登录...
使用Statspack时,用户需要捕获一系列“快照”(snapshot)来记录Oracle性能数据,并且可以在任意两个快照之间进行报告分析。如果存在系统的“基线”性能数据,Statspack能够更有效地发挥其优势,帮助用户轻松回答诸如...
使用Statspack进行性能分析主要包括以下几个步骤: 1. **收集快照**: 定期运行`exec dbms_stats.gather_database_stats();`来收集数据库级别的统计信息,或者使用`exec dbms_stats.gather_schema_stats('SCHEMA_...
Statspack的内部架构主要包括以下几个方面: 1. **Statspack包**:这是Statspack的核心组件,包含了一系列过程和函数,用于收集和分析数据库性能数据。 2. **Statspack表**:用于存储Statspack收集的数据,包括...
Statspack 安装 Statspack 是 Oracle 提供的一个性能分析工具,用于收集和分析数据库性能数据。...Statspack 是一个功能强大且实用的性能分析工具,通过安装和使用 Statspack,可以提高数据库性能,方便数据库管理。
STATSPACK的核心功能包括以下几个方面: 1. **性能数据收集**:STATSPACK可以定期或按需收集数据库的各种运行时统计信息,如SQL执行统计、等待事件、系统活动等,这些数据对于分析性能问题至关重要。 2. **快照...
通过使用Statspack,DBA(数据库管理员)可以收集数据库运行时的性能统计数据,并生成详细的性能报告,帮助定位并解决性能瓶颈问题。 #### 二、Statspack的功能与优势 - **性能监控**:Statspack能够监控Oracle...
STATSPACK是Oracle数据库系统中的一种性能分析工具,主要用于收集和分析数据库的运行统计信息,帮助DBA(数据库管理员)诊断性能问题、优化查询效率以及规划数据库资源的使用。STATSPACK报告是其核心功能之一,它...
Statspack的工作流程主要包括以下几个步骤: 1. **数据采集**:Statspack会在预设的时间间隔内自动采集数据库的性能数据。 2. **数据分析**:采集的数据会被用于生成性能报告。 3. **报告解读**:通过对报告的解读...
STATSPACK是Oracle数据库系统中一个非常重要的性能分析工具,尤其在早期版本中,它被广泛用于收集和分析数据库的性能数据。以下是对"STATSPACK使用指南"的详细解读。 1. **STATSPACK的基本概念**:STATSPACK是一个...
在Oracle数据库管理中,Statspack是一个强大的性能分析工具,它为DBAs提供了深入的数据库性能监控和诊断功能。"session级别的statspack"指的是利用Statspack来收集特定会话(session)的性能数据,这对于理解单个...
在本文中,我们将深入探讨StatsPack的安装、使用以及如何进行性能分析。 首先,我们来看**安装StatsPack**的过程。安装StatsPack通常需要数据库管理员(DBA)权限。步骤包括创建统计包所需的表空间、角色以及执行...
Statspack由一系列脚本组成,早期版本中以“stat”开头的文件存在于$ORACLE_HOME/RDBMS/ADMIN目录下,而在后续版本中则以“sp”命名。对于Oracle 8.1.6之前的版本,Statspack可通过特定链接下载,包含必要的脚本和...