在数据库管理中Oracle提供的statspack是一个很强大的工具通过Statspack可以收集系统信息诊断数据库故障也方便第三方技术支持进行远程阅读和建议 看到很多人还不太了解这个工具的使用论坛上同样的问题很多所以写了一下一个说明文档主要涉及安装配置和数据收集 关于参数说明和性能部分还在继续进行中 先帖一部分写完的出来希望通过这些文字可以使不了解的朋友学会怎样配置和使用Statspack! 下面是正文 Oracle Statspack 从Oracle开始被引入Oracle并马上成为DBA和Oracle专家用来诊断数据库性能的强有力的工具通过Statspack我们可以很容易的确定Oracle数据库的瓶颈所 在记录数据库性能状态因此了解和使用Statspack对于DBA来说至关重要 在数据库中Statspack的脚本位于$ORACLE_HOME/RDBMS/ADMIN目录下对于ORACLE是一组以stat开头的文件对于ORACLE是一组以sp开头的文件 在Oracle中Statspack第一次发布但是你也可以在以下链接找到可用于Oracle~Oracle的版本 在以前的版本使用Statspack你需要使用statscbpssql脚本建立一个v$buffer_pool_statistics视图该脚本包含在以上链接下载的tar文件中 访问该链接你可能需要一个OTN帐号申请该帐号是免费的 在Statspack发布之前我们通常能够使用诊断数据库的工具是两个脚本UTLBSTATSQL和UTLESTATSQLBSTAT/ESTAT是一个非常简单的性能诊断工具UTLBSTAT获得开始时很多 V$视图的快照UTLESTAT通过先前的快照和当前视图生成一个报表实际上通过这个报表我们很难读出或者解释系统性能方面的问题Statspack改变了这一切通过连续的数据收集 Statspack能给我们提供至关重要的趋势分析这是一个巨大的进步 下面我们来讲一讲Statspack的安装配置使用解读 一 系统参数 为了能够顺利安装和运行Statspack你可能需要设置以下系统参数 job_queue_processes 为了能够建立自动任务执行数据收集该参数需要大于你可以在初试化参数文件中修改该参数 timed_statistics 收集操作系统的计时信息这些信息可被用来显示时间等统计信息优化数据库和 SQL 语句要防止因从操作系统请求时间而引起的开销请将该值设置为False 使用statspack收集统计信息时建议将该值设置为 TRUE否则收集的统计信息大约只能起到%的作用将timed_statistics设置为True所带来的性能影响与好处相比是微不足道的 该参数使收集的时间信息存储在在V$SESSTATS 和V$SYSSTATS 动态性能视图中 Timed_statistics参数可以在实例级进行更改 SQL> alter system set timed_statistics = true; System altered SQL> 二 安装Statspack 安装Statspack需要用internal身份登陆或者拥有SYSDBA(connect / as sysdba)权限的用户登陆需要在本地安装或者通过telnet登陆到服务器 在Oracle版本中运行statscresql;在Oracle版本中运行spcreatesql 首先登陆到数据库最好转到$ORACLE_HOME/RDBMS/ADMIN目录这样我们执行脚本就可以方便些 D:\>cd oracle\ora\rdbms\admin D:\oracle\ora\RDBMS\ADMIN>sqlplus internal SQL*Plus: Release Production on 星期二 月 :: (c) Copyright Oracle Corporation All rights reserved 请输入口令: 连接到: Oraclei Enterprise Edition Release Production With the Partitioning option JServer Release Production SQL> select instance_namehost_nameversionstartup_time from v$instance; INSTANCE_NAME
HOST_NAME
VERSION STARTUP_TI eygle AMSERVER 月 SQL> 检查数据文件路径及磁盘空间以决定创建数据文件的位置 SQL> select file_name from dba_data_files; FILE_NAME
D:\ORACLE\ORADATA\EYGLE\SYSTEMDBF D:\ORACLE\ORADATA\EYGLE\RBSDBF D:\ORACLE\ORADATA\EYGLE\USERSDBF D:\ORACLE\ORADATA\EYGLE\TEMPDBF D:\ORACLE\ORADATA\EYGLE\TOOLSDBF D:\ORACLE\ORADATA\EYGLE\INDXDBF D:\ORACLE\ORADATA\EYGLE\DRDBF D:\ORACLE\ORADATA\EYGLE\GGQIANGDBF D:\ORACLE\ORADATA\EYGLE\EQSPDBF D:\ORACLE\ORA\DATABASE\MP_DATADBF D:\ORACLE\ORA\DATABASE\MP_INDXDBF D:\ORACLE\ORA\DATABASE\MP_TEMPDBF D:\ORACLE\ORA\DATABASE\MP_IDNXDBF D:\ORACLE\ORADATA\EYGLE\HRMDBF D:\ORACLE\ORADATA\EYGLE\TIBDBF D:\ORACLE\ORADATA\EYGLE\EQSPDBF D:\ORACLE\ORADATA\EYGLE\RMAN_TSDBF D:\ORACLE\ORADATA\EYGLE\EQSPDBF D:\ORACLE\ORADATA\EYGLE\EAPPDBF D:\ORACLE\ORADATA\EYGLE\EQSPDBF D:\ORACLE\ORADATA\EYGLE\AMDBF D:\ORACLE\ORADATA\EYGLE\SYSTEMDBF D:\ORACLE\ORADATA\EYGLE\FNCDBF D:\ORACLE\ORADATA\EYGLE\HH_AMORA 已选择行 SQL> 创建存储数据的表空间如果采样间隔较短周期较长打算长期使用那么你可能需要一个大一点的表空间如果每个半个小时采样一次连续采样一周数据量是很大的本例创建一个 M的测试表空间 SQL> create tablespace perfstat datafile d:\oracle\oradata\eygle\perfstatdbf size M; 表空间已创建 SQL> 检查是否存在安装所需要的脚本文件 SQL> host dir sp* 驱动器 D 中的卷没有标签 卷的序列号是 D:\oracle\ora\RDBMS\ADMIN 的目录 : spautosql : spcpkgsql : spcreatesql : spctabsql : spcusrsql : spdoctxt : spdropsql : spdtabsql : spdusrsql : sppurgesql : spreportsql : sptruncsql : spuexppar : spupsql 个文件 字节 个目录 可用字节 接下来我们就可以开始安装Statspack了这期间会提示你输入缺省表空间和临时表空间的位置输入我们为perfstat用户创建的表空间和你的临时表空间 SQL> @spcreate
Specify PERFSTAT users default tablespace 输入 default_tablespace 的值: perfstat Using perfstat for the default tablespace 用户已更改 用户已更改 Specify PERFSTAT users temporary tablespace 输入 temporary_tablespace 的值: temp 如果安装成功你可以看到如下的输出信息 SQL> host type spcpkglis Creating Package STATSPACK 程序包已创建 没有错误 Creating Package Body STATSPACK 程序包主体已创建 没有错误 NOTE: SPCPKG complete Please check spcpkglis for any errors 你可以查看lis文件查看安装时的错误信息 SQL> host dir *lis 驱动器 D 中的卷没有标签 卷的序列号是 D:\oracle\ora\RDBMS\ADMIN 的目录 : spcpkglis : spctablis : spcusrlis : spdtablis : spdusrlis 个文件 字节 个目录 可用字节 SQL> host find ORA *lis SQL> host find err *lis SPAUTOLIS SPCPKGLIS SPCPKG complete Please check spcpkglis for any errors SPCTABLI |