ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Statspack

Statspack

原创 Linux操作系统 作者:grace_xuxj 时间:2010-10-21 10:45:34 0 删除 编辑
Statspack
一,  Statspack维护说明:
1.Perfstat达到95%以上,
            
Telnet至需要进行处理的DB
            # su – oracle (在oracle账户下)
            $oracle_home/rdbms/admin/sptrunc.spl (找到sptrunc.spl)
           $sqlplus
           Username/password:perfstat  (在Perfstat)
           >@sptrunc.spl  (执行sptrunc.spl )
 
Statspack 分析网站:
把Statspack的Report 粘贴到里面,点击Submit and continue,就可以分析。
http://www.statspackanalyzer.com/analyze.asp
 
 此数据是通过statspack收集,选取的时间段在具体工作表中Time_Range中给出
nodes :sql statement是在那个node上收集
Time_Range :收集数据的时间段
Buffer_Gets :从Buffer Cache中得到的数据量
Execution :执行次数
Gets per Exec :每次执行从Buffer Cache中得到的数据量
%Total :在Time_range时间内所占用时间百分比
CPU Time(s) :CPU时间
Elaps Time(s) :执行该SQL总共时间
Time per Exec :每次执行所用时间(通过Elaps Time/Execute得出)
Module :程序名称
SQL Statements :SQL语句
 

1.   介绍

Statspack是一款功能强大的免费的oracle自带的性能分析工具。需要用具有sysdba权限的用户登陆进行安装。

 

注意:statpack可以很好的应用,它记录的信息,可以让我们了解最具体的占用cpu的sql语句,我们把这些sql收集起来给ap去分析

 

在DB上创建statspace以方便找出使系统忙碌的SQL

 

Oracle10g 对于系统性能的诊断主要通过AWR来收集数据,使用ADDM来作分析报告。

(10g之前是statspack,10g之后是AWR)

主要参考了Eygle的Spatspack专题 http://www.eygle.com/archives/2004/11/statspack_list.html

 

以下只是SP的简单操作,一些具体的分析和处理可以查看eygle的statspack专题,当然statspack有n多专业的书放在那边的,可见其复杂程度。前几天定的 《基于成本的Oracle优化法则》应该也快到了,估计里面很多性能的指标值都是从statspack里面抓出来的

需要进一步的分析statspack,当然在10g里面应该是ADDM分析报告(这个东西要简单一些了,不过万变不离其中,估计11g里面的东西会更easy,不过11g还没来得及玩)

 

 

2.   安装

1. 在运行SP的scripts之前,几个参数需要注意一下:

(1) job_queue_processes 不等于0:为了之后能正常的执行计划

(2) timed_statistics:设置为false:收集操作系统的计时信息,这些信息可被用来显示时间等统计信息、优化数据库和 SQL 语句。要防止因从操作系统请求时间而引起的开销,请将该值设置为False

 

 

 

1. 安装procedure  (statspack)

1)先创建默认的tablespace  perfstat(创建存储SP的表空间,大小根据实际需要);

create tablespace perfstat datafile '/oracle/oradata/thaec/perfstat.dbf' size 20m;

2)创建SP

查看创建SP需要的脚本

> ls sp*  (以sp开头的是for statspack使用的)

sql>@?/rdbms/admin/spcreate --创建 SP

在创建过程中要求填入用户 perfstat的密码,和默认表空间和默认临时表空名

//执行statspack的安装包。该文件物理存放于$oracle_home\rdbms\admin\spcreate.sql

//安装过程被记录在spcpkg.lis

//如果安装过程中出现错误,可以通过执行@spdrop删除相关对象,然后检查日志,确认出错原因,再次执行@spcreate进行创建。

3.   使用

1)   采样

首先生成两次采样:

SQL>execute statspack.snap

PL/SQL procedure successfully completed.

SQL>execute statspack.snap

PL/SQL procedure successfully completed.

2)   执行@spreport生成报告

1、 执行@spreport生成报告(该文件物理存放路径与spcreate相同)。

从生成采样到生成报告的大致操作步骤就是这样,当然我们这样操作在实际业务过程中是不现实的,主要的问题有以下几条:

1、采样生成间隔时间太短,未必能真正体现出服务器在业务实际运行中的状态,并且时间太短的情况下,可能statspack运行本身都会对分析结果的生成造成影响,毕竟statspack也是在运行一堆sql,也会被计入统计范围内。

2、采样的频度太低,以上述为例仅执行两次,以此为基准生成的报告恐怕也真的是仅供参考。

 

解决上述问题,我们按照如下步骤实施:

perfstat帐号下

(1)  查看当前job:SQL> select job,schema_user,next_date,interval,what from user_jobs

(2)  看看采样生成的怎么样了:SQL> select snap_id,snap_time,startup_time from stats$snapshot;

 

1、创建一个job,我们设定其每个小时自动收集一次采样。

Variable job number;

begin  dbms_job.submit(:job,'statspack.snap;',trunc(sysdate+1/24,'hh24'),'trunc(sysdate+1/24,''hh24'')');

commit;

end;

/

2、考虑到采样结果还是相当占空间,不能让其一直执行下去,我们再创建一个job,让它在明天凌晨自动停止采样job的执行。

Variable job number;

begin

  dbms_job.submit(:job,'dbms_job.broken(44,true);',trunc(sysdate+1),'null');

  commit;

end;

/

3)   删除statspack采样

分为三种情况:

l  如果你想删除某些statspack收集的历史采样,直接通过delete,指定snap_id即可:

SQL> delete stats$snapshot where snap_id=1;

如果你想删除所有的采样数据但保留statspack的库结构,oracle也提供了脚本,执行@sptrunc即可。该脚本是通过truncate删除各表记录,效率比delete高很多。

sql>connect perfstat/perfstat

sql >@?/rdbms/admin/sptrunc

l  如果你想彻底干掉本机安装的statspack的话,那就更简单了,执行@spdrop,干净不留痕:)。

移除package:

sql>connect perfstat/perfstat

sql >@?/rdbms/admin/spdrop


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

上一篇: Audit
下一篇: Table Reorg
请登录后发表评论 登录
全部评论

注册时间:2010-03-10

  • 博文量
    126
  • 访问量
    114696