(转载)Oracle Statspack 快速上手、使用手册

Oracle Statspack 是什么就不多说了,下面只介绍快速启动此功能的方法,相信在启动之后,所有了解Oracle的DBA们都能迅速玩会它。

目录:

一. 系统参数
二. 安装 Statspack
三. 测试安装好的 Statspack
四. 规划自动任务
五. 生成分析报告
六. 移除定时任务

------------------------------------------------------------------------------------------------------------

一. 系统参数

1.job_queue_processes (建立自动任务,执行数据收集,该参数需要大于 0。)

SQL> alter system set job_queue_processes = 6 scope=both;

系统已更改。

2.timed_statistics (防止因从操作系统请求时间而引起的开销,请将该值设置为 False。)

SQL> alter system set timed_statistics = true;

System altered

SQL>

二. 安装 Statspack

安装 Statspack 需要用sys用户以sysdba身份登陆。需要在 本地安装或者通过 telnet 登陆到服务器。
首先登陆到数据库,最好转到$ORACLE_HOME/RDBMS/ADMIN 目录,这样执行脚本就可以方便些。

$ORACLE_HOME/rdbms\admin>sqlplus "/ as sysdba"
SQL*Plus: Release 9.*.*.*.* - Production on 星期* * 月 ** **:**:** ****
Copyright (c) ****, ****, Oracle Corporation. All rights reserved.

连接到: Oracle9i Enterprise Edition Release *.*.*.*.* - Production
With the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining options
JServer Release 9.*.*.*.* - Production

SQL>
检查数据文件路径及磁盘空间,以决定创建数据文件的位置:
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
D:\ORACLE\ORADATA\EYGLE\SYSTEM01.DBF
D:\ORACLE\ORADATA\EYGLE\TEMP01.DBF
……
D:\ORACLE\ORADATA\EYGLE\HH_AM01.ORA

已选择24行。

SQL>


创建存储数据的表空间,如果采样间隔较短,周期较长,打算长期使用,那么你可能需要一个大一点的表
空间( <=100M ),如果每个半个小时采样一次,连续采样一周,数据量是很大的。本例创建一个 500M 的测试表空间。

SQL> create tablespace perfstat
2 datafile 'd:\oracle\oradata\eygle\perfstat.dbf'
3 size 500M
4 extent management local;

表空间已创建。
SQL>


检查是否存在安装所需要的脚本文件(对于不同的版本,脚本有所不同)
<-----------------------------------------------------------------------------------------------------------
E:\Oracle\ora92\rdbms\admin>dir /w sp*
驱动器 E 中的卷没有标签。
卷的序列号是 ACC3-4340
E:\Oracle\ora92\rdbms\admin 的目录
spauto.sql spcpkg.sql spcreate.sql spctab.sql spcusr.sql spdoc.txt
spdrop.sql spdtab.sql spdusr.sql sppurge.sql sprepins.sql spreport.sql
sprepsql.sql sptrunc.sql spuexp.par spup816.sql spup817.sql spup90.sql
18 个文件 510,296 字节
0 个目录 4,146,565,120 可用字节
----------------------------------------------------------------------------------------------------------->
接下来我们就可以开始安装 Statspack 了。这期间会提示你输入缺省表空间和临时表空间的位置,输入我们
为 perfstat 用户创建的表空间和你的临时表空间。

SQL> @spcreate
.
.
Specify PERFSTAT user's default tablespace
输入 default_tablespace 的值: perfstat
Using perfstat for the default tablespace

用户已更改。

用户已更改。

Specify PERFSTAT user's temporary tablespace
输入 temporary_tablespace 的值: temp

注意:在 statspack 创建过程中,当提示输入口令时,你可以输入一个明文口令,但是如果输入口令不符合
规范(如 123 或以数字开头的口令),创建会失败。
<-----------------------------------------------------------------------------------------------------------
... Creating PERFSTAT user ...

Choose the PERFSTAT user's password.

Not specifying a password will result in the installation FAILING
Specify PERFSTAT password
输入 perfstat_password 的值: 123

123

PL/SQL 过程已成功完成。

create user perfstat identified by 123
*
ERROR 位于第 1 行:
ORA-00988: 缺少或无效口令
----------------------------------------------------------------------------------------------------------->

如果安装成功,你可以看到如下的输出信息:
<-----------------------------------------------------------------------------------------------------------
….
Creating Package STATSPACK...

程序包已创建。

没有错误。
Creating Package Body STATSPACK...

程序包主体已创建。

没有错误。

NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.
----------------------------------------------------------------------------------------------------------->

你可以查看.lis 文件查看安装时的错误信息。

SQL> host dir *.lis
SQL> host find "ORA-" *.lis
SQL> host find "err" *.lis

在 UNIX 上,你可以通过以下命令查看相应的错误信息
$ ls *.lis
$ grep ORA- *.lis
$ grep err *.lis

在这一步,如果出现错误,那么你可以运行 spdrop.sql 脚本来删除这些对象。然后重新运行 spcreate.sql 来
创建这些对象。运行 SQL*Plus, 以具有 SYSDBA 权限的用户登陆:

SQL> @spdrop.sql

三. 测试安装好的 Statspack

运行 statspack.snap 可以产生系统快照,运行两次,然后执行 spreport.sql 就可以生成一个基于两个时间点的报告。如果一切正常,说明安装成功。

SQL>execute statspack.snap
PL/SQL procedure successfully completed.
SQL>execute statspack.snap
PL/SQL procedure successfully completed.
SQL>@spreport.sql


四. 规划自动任务

Statspack 正确安装以后,我们就可以设置定时任务,开始收集数据了。可以使用 spatuo.sql 来定义自动任务。spauto.sql 的关键内容:
dbms_job.submit(:jobno, 'statspack.snap;',
trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);

这个 job 任务定义了收集数据的时间间隔:
一天有 24 个小时,1440 分钟,那么:
1/24 HH 每小时一次
1/48 HH 每半小时一次
1/144MI 每十分钟一次
1/288MI 每五分钟一次
可以修改 spauto.sql 来更改执行间隔,如:

dbms_job.submit(:jobno, 'statspack.snap;',
trunc(sysdate+1/48,'MI'), 'trunc(SYSDATE+1/48,''MI'')', TRUE, :instno);

然后执行 spauto,这样就建立了一个每 30 分钟执行一次的数据收集计划。可以查看 spauto.lis
来获得输出信息:
<-----------------------------------------------------------------------------------------------------------
SQL> @spauto

PL/SQL procedure successfully completed.

……
** **-*****-** **:**:**
----------------------------------------------------------------------------------------------------------->

关于采样间隔,通常建议以 1 小时为时间间隔,特殊需要可设置半小时作为采样间隔,但是不推荐更短。因为 statspack 的执行本身需要消耗资源,对于繁忙的生产系统,太短的采样对系统的性能会产生较大的影响(甚至会使 statspack 的执行出现在采样数据中)。

五. 生成分析报告

调用 spreport.sql 可以生成分析报告:
<-----------------------------------------------------------------------------------------------------------
SQL> @spreport

……
输入 report_name 的值: rep1205.txt

Using the report name rep1205.txt
----------------------------------------------------------------------------------------------------------->

<-----------------------------------------------------------------------------------------------------------
这样就生成了一个报告,可是如果中间停过机,那么你可能收到以下错误信息:

ERROR: Snapshots chosen span an instance shutdown: RESULTS ARE INVALID
STATSPACK report for

DB Name DB Id Instance Inst Num Release OPS Host
------------ ----------- ------------ -------- ----------- --- ------------
----------------------------------------------------------------------------------------------------------->

一个statspack 的报告不能跨越一次停机,但是之前或之后的连续区间,收集的信息依然有效。你可以选择之前或之后的采样生产report。

六. 移除定时任务

移除一个定时任务,可以如下操作:
<-----------------------------------------------------------------------------------------------------------
SQL> select job,log_user,priv_user,last_date,next_date,interval from user_jobs;

JOB LOG_USER LAST_DATE NEXT_DATE INTERVAL

---------- ------------------------------ ------------------------------ ------------------------------
22 PERFSTAT ****-**-*:**:**:** ****-**-* **:**:** trunc(SYSDATE+1/144,'MI')

SQL> execute dbms_job.remove('22')

PL/SQL procedure successfully completed
----------------------------------------------------------------------------------------------------------->

当你完成了一个采样报告,你应该及时移除这个 job 任务,在生产环境中,遗漏一个无人照顾的 job 是非常危险的,如果 statspack 运行一个星期,采样的数据量是非常惊人的。


参考:[url]http://hi.baidu.com/jackli00/blog/item/0fea4888be3ebcb90f2444c6.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值