Statspack初步学和用
第二篇 使用初步
以perfstat用户连接,如果你刚执行完@spcreate,则oracle默认将当前用户切换为perfstat。
首先生成两次采样。
SQL>execute statspack.snap
PL/SQL procedure successfully completed.
SQL>execute statspack.snap
PL/SQL procedure successfully completed.
执行@spreport生成报告(该文件物理存放路径与spcreate相同)。
SQL> @spreport
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
----------- ------------ -------- ------------
3398983194 JSSWEB 1 jssweb
Instances in this Statspack schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
----------- -------- ------------ ------------ ------------
3398983194 1 JSSWEB jssweb JSS
Using 3398983194 for database Id
Using 1 for instance number
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing without
specifying a number lists all completed snapshots.
Listing all Completed Snapshots
Snap
Instance DB Name Snap Id Snap Started Level Comment
------------ ------------ --------- ----------------- ----- --------------------
jssweb JSSWEB 1 05 9月 2007 12:5 5
9
2 05 9月 2007 13:0 5
2
输入采样的起始值和结束值,注意在生成报告的时候所选择的采样不能跨越一次停机(即stats$snapshot中STARTUP_TIME相同),不然会报错。
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输入 begin_snap 的值: 1
Begin Snapshot Id specified: 1
输入 end_snap 的值: 2
End Snapshot Id specified: 2
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is sp_1_2. To use this name,
press to continue, otherwise enter an alternative.
输入 report_name 的值: d:\report.txt
报告文件的输出路径。
................
................
................
undo_tablespace UNDOTBS1
user_dump_dest F:\ORACLE\PRODUCT\10.2.0\ADMIN\JS
-------------------------------------------------------------
End of Report ( d:\report.txt )
从生成采样到生成报告的大致操作步骤就是这样,当然我们这样操作在实际业务过程中是不现实的,主要的问题有以下几条:
1、采样生成间隔时间太短,未必能真正体现出服务器在业务实际运行中的状态,并且时间太短的情况下,可能statspack运行本身都会对分析结果的生成造成影响,毕竟statspack也是在运行一堆sql,也会被计入统计范围内。
2、采样的频度太低,以上述为例仅执行两次,以此为基准生成的报告恐怕也真的是仅供参考。
解决上述问题,我们按照如下步骤实施:
1、创建一个job,我们设定其每个小时自动收集一次采样。
Variable job number;
begin
dbms_job.submit(:job,'statspack.snap;',trunc(sysdate+1/24,'hh24'),'trunc(sysdate+1/24,''hh24'')');
commit;
end;
/
查看当前job
SQL> select job,schema_user,next_date,interval,what from user_jobs
JOB SCHEMA_USE NEXT_DATE INTERVAL WHAT
---------- ---------- -------------- ------------------------------ -----------------------
44 PERFSTAT 11-9月 -07 trunc(SYSDATE+1/24,'HH') statspack.snap;
2、考虑到采样结果还是相当占空间,不能让其一直执行下去,我们再创建一个job,让它在明天凌晨自动停止采样job的执行。
Variable job number;
begin
dbms_job.submit(:job,'dbms_job.broken(44,true);',trunc(sysdate+1),'null');
commit;
end;
/
Ok,竣工,等上几个小时,看看采样生成的怎么样了。
SQL> select snap_id,snap_time,startup_time from stats$snapshot;
SNAP_ID SNAP_TIME STARTUP_TIME
---------- ------------------- -------------------
11 2007-09-11 11:00:03 2007-09-11 09:16:05
12 2007-09-11 12:00:03 2007-09-11 09:16:05
13 2007-09-11 13:00:04 2007-09-11 09:16:05
1 2007-09-10 12:59:56 2007-09-10 09:04:22
2 2007-09-10 13:02:01 2007-09-10 09:04:22
重新执行@spreport,再生成一份报告看看吧。
如果你想删除某些statspack收集的历史采样,直接通过delete,指定snap_id即可:
SQL> delete stats$snapshot where snap_id=1;
已删除 1 行。
SQL> select snap_id,snap_time,startup_time from stats$snapshot;
SNAP_ID SNAP_TIME STARTUP_TIME
---------- ------------------- -------------------
11 2007-09-11 11:00:03 2007-09-11 09:16:05
12 2007-09-11 12:00:03 2007-09-11 09:16:05
13 2007-09-11 13:00:04 2007-09-11 09:16:05
2 2007-09-10 13:02:01 2007-09-10 09:04:22
SQL>
如果你想删除所有的采样数据但保留statspack的库结构,oracle也提供了脚本,执行@sptrunc即可。该脚本是通过truncate删除各表记录,效率比delete高很多。
如果你想彻底干掉本机安装的statspack的话,那就更简单了,执行@spdrop,干净不留痕:)。
注:如果你在执行@spxxx的时候报SP-0310错误,可能是SQLPATH路径未设,你可以通过三种方式解决:
1、本地设置SQLPATH:
F:\> SET SQLPATH=F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN
如果用这种方式的话,本次会话结束SQLPATH就失效了,下次打开还得再次设置。
2、设置注册表(linux环境的话就设置环境变量):
开始->运行->regedit
HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->KEY_ORADB10G->新建字符串值SQLPATH,数值数据:F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN
3、指定全路径:
SQL> @F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\spreport.sql
或
SQL> @%ORACLE_HOME%\RDBMS\ADMIN\spreport.sql
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7204674/viewspace-606262/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7204674/viewspace-606262/