Oracle9i数据库中STATSPACK的使用
一.摘要
本文讨论STATSPACK实用工具的优点和性能,同时描述了如何安装、使用、配置和管理这个实用工具。
二.概述
STATSPACK实用工具在指定的时段中收集与单个或多个Oracle服务器性能相关的统计信息。STATSPACK实用工具的用途与BSTAT和ESTAT实用工具相类似,但是STATSPACK实用工具提供了更完全的功能。STATSPACK的功能显著表现在如下方面:
1.自动计算比率,如每秒或者每事务的比率
2.在持久表中存储统计信息,以进行长期比较
3.从报告生成中分离数据收集
4.在统计中包含回滚事务
5.收集与耗费资源的SQL语句性能相关的数据
三.安装STATSPACK
要安装STATSPACK实用工具,请使用SYSDBA 权限登录SQL*Plus并运行安装脚本ORACLE_HOME/rdbms/admin/spcreate。
该安装脚本创建一个名为PERFSTAT的用户,其密码为“perfstat”,该用户拥有STATSPACK实用工具创建的所有对象,以及STATSPACK程序包本身。安装脚本自动分配特权给PERFSTAT用户,但是它会提示你为该用户指定默认和临时表空间。你应该使用一个非关键的表空间,如使用TOOLS作为默认表空间。如果你并不想让脚本提示你输入表空间名称,你可以在运行安装脚本前使用DEFINE语句指定它们。
创建PERFSTAT用户后,安装脚本将创建STATSPACK实用工具所需的所有的表,然后创建STATSPACK软件包。你应该检查输出文件spcusr.lis、spctab.lis以及spcpkg.lis(它们是安装过程的日志文件)以确保安装过程没有发生错误。
如果在字典管理表空间中安装STATSPACK实用工具,也许需要调整那些由STATSPACK对象占用的程序段的存储簇。
四.使用STATSPACK
1.获取快照
快照是在特定时间内得到的性能数据的集合。为了生成统计报告,STATSPACK实用工具需要比较两个快照。
要得到一个快照,请以PERFSTAT身份登录SQL*Plus并执行STATSPACK.SNAP过程。这个操作将当前性能统计存储在STATSPACK 表中。在快照中包含实时信息是非常有用的。你可以通过设置TIMED_STATISTICS的初始化参数值为TRUE来实现。由于你需要得到多个快照来生成报告,因此在有规律的时间间隔中制定快照计划是十分有意义的。例如,你也许想每三小时收集一次性能统计。
你可以使用操作系统实用工具或Oracle的DMBS_JOB过程来制定自动统计收集计划。在使用DMBS_JOB过程制定快照计划前,你需要确保JOB_QUEUE_PROCESSES初始化参数的值大于零。STATSPACK实用工具包含了一个样本脚本spauto.sql,该脚本制定了每小时一次快照的计划。你可以使用DMBS_JOB.INTERVAL过程来改变两个快照之间的间隔时间。例如,要每6小时获取一次快照,你可以输入以下代码来制定快照计划:
EXECUTE DMBS_JOB.INTERVAL (1, 'SYSDATE+(1/4)');
此例中,1/4是指要求的时间间隔为1/4天,即6小时。
2.生成报告
STATSPACK实用工具可以生成对两个快照的性能数据进行比较的报告。由于STATSPACK实用工具生成报告是独立于统计收集操作的,因此你可以使用任意两个快照来生成报告。这就允许你比较在得到快照的任何时段的性能统计。然而,如果数据库在两次快照之间被关闭,STATSPACK实用工具就会返回一个错误。
STATSPACK实用工具生成两类报告:
a. 常规实例状态报告
b. SQL报告
常规实例状态报告涵盖了实例性能的所有方面,而SQL报告则是检查指定的耗费资源较多的SQL语句的性能。对于评估整体的系统性能,常规实例状态报告已经足够了,但是它们有时显示出某些特定的SQL语句已经严重地影响了性能。在这种情况下,你需要生成这些语句的SQL报告。
若要运行常规实例状态报告,要以PERFSTAT身份登录,并在ORACLE_HOME/rdbms/admin目录下运行spreport.sql 脚本。spreport.sql 脚本会提示输入要比较的两个快照的快照ID和报告的名称。如果不想让脚本提示你输入这些值,可以在运行安装脚本前使用DEFINE语句指定它们。若要运行一个SQL报告,请以PERFSTAT身份登录系统,并在ORACLE_HOME/rdbms/admin目录下运行sprepsql.sql 脚本。sprepsql.sql 脚本会提示输入要比较的两个快照的快照ID、要检查的SQL语句的散列值以及报告的名称。就像创建常规实例状态报告那样,可以选择在运行安装脚本前使用DEFINE语句指定这些值。
五.配置STATSPACK实用工具
通过配置获取快照的级别和用来识别耗费资源的SQL语句的阈值,可以调整STATSPACK实用工具收集的数据数量,以及因此STATSPACK所需要的处理进程的数量。
1.快照级别
快照级别决定了快照包含的细节的数量。0至4级别之间的快照用来收集等待统计、加锁统计、行高速缓冲数据、回滚段数据、缓冲池统计、系统全局区域数据、后台事件、会话事件和父锁存统计。
级别5的快照收集所有使用了比指定阈值更多资源的SQL语句的额外数据。级别5是默认的快照级别,它提供了细节与影响系统性能之间的平衡。
在级别6至9之间的快照除了收集级别5快照包含的数据,还为耗费资源的SQL语句收集关于执行计划的信息。如果你正考虑为特定的语句改变执行计划,也许需要获取这些级别的快照。
级别为10 或者高于10的快照收集与父锁存、子锁存相关的数据,以及级别6至9的快照收集的数据。高级别快照的获取过程是比较耗费资源的,因此你应该尽量避免使用不必要的高级别获取快照。
当获取一个快照时,可以指定一个会话ID。这样生成的快照既包含特定会话统计,也包含基于实例的统计。
若要仅为当前快照获取任何其它级别而非默认级别的快照,请在执行STATSPACK.SNAP过程时,指定所要求的级别。例如,你可以使用下面的代码来指定快照的级别为6:
EXECUTE STATSPACK.SNAP(i_snap_level=>6);
若要为所有的快照改变默认的快照级别,请使用I_MODIFY_PARAMETER来保存你已经指定的级别,如下所示:
EXECUTE STATSPACK.SNAP(i_snap_level=>6, I_MODIFY_PARAMETER=>TRUE);
你也能通过STATSPACK.MODIFY_STATSPACK_PARAMETER过程来改变默认的级别而无需获取快照。
2.阈值
默认情况下,耗费资源的SQL语句被定义为这样的语句:
a.已经被执行100次以上
b.已经做过1000次以上磁盘读取
c.已经做过1000次以上解析调用
d.已经做过1000次以上缓冲区获取
e.已经有超过20的版本计数,或
f.使用超过1Mb的可共享内存
可以使用STATSPACK.MODIFY_STATSPACK_PARAMETER过程来改变这些默认的阈值。例如,下面这个语句将默认的快照级别改为6、磁盘读取阈值改为2000:
EXECUTESTATSPACK.MODIFY_STATSPACK_PARAMETER(i_snap_level=>6,i_disk_reads_th=>2000);
当前的快照级别和阈值存储在表STATS$STATSPACK_PARAMETER中。
六.管理STATSPACK实用工具
因为STATSPACK实用工具监视系统性能需要使用一定的资源,所以要确保该工具没有给系统性能带来负面的影响。不管什么时候,只要在STATSPACK的表中的数据量有显著变化,你就应该在PERFSTAT用户所拥有的表与索引中收集更优化的统计。你可以使用DBMS_STATS和DBMS_UTILITY程序来实现。
如果发现STATSPACK实用工具的资源使用量高出合理的范围——例如STATSPACK表中包含有许多旧的快照——这时应该通过清除旧的快照和截去旧的表来减少STATSPACK表中的数据。
若要清除旧的快照,请使用sppurge.sql 脚本,同时指定清除的开始点与结束点的快照ID。若要截去旧的表,请使用sptrunc.sql 脚本。这些脚本都位于ORACLE_HOME/rdbms/admin目录下。若要运行这两个脚本,请以PERFSTAT身份登录系统。根据想要删除的数据的数量,你也许需要在数据库的低活跃期来执行这些脚本以防止危及系统的性能。
七.小结
STATSPACK实用工具在指定的时段中收集与单个或多个Oracle服务器性能相关的统计信息。
可以通过使用SYSDBA权限登录SQL*Plus并运行spcreate.sql 脚本来安装STATSPACK实用工具。spcreate.sql 脚本创建STATSPACK实用工具必需的所有的表和包,同时创建一个拥有这些表的用户——PERFSTAT用户。你需要为PERFSTAT用户提供用户信息。
要使用STATSPACK实用工具,请以PERFSTAT用户的身份连接并运行STATSPACK.SNAP过程。这将创建当前数据库性能数据的一个快照。一旦创建了两个或两个以上的快照,就可以创建一个性能报告,这个报告对任意两个快照进行比较。spreport.sql 脚本生成一个常规实例完整报告,而sprepsql.sql 脚本则生成一个SQL报告,该SQL报告记录了那些导致较高资源使用率的特定的SQL语句。
可以通过以下设置来配置STATSPACK实用工具收集的数据数量:设置默认的快照级别以及调整阈值。阈值决定了哪些SQL语句被记录为消耗较多资源的语句。
需要监视和管理STATSPACK实用工具以确保它的监测活动(可能会比较浪费资源)不会影响数据库的性能。
相关推荐
通过对 Oracle9i 数据库性能优化的学习和实践,我们可以有效地提高系统的整体性能。这不仅涉及到硬件配置的调整、数据库参数的优化,还需要深入理解 SQL 语句编写技巧和合理的物理设计策略。此外,利用 Oracle 提供...
#### 二、Oracle9i性能优化基础 1. **理解Oracle9i架构**: - Oracle9i采用了多层体系结构,包括监听器、进程、后台进程等。 - 学习Oracle9i的数据字典视图,如V$SESSION、V$INSTANCE等,这些视图提供了关于...
标题“Oracle9i 数据库性能优化 V 1”以及描述“Oracle9i 数据库性能优化 V 1 介绍了oracle9i的日常维护,优化”,明确指出了本文档主要关注的是Oracle 9i版本数据库的性能优化方法及其日常维护策略。以下将详细解析...
以下是对"ocp oracle9i 数据库性能优化"主题的详细解释: 1. **数据库架构优化**:Oracle 9i引入了多租户架构,允许在一个数据库实例中管理多个数据库,这可以提高资源利用率并简化管理。优化架构包括合理设置表...
### OCP Oracle9i性能调整学习指南知识点概览 #### 一、OCP认证与Oracle9i概述 - **OCP认证**: Oracle Certified Professional (OCP) 是 Oracle 公司提供的一项专业认证计划,旨在验证数据库管理员、开发人员以及 ...
系统调整通常采用监控工具和性能分析方法,例如使用Oracle的性能视图(V$视图)、AWR(自动工作负载repository)报告、ASH(Automatic Shared Memory Management)等来识别性能瓶颈。根据分析结果,可能需要调整初始化参数...
Oracle9i学习精解版4是一本专注于Oracle数据库系统学习的深入解析教程,它涵盖了Oracle9i版本的主要特性和功能。Oracle9i是Oracle数据库的一个重要版本,它在当时引入了许多创新技术,对数据库管理、性能优化以及...
在Oracle9i中,安装和配置是入门的第一步。教程可能会讲解如何在不同操作系统环境下安装数据库服务器和客户端工具,包括设置环境变量、创建监听器、配置网络服务名等。理解这些步骤对于后续的数据库管理和维护至关...
第6章 性能优化基础知识 第7章 系统优化方法 第二部分 ORACLE应用系统设计优化 第8章ORACLE数据库系统优化安装 第9章 项目分析、设计与管理 第10章 数据库结构设计要点 第三部分 ORACLE应用系统开发优化 第12...
Oracle9i是Oracle公司推出的一款强大的关系数据库管理系统,它以其高效、稳定和灵活的特点在企业级应用中占据重要地位。本教程将深入探讨Oracle9i的核心概念和技术,帮助读者全面了解和掌握这个系统。 一、数据库...
在"performance"这个标签下,我们可以关注Oracle 9i在性能优化方面的知识。以下是一些核心概念和功能的详解: 1. **SQL优化**:Oracle 9i引入了自动SQL优化(Auto SQL Tuning),通过SQL Profile和SQL Plan ...
在“oracle9i310.msi”这个文件中,包含了Oracle 9i客户端的安装程序,用户只需运行此文件即可开始安装。 4. **使用说明.htm**:这个文件提供了关于如何使用客户端的指导,可能包括安装步骤、连接配置、基本操作等...
《ORACLE9i_优化设计与系统调整》是针对Oracle 9i数据库系统的一份重要学习资料,尤其适合初学者和对性能优化感兴趣的IT从业者。Oracle 9i是Oracle公司推出的第九代数据库产品,它在功能、性能和可管理性上都有显著...
Oracle 9i数据库系统是Oracle公司推出的一款重要版本,它在数据库管理、性能优化方面有着显著的提升。本文将深入探讨Oracle 9i中的System Global Area(SGA)性能调整,帮助你理解如何通过优化SGA来提升数据库的整体...
Oracle9i数据库的性能优化是确保数据库高效运行的关键步骤,特别是在网络应用和电子商务等领域,数据库的性能直接影响到系统的响应速度和用户体验。以下是对标题和描述中提到的知识点的详细解释: 1. **基本优化...
这个中文资料包包含四册内容丰富的学习资源,可能涵盖了Oracle 9i数据库的基础知识、高级特性、性能优化以及故障排查等多个方面。 首先,Oracle 9i数据库是一个广泛使用的RDBMS(关系型数据库管理系统),它在当时...
总的来说,Oracle 9i初学者指南将引导你逐步掌握数据库管理的基础,从安装配置到日常运维,再到性能优化和安全防护,全面了解Oracle 9i数据库系统。通过深入学习和实践,你可以成为一名合格的Oracle数据库管理员。
3. **性能优化**:Oracle 9i引入了SQL优化器的改进,如成本基础优化器(CBO)和基于规则的优化器(RBO)。手册会指导如何分析SQL性能,使用explain plan,调整SQL语句,以及使用绑定变量提升查询效率。 4. **并行...