以前写过awr的,今天写了一个statspack的作为补充,不过因为statspack没有提供在PLSQL中生成statspack的api,只能通过调用一个SQL脚本来生成,所以只能包装成shell,脚本的功能和使用方法都类似。 使用方法: 1、

, , ,

    在statspack中需要模仿AWR的delta列,为了避免self-join带来的开销,我使用了Oracle中强悍的分析函数,可以对相邻的两个snap做差值计算,SQL语句有点长,不过关键点就是两处,一个是over(part

, ,

对于AWR,SQL统计信息[非累积值]可以通过对应的delta列取到,而statspack中的基表中没有delta列,那么statspack是如何取得快照差值的,可以通过spreport.sql脚本找到相应的求值语句。 spreport.sql中的计算两个sn

,