网上流传eygle写的statspack已经写的比较详细了,我只是写一个简短一些的
一,修改系统参数
sql>show parameter job_queue
查看当前工作队参数是否大于0,等于0的,要修改一下
alter system job_queue_processes=5 scope=both
sql>show parameter timed_statistics
查看是否起动了系统的计时信息,在不进行快照收集时,要将这个参数置为false
alert system set timed_statistics = true scope = both
二,安装
安装statspack在8.1.6以前版本时,要以internal身份登录,以后的版本以使用sys的sysdba的身份登录进行安装
(1)进入命令提示符,cd到ORACLE_HOME/rdbms/admin目录下,这样方便执行脚本
(2)通过sqlplus登录数据库:sql>sqlplus "sys/password as sysdba"
(3)创建statspack工具收集数据所使用的表空间,原则上不能小于100m
create tablespace perfstat
datafile 'd:\oracle\oradata\orcl\perfstat.dbf
size 500m
extent management local;
(4)执行spcreate.sql脚本,8.1.6版本执行statscr.sql脚本
sql>@spcreate
其过程中,会让你输入default_tablespace,temporary_tablespace和password
如果提示有任何错误,最好先执行spdrop.sql脚本,然后再找到问题,重新安装
错误提示信息在admin目录j里的sp*.lis文件中
(5)测试安装好的statspack
sql>execute statspack.snap
sql>execute statspack.snap
至少要执行两次快照收集
再执行报表工具,生成快照分析报表
sql>@spreport
过程中会提示你输入进行性能分析的快照开始序号,结束序号和报表名称
注意分析的快照之间不能有一次关机的操作,否则分析出来的数据肯定不正确,而且报告中也会给出错误信息
三,规划自动任务
admin目录下还有一个文件spauto.sql文件,用来发一起执行收集快照的一个工作脚本,主要内容如下
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/288,'MI'), 'trunc(SYSDATE+1/288,''MI'')', TRUE, :instno);
1/24 HH:表示每一小时一次
1/48 MI :每半小时一次
1/144 MI :每十分钟一次
1/288 MI:每五分钟一次
原则上自动的收集时间间隔,最少不要少于半个小时,否则一旦忘记删除任务,statspack会收集N多数据,有可能会导入磁盘空间满而且导致宕机.
所以执行一个自动任务,一定不要忘记事后把它删除掉
四,删除历史数据
删除了表stats$snapshot的数据,其它表的数据也会级连删除的,不过在数据量比较大量,可以使用系统提供的sptrunc.sql脚本来删除数据.
五,删除自动任务
dbms_job.remove("job_id")
六,报告简要分析
见另外一篇文章,
文章来自于互联网