Statspack学习(一).安装配置
Statspack是Oracle提供的一个非常强大的工具,用于检测Oracle系统在某段时间内的执行性能,是用来判断、排查Oracle故障和系统瓶颈的最主要和最常用的手段。从今天开始就来学习一下这个工具的使用方法。
一、参数设置
安装和运行Statspack需要配置以下参数
1、job_queue_processes
为了可以建立自动任务,执行数据手机,该参数需要大于0(默认是10)
2、timed_statistics
收集操作系统的计时信息,用以先是时间等统计信息,优化数据库和SQL语句。在使用statspack收集统计信息时建议将该值设置为TRUE,否则收集的统计信息大概只能起到10%的作用。timed_statistics设置为true会引起系统的开销,但是其带来的影响与好处相比是微不足道的
注:该参数收集的时间信息存储在v$sysstat和v$sesstat等动态视图中。
二、安装Statspack
以SYSDBA身份登陆,执行安装脚本
1、查看基础信息
SQL> select instance_name,host_name,version,startup_time from v$instance;
INSTANCE_NAME HOST_NAME VERSION STARTUP_TIME
---------------- ---------- ----------------- ------------
dodo WXQ-0099 10.2.0.1.0 2009-2-21
2、查看现有数据文件位置
SQL> select file_name from dba_data_files;
FILE_NAME
---------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\SYSTEM01.DBF
3、创建表空间,用于存放统计信息
注:如果采样间隔短、周期长则使用大一点的表空间。例如每半小时采样一次,持续一周,则数据量比较大,需要500M左右空间。
注:表空间不能太小,否则创建对象会失败,至少需要100M空间
SQL> create tablespace perfstat
2 datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\PERFSTAT.DBF'
3 size 500M
4 extent management local;
Tablespace created
4、执行spcreate脚本创建Statspack
SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\spcreate.sql
开始创建之后需要输入以下几个值:
Enter value for perfstat_password:perfstat
Enter value for defaulttablespace:perfstat
Entwe value for temporary_tablespace:temp
最后如果安装成功会出现以下信息:
Started spooling to D:\Program Files\PLSQL Developer\spcpkg.lis
Creating Package STATSPACK...
Package created
No errors for PACKAGE PERFSTAT.STATSPACK
Creating Package Body STATSPACK...
Package body created
No errors for PACKAGE BODY PERFSTAT.STATSPACK
NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.
Stopped spooling to D:\Program Files\PLSQL Developer\spcpkg.lis
如果安装出现问题或者想要删除statspack,执行spdrop.sql脚本删除创建的所有对象。
注:不要用PLSQL DEV进行执行脚本,因为有些指令无法编译通过。
三、测试Statspack
首先模拟执行n次的statspack.snap
SQL> execute statspack.snap;
PL/SQL procedure successfully completed
SQL> execute statspack.snap;
PL/SQL procedure successfully completed
SQL> execute statspack.snap;
PL/SQL procedure successfully completed
然后执行spreport.sql脚本
SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\spreport.sql;
Enter value for begin_snap:1
Enter value for end_snap:3
Enter value for report_name:test
注1:snap代码会在脚本执行的过程中展示出来
注2:会在当前目录下生成一个名为test.lst的文件保存信息