1、 简介
该工具包可以在%oracle_home%/rdbms/admin路径下找到,包括以下的脚本:
$ pwd
/oracle/product/10.2.0/rdbms/admin
$ ls sp*.sql
spauto.sql spcusr.sql sppurge.sql sprepsql.sql spup816.sql
spcpkg.sql spdrop.sql sprepcon.sql sprsqins.sql spup817.sql
spcreate.sql spdtab.sql sprepins.sql sptrunc.sql spup90.sql
spctab.sql spdusr.sql spreport.sql spup10.sql spup92.sql
2、 安装
创建一个表空间,以存储STATSPACK收集的性能数据。该表空间的大小需要视收集时间而定,尽量分配大一些。
以sysdba身份登录到服务器,运行脚本Spcreate.sql即可完成STATSPACK的安装。在安装过程中会自动创建perfstat用户,需要指定该用户的密码,默认表空间和临时表空间。
3、 收集性能数据
收集性能数据需要使用perfstat用户登录,提供自动收集和手动收集两种方式:
1) 建立自动运行任务
运行脚本spauto.sql即可设置自行采集任务。在默认情况下,该任务会每小时收集一次性能值。
如果需要修改收集性能值的时间粒度,可以修改该脚本中的行:
dbms_job.submit(:jobno,'statspack.snap;',trunc(sysdate+1/24,'HH'),'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno)
这个JOB脚本定义了收集性能值的时间间隔:
1/24 HH 每小时一次
1/48 MI 每30分钟一次
1/144MI 每10分钟一次
2) 手动收集
执行statspack.snap过程,这会将当前性能值存储到STATSPACK表中。可以用一次快照与另一次快照进行比较,来得到这一段时间的性能数据。
4、 生成报告
运行spreport.sql脚本即可生成报告。如果中间出现停机会出现错误(这次调整没有遇到)。
5、 删除任务
当完成性能调整后,需要删除自动运行的任务。
1) 取得自动运行的任务号:
SQL> Select job, log_user, last_date, next_date, interval from user_jobs;
JOB LOG_USER LAST_DATE NEXT_DATE INTERVAL
--------------------------------------------------------------------------------------------------------
21 PERFSTAT 20-MAY-09 20-MAY-09 trunc(SYSDATE+1/24,'HH')
2) 移除自动任务
Exec Dbms_job.remove(‘21’)