环境:
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/perfstatSQL>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