statspack的安装使用

1.设置系统参数job_queue_processes和timed_statistics:
SQL> show parameter job_queue_processes timed_statistics
NAME                             TYPE       VALUE
------------------------------------ ----------- --------------------
job_queue_processes        integer                 10

NAME                             TYPE        VALUE
------------------------------------ -------------- ---------------------
timed_statistics                 boolean     TRUE
SQL>
参数job_queue_processes能够建立自动任务,执行数据收集,该值应大于0;
SQL> alter system set job_queue_processes=8 scope=spfile;
参数timed_statistics是收集操作系统的计时信息,应设置为true,若要防止因从操作系统请求时间而引起的开销则设置为false;可在使用statspack采样之前将timed_statistics的值设置为true,采样完后又设置为false。
SQL> alter system set timed_statistics=true scope=spfile;

2.安装statspack工具:
要以拥有SYSDBA(conn / as sysdba)权限的用户登录,首先创建一个存储数据的表空间(至少>=100M,若采样间隔时间较短,周期较长,长期使用的话则需更大的表空间)
SQL> create tablespace perfstat datafile 'D:\ORACLE\ORADATA\ORCL\PERFSTAT.DBF' size=200M;
在$ORACLE_HOME\rdbms\admin目录下检查安装所需的脚本
C:\Documents and Settings\Administrator> cd /d E:\oracle\ora92\rdbms\admin
E:\oracle\ora92\rdbms\admin> dir /w sp*   ----列出以SP开头的文件名

E:\oracle\ora92\rdbms\admin> sqlplus /nolog
E:\oracle\ora92\rdbms\admin> conn / as sysdba
SQL> @spcreate.sql
在statspack创建的过程中会创建perfstat用户需要输入口令(不能以数据开头,该口令为perfstat用户口令)、default_tablespace的值为刚创建的表空间perfstat,和temporary_tablespace的值可以为temp。
如果创建的过程中出错则运行spdrop.sql脚本删除创建的过程。
SQL> @spdrop.sql

3.测试安装的Statspack:
运行statspack.snap产生系统快照,运行两次,然后执行spreport.sql生成一个基于时间点的报告:
SQL> execute statspack.snap
SQL>
SQL> select min(snap_id) snapid_min, max(snap_id) snapid_max from stats$snapshot;
SQL>@spreport.sql
执行报告时需要输入begin_snap和end_snap用来比较数据库这两个时间点的差别,还要输入report_name用来存放报告的路径。

若生成的报告中间停过机,则会出现错误报告信息:
ERROR: Snapshots chosen span an instance shutdown: RESULTS ARE INVALID
STATSPACK report for
一个statspack报告不能跨越一次停机。

4.设置自动执行任务
使用spatuo.sql文件来执行自动执行任务,并且可以通过修改spatuo.sql文件的中的包dbms_job.submit来设置job任务的时间间隔。
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
1/24 HH  每小时一次;
1/48 MI  每30分钟一次;
1/144 MI  每十分钟一次。(采样时间建议是1小时为时间间隔,对于特殊的环境则可以设置为每半小时一次,不建议设置的更短的了,否则会大量消耗系统资源)
SQL> @spatuo.sql   ----执行该脚本就会制定一个每小时一次采样的自动任务。

5.删除自动任务
当完成一个采样报告后,需要及时移除这个自动任务,否则会产生一个非常惊人的采样数据。
SQL> select job,log_user,priv_user,last_date,next_date,interval from user_jobs;
    JOB  LOG_USER     PRIV_USER    LAST_DATE   NEXT_DATE    INTERVAL
--------- ------------------  ------------------- ------------------- -------------------  ----------------------------------------------
     21 SYS              SYS                                   2011-3-22 1     trunc(SYSDATE+1/24,'HH')
SQL> execute dbms_job.remove('21')   ###对作业操作的用户和作业所属用户必须是同一用户!
SQL>

6.移除历史数据
只需移除stats$snapshot数据表中相应的数据就行,其他数据表中的数据会相应级连删除。
SQL> select max(snap_id) from stats$snapshot;
MAX(SNAP_ID)
----------------------
                  12
SQL> delete from stats$snapshot where snap_id<=12;

还可以利用系统脚本sptrunc.sql来truncate这些统计信息。如果采样了大量的数据,直接Oracle Delete是非常缓慢的,通常使用脚本sptrunc.sql截断所有的表。
SQL> @sptrunc.sql

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值