说明Oracle开始引进statspackstatspack是诊断oracle性能的强有力的工具
安装前准备
A首先是系统参数的确认
job_query_processes为了建立自动任务执行数据收集该参数要大于
time_statistics为了收集操作系统计时信息等需要将其设置为TRUE
B建议最好是单独的为perfstat用户(即安装statspack要建的用户)单独建立数据表空间和临时表空间数据表空间至少要有M的空闲空间否则创建statspack对象会失败如果打算长期使用statspack可以考虑建稍大些的数据表空间
安装
A安装脚本
安装的脚本所在目录是$ORACLE_HOME/rdbms/admin在oracle版本安装脚本是statscresql之后版本开始就是spcreatesql安装所需用户在i之前的需要internal或者拥有sysdba权限的用户i需要的用户是sys(i已经不存在internal用户了)
执行安装脚本如下
SQL> @$ORACLE_HOME/rdbms/admin/spcreate
B在安装过程中需要填写perfstat用户的密码并且选择perfstat用户的数据表空间和临时表空间安装完成之后察看相应的lis文件检查安装是否正确无误有问题可以通过spdropsql完成statspack的卸载重新运行spcreatesql完成statspack的安装
测试
最简单的statspack报告生成运行两次statspacksnap然后运行spreportsql生成一个基于两个时间点的报告如果是之前版本的Oracle需要修改spcpkgsql要将substr修改为substrb如下位置
select l_snap_id
p_dbid
p_instance_number
substr(sql_text) à substrb(sql_text)
建立简单的statspack报告过程如下
SQL> execute statspacksnap
PL/SQL procedure successfully completed
SQL> execute statspacksnap
PL/SQL procedure successfully completed
SQL> @$ORACLE_HOME/rdbms/admin/spreport
Spreport的执行过程中会列出需要选择的快照你需要填写该报告描述的开始和结束的快照序号并填写报告的文件名当然可以不填使用默认的报告文件名默认的会生成在目录$ORACLE_HOME/rdbms/admin中
这样就可以验证statspack已经正确的安装完成了
自动收集statspack快照
正常在真正的环境下我们是需要连续的采样一段时间这样生成的statspack才能更好的反映系统的现状我们是可以通过spautosql来自动收集数据的
主要可能会设计到修改如下部分的内容
variable jobno number;
variable instno number;
begin
select instance_number into :instno from v$instance;
dbms_jobsubmit(:jobno statspacksnap; trunc(sysdate+/HH) trunc(SYSDATE+/HH) TRUE :instno);
commit;
end;
/
主要是修改/这个值目前是一个小时自动收集一次数据如果要改动为半个小时收集一次数据就修改为/同理进行或大或小的修改
执行后可以在spautolis文件中看到当前自动收集数据的job号等信息当想要生成statspack报告的时候只要选择任何两个不跨越停机时间的快照序号就可以了注意statspack是不能跨越停机的