Oracle中暗藏的珍宝:STATSPACK
安装 STATSPACK
互联网上大量的相关文章,加上甲骨文的文件,包括如何安装STATSPACK并采取快照,我不想在这里重复(除非常简单的叙述) 。STATSPACK安装完成后,有许多疑问, “现在要做什么? ” PERFSTAT架构会是什么样子?使用什么表格?怎么样定制STATSPACK收集?你如何管理资料库?这些都是向前发展的相关问题。
PERFSTAT架构是STATSPACK的所有者。一个共同的做法是将STATS$表中封装在单独的表空间,并且表空间在10g前的版本巧妙地命名为PERFSTAT(在SYSAUX中可以找到 ) 。在古老的版本,以系统用户的运行身份两个脚本,该架构就被创建和配置, 这两个脚本是catdbsyn.sql和dbmspool.sql ,两个都可以在$ORACLE_HOME/rdbms/admin目录( catdbsyn是被管理员废弃的, dbmspool在下一个步骤运行)中找到 。建立适当的spcreate.sql脚本,此脚本将有助你获得的本地信息,同时也将产生日志文件。你还可以安装在批处理模式,但互动模式才是最容易使用。
STATSPACK的演变跨了越数据库管理系统各个版本。在Oracle 8.1.7版本 , 28张表格被创建。在10.2.0.1版本中,PERFSTAT架构始于68表格。
在10g(以及后来的版本)版本中PERFSTAT架构放在SYSAUX表空间,而且该架构可以选择退出SYSAUX,如果你选择这样做。你可以通过查看基于STATSPACK OCCUPANT_NAME的V$SYSAUX_OCCUPANTS视图确认此次操作。任何版本的STATSPACK在安装中都有共同点,将TIMED_STATISTICS参数设置为true,将导致更好的数据性能分析。
配置STATSPACK
下一步是设定(或变更)收集选项,他由两部分组成:级别和阈值。在10g和后来的文档关于这个的是很少的-是很难找到,但一个“See Also”标记能指引你到Oracle9i documentation。在这里,甚至一些更老的资料都可以找到。
一旦准备启用快照,下一步要做的就是要创造一些任务。三个任务将涉及我们在AWR 看到(如何采取快照和管理共享)自动操作。这些任务是:启用快照,清除快照,并进行定制报告,如报告局部增长信息。
创建一个每小时运行一次的任务:
SYS.DBMS_JOB.REMOVE(3);
COMMIT;
END;
/
--
-- JOB3 (Job)
--
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'statspack.snap;'
,next_date => to_date('17/10/2008 17:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'trunc(SYSDATE+1/24,''HH'')'
,no_parse => FALSE
,instance => 1
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/
创建一个清洗仓库的任务:
SYS.DBMS_JOB.REMOVE(4);
COMMIT;
END;
/
--
-- JOB4 (Job)
--
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'sppurpkg.purge(45);'
,next_date => to_date('18/10/2008 13:29:23','dd/mm/yyyy hh24:mi:ss')
,interval => 'SYSDATE+1'
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/
最后,监督/收集局部增长信息:
SYS.DBMS_JOB.REMOVE(21);
COMMIT;
END;
/
--
-- JOB21 (Job)
--
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'sp_growth;'
,next_date => to_date('17/10/2008 18:31:49','dd/mm/yyyy hh24:mi:ss')
,interval => 'sysdate+1'
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/
注意三个工作是有秩序的。首先是任务编号和你的系统是相关的;在这所显示的是些例子,这些例子的任务ID是3 ,4和21 。第二是用于清除工作的参数;这个例子中使用该参数为45。第三是设置两个任务之间的时间间隔。间隔设置为sysdate +1 ,所以你看到的奇数next_date时间是由于一种潜移默化开始时间的结果。你可以设定时间间隔更精确,例如在一个小时的具体时间。
最后的任务是使用定制表,视图和程序,以监测数据文件和局部增长,但你并不限于这方面的工作。无论你从PERFSTAT架构内部查询出的数据字典,都不涉及任何跟AWR有关事是公平的。如果你想直接查看TATS$ 
当然,使用该数据主要的方式是与单一的时间点相对的跨时间。然而,如果你想看看是否有快照之间的度量改变了,直接看看它而不是运行报告。
总结
STATSPACK在很大程度上仍然是一种可行的选择,监测和诊断性能。随着今天的最新和最强大的甲骨版本文和其易管理性的增强,好像AWR和ADDM 将STATSPACK投送流放岛。但宝物和奖励仍然可以在这个流亡地方发现,并最终取决于你们来找到他们,使大部分是可用的。我们知道,甲骨文通过系统相关的PERFSTAT表数量的增加和会议活动证明将继续支持STATSPACK。表的数量在11.1.0.6版本中已发展到73表格,几乎两倍于它安装在8.1.7.4版本时的数量 。