Statspack的使用

Statspack是Oracle 8i以上提供的一个非常好的性能监控与诊断工具,基本上全部包含了BSTAT/ESTAT的功能,更多的信息可以参考附带文档$ORACLE_HOME/rdbms/admin/spdoc.txt。

STATSPACK文件:
SPDOC.TXT         安装运行文档
SPCREATE.SQL         安装文件
SPDROP.SQL         反安装文件
SPREPORT.SQL         性能报告生成文件     
SPUEXP.PAR         statspack参数文件
spauto.sql - 利用dbms_job提交一个作业,自动的进行STATPACK的信息收集统计
sppurge.sql - 清除一段范围内的统计信息,需要提供开始快照与结束快照号
sptrunc.sql - 清除(truncate)所有统计信息
存储数据的表空间最小要求:45M
表空间的大小主要取决于采集数据的频率,数据库的大小,以及收集数据的数据量。

安装Statspack:
SQL> connect internal       
SQL> @?/rdbms/admin/spcreate.sql
安装生成一个用户perfstat/perfstat,输入DEFAULT TABLESPACE、TEMPORARY TABLESPACE
如果安装失败,一定要用反安装程序删除,反安装STATSPACK:
SQL> connect internal
SQL> @?/rdbms/admin/spdrop.sql

使用Statspack:
设置参数timed_statistics=true:
在init.ora中设置该参数,并让其生效;用alter system set timed_statistics=true;
$ sqlplus perfstat/perfstat
SQL> exec statspack.snap; -- 进行信息收集统计,每次运行都将产生一个快照号

数据自动采集1:
$ crontab -e
30 23 * * * su - oracle -c "/oracle/app/oracle/product/8.1.6/rdbms/admin/spauto.sh"
$ vi spauto.sh
sqlplus perfstat/perfstat @spauto.sql << EOF
数据自动采集2:
使用DBMS_JOB过程自动激活数据采集。
在init.ora中设置job_queue_processes值大于0,在OPS环境中,各个Node都应该设置。
Example:
exec dbms_job.submit(:jobno,'statspack.snap;',trunc(SYSDATE,'HH'),'trunc(SYSDATE+1/24,''HH'')',TRUE,:instno);
修改数据收集的间隔时间
SQL>execute dbms_job.interval(1, sysdate+(1/24));
让数据收集立即开始
SQL>execute dbms_job.run();
除去数据收集
SQL>execute dbms_job.remove();
注意:
不要用和STATSPACK 相同的用户(eg. perfstat) 去运行UTLBSTAT/UTLESTAT,因为它们有一个表的名称一样(stats$waitstat),如果这样做, stats$waitstat表将被删除

生成报告:
当执行了二次以上数据采集后,就可以生成系统运行报告;数据采集点之间数据库关闭过生成的报告无效,这同BSTAT/ESTAT相同,原因在于收集的数据来源于数据库中的动态视图中,当数据库关闭后,这些数据便被重置,而系统运行报告是以采集点的数据相比较得出来的。
执行生成系统报告的数据库用户必须是PERFSTAT。
SQL> select SNAP_ID, SNAP_TIME from STATS$SNAPSHOT; -- 获得快照号,必须要有两个以上的快照,才能生成报表
SQL> @?/rdbms/admin/spreport.sql -- 输入需要查看的开始快照号与结束快照号

报告主要内容:
Instance efficientcy percentages
top wait event
top SQL
statistic
tablespace IO stats for DB
file IO stats for DB
buffer pool statistics for DB
rollback segment stats for DB
rollback segment storage for DB
latch activity for DB
dictionary Cache stats for DB
SGA memory summary for DB
init.ora parameters for DB

参数设置的方法:
在收集数据时设置但不影响以后的数据收集
execute statspack.snap(i_snap_level=>5,i_modify_parameter =>false);
在收集数据时设置且作为以后数据收集的参数值
execute statspack.snap(i_snap_level=>5,i_modify_parameter =>true);
只改变参数值供以后数据收集使用
execute statspack.modify_statspack_parameter(i_snap_level=>5,i_buffer_gets_th=>1000);
数据收集级别参数:
i_snap_level
>=0 collect genernal performance statistics
>=5 collect level 0 and high resource SQL
>=10 This level includes capturing Child Latch statistics, along with all data captured by lower levels
控制数据收集的门槛参数:
i_executions_th 正整数[缺省100]。SQL语句执行次数超过此数值的SQL语句归于数据采集范围
i_disk_reads_th 正整数[缺省1000]。SQL语句执行硬盘读取次数超过此数值的SQL语句归于数据采集范围。
i_parse_calls_th 正整数[缺省1000]。SQL语句解析次数超过此数值的SQL语句归于数据采集范围。
i_buffer_gets_th 正整数[缺省10000]。SQL语句请求的BUFFER过此数值的SQL语句归于数据采集范围
i_sharable_mean_th
i_version_count_th
其他参数:
i_ucomment 字串。为数据采集提加备注
i_session_id [缺省0,no session]session编号,用于对指定的 session进行数据采集
i_modify_parameter true/false。是否将参数修改值作为缺省值
存储参数的表:
STATS$STATSPACK_PARAMETER

数据导出:
ORACLE提供了一个EXP的参数文件用于复制STATSPACK数据,statsuexp.par
file=spuexp.dmp log=spuexp.log compress=y grants=y indexes=y rows=y constraints=y wner=PERFSTAT consistent=y
$exp userid=perfstat/perfstat parfile=statsuexp.par
数据输入:
$imp userid=perfstat/perfstat fromuser=perfstat

数据删除:
SQL>@sppurge         删除不再需要的数据(ID1-ID2)
SQL>@sptrunc         删除所有的数据
使用sppurge 删除数据需要较大的回滚段,最好指定一个较大的回滚段或每次只删除较小的范围内的数据

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-408722/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-408722/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值