ORACLE中安装STATSPACK步骤
 
一,系统参数

1. alter system set job_queue_processes = 6;
job_queue_processes,为了能够建立自动任务,执行数据收集,该参数需要大于0。
 
2.alter system set timed_statistics = true;
timed_statistics,收集操作系统的计时信息,这些信息可被用来显示时间等统计信息,优化数据库和SQL语句。要防止因从操作系统请求时间而引起的开销,将该值设置为False。
 
二,安装Statspack
 
安装statspack需要用internal身份登陆,或者拥有sysdba(connect/as sysdba)权限的用户登陆,需要在本地或者通过telnet登陆到服务器。
脚本路径:D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN
 
三,步骤

1.SQLPLUS中输入
SQL> connect / as sysdba; 
SQL> alter system set job_queue_processes = 6; --自动执行数据收集时该参数需要大于0
System altered
SQL> alter system set timed_statistics = true;   
System altered
SQL> create tablespace perfstat
  2  datafile 'D:\oracle\product\10.1.0\oradata\isbn\perfstat.dbf'
  3  size 500M
  4  extent management local;
Tablespace created.
SQL> @D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\spcreate.sql;
输入 perfstat_password 的值:  perfstat
输入default_tablespace的值:  perfstat
输入temporary_tablespace 的值:  temp
----------默认切换perfstat用户---
NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.
--需要出现上述语句才算成功,否则请查看.lis文件并执行,进行重建
SQL> @D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\spdrop.sql
SQL> @D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\spcreate.sql;
 
四,生成STATSPACK调整报告
 
SQL> show user
USER为"PERFSTAT"

1.相关背景知识说明
 
缺省情况下 snapshot 的级别是 level 5。
statspack生成的报告中就会显示系统中高负荷SQL语句(High Load SQL)的信息,而其详细信息可以在 stats$sql_summary 表中查到
select * from stats$sql_summary ;

 
statspack两种收集类型

level级别:控制收集数据的类型
threshold门限:设置收集的数据的乏值
 
level级别:
execute statspack.snap(i_snap_level=>10,i_modify_parameter=>'true');
通过这样设置后,收集级别都为10级.
如果只想本次改变收集级别,可以忽略i_modify_parameter参数。
execute statspack.snap(i_snap_level=>10)
 
threshold门限:
快照门限只应用与stats$sql_summary表中获取的sql语句。
门限存储在stats$statspack_parameter表中,
executions_th :这是SQL语句执行的数量(默认100)
disk_reads_th :这是SQL语句执行的磁盘读入数量(默认1000)
parse_calls_th :这是SQL语句执行的解析调用的数量(默认1000)
buffer_gets_th :这是SQL语句执行的缓冲区获取的数量(默认10000)
任何一个门限值超过以上参数就会产生一条记录
通过调用:statspack.modify_statspack_parameter函数可以改变门限默认值:
execute statspack.modify_statspack_parameter(i_buffer_gets_th=>100000,i_disk_reads_th=>10000);
 
2.手动执行STATSPACK收集统计信息

SQL>@D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\spreport.sql;
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输入 begin_snap 的值: 1
输入 end_snap 的值: 2
End   Snapshot Id specified: 2
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is sp_1_2. To use this name,
press <return></return>to continue, otherwise enter an alternative.
输入 report_name 的值: 'd:\report_2009050202.txt'
End of Report
查看产生的report_2009050202.txt文档
d:\report_2009050202.txt
 
3.自动执行STATSPACK收集统计信息
 
SQL>@D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\\spauto.sql;

spauto.sql中主要调用dbms_job.submit,默认每小时收集1次(1/24)
variable jobno number;
variable instno number;
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;
/
可以通过修改这个值设置采集时间
1/24 HH 每小时一次
1/48 MI 每半小时一次
1/144 MI 每十分钟一次
1/288 MI 每五分钟一次

移除自动执行STATSPACK收集

SQL>select job,log_user,priv_user,last_date,next_date,interval from user_jobs; --先查看当前自动收集的jobs
SQL> execute dbms_job.remove('1');  --移除任务1
删除统计资料(statspack相关的所有系统表)
SQL>select max(snap_id) from stats$snapshot;
SQL> @C:\oracle\ora92\rdbms\admin\sptrunc.sql;
Warning
~~~~~~~
Running sptrunc.sql removes ALL data from Statspack tables. You may
wish to export the data before continuing.
About to Truncate Statspack Tables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you would like to continue, press <return></return>
输入 return 的值: 
Entered - starting truncate operation
 
 
备注:
附件里有我自己安装statspack的脚本和生成的statspack报告。
有些内容是来自互联网,自学整理。