环境:

os:windows 7 oracle:Release 10.2.0.1.0

一、statspack 安装

1,创建一个Statspack表空间,命名为perfstat,要求80M以上或者使用已经存在的表空间,但必须有80M以上的空闲空间

SQL> CREATE TABLESPACE perfstat

DATAFILE 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\NEWDB\PERFSTAT.DBF' SIZE 1000M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K
SEGMENT SPACE MANAGEMENT AUTO
PERMANENT
ONLINE;

2,以sys用户登陆执行安装脚本

SQL> conn /as sysdba
已连接。
SQL> @?/rdbms/admin/spcreate.sql

然后依次输入

Enter value for perfstat_password: perfstat

Enter value for default_tablespace: PERFSTAT

Enter value for temporary_tablespace: TEMP

安装完成之后通过show user可以查看到当前登陆用户为perfstat了,

3,创建,查看及删除snapshots

使用perfstat用户登陆执行创建snapshot的脚本:

SQL> exec statspack.snap;

可以通过stats$snapshot来查看生成的snapshot了:

SQL> select snap_id,snap_time from stats$snapshot;

SNAP_ID SNAP_TIME
---------- --------------
1 05-9月 –12

删除生成的snapshot:

SQL> @?/rdbms/admin/sppurge.sql;
Enter the Lower and Upper Snapshot ID

二、statspack基本使用

1,手工采样创建报告

要想生成报告至少需要两个snapshot

SQL>exec statspack.snap;
---间隔一段时间
SQL>exec statspack.snap;

生成报告:

SQL> @?/rdbms/admin/spreport.sql

输入 begin_snap 的值:1

输入 end_snap 的值:2

输入 report_name 的值:e:\report.txt

begin_snap开始快照点,end_snap 终止快找点,report_name报告名(最好包括目录和文件名,便于以后查看生成报告)

2,系统自动采样数据

修改spauto.sql内容,定义定时任务 ,定义采样数据的时间间隔

在?/rdbms/admin下有一个spauto.sql的脚本,打开这个脚本会发现其中有如下内容:

begin
select instance_number into :instno from v$instance;
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
commit;
end;
/

如果需要可以修改其内容。

一天24小时,1440分钟,则:
每小时一次: 1/24 (建议使用)
每30分钟一次:1/48
每10分钟一次:1/144
每5分钟一次: 1/288

运行自动执行脚本
SQL>@?/rdbms/admin/spauto.sql

3,删除自动采集job

1、检查任务中是否有这个任务,并记下该job的ID
SQL>conn perfstat/perfstat

SQL>select job,interval from user_jobs;
2、根据查到的job_id删除任务
SQL>exec dbms_job.remove(job_id);
3、删除历史数据
SQL>delete from stats$snapshot where snap_id<number;

当然也可以通过sppurge.sql脚本进行删除。
4、删除全部数据
SQL>@?/rdbms/admin/sptrunc.sql