使用hyperpacer实现AWR报告的同步收集
上一篇 /
下一篇 2016-05-05 14:23:18
/ 个人分类:hyperpacer
上一篇日志里说了一下
资源同步收集的实现。
`l;l \o0]K!f?2Y0由于日常使用最多的
数据库为
ORACLE,因此,又打起了oracle的
AWR报告的主意。
5l5]
wu |n @0过去我们执行
测试,都是执行开始和结束分别手动建立一个快照,然后需要这部分数据的时候再去获取AWR报告查看。
y T.LO.Mg1]f0但是有的时候忙乱起来或者一个任务项交给别人来做就经常会有忘记建立快照的情况,这时候就只能通过ORACLE自己默认建立的快照来获取了。但是我们知道ORACLE默认是一个小时才建立一个快照,且建立快照的时间点很难跟我们的测试过程能匹配到一起,这样我们获取的报告就有了很多的干扰项。
51Testing软件测试网PI'VdN9\2X4B
aq那么,能不能使用
hyperpacer同步把AWR报告也收集过来呢,如果可以集成到脚本中,那么获取AWR报告的时候使用的始末快照就能跟我们的测试过程完全匹配了,也防止了因为疏忽忘记建立快照的情况。
51Testing软件测试网*\
OaxZ2c仔细研究了hyperpacer提供的JDBC采样器,发现hyperpacer完全可以胜任这个需求。
B\Y`x;M0于是大概梳理了一下思路:
Iz)r(f;E#M!H0首先:
!Aq'~C9L0在初始化场景内:添加JDBC采样器,分别进行两个操作:一个是通过
dbms_
workload_repository这个包提供的create_
snapshot()建立快照,然后查询当前最大的快照号,也就是我们刚刚建立的快照,作为测试的起始快照号;
5K5H$O
N'dz7C0在收尾场景内:添加JDBC采样器,同样建立快照,并查询当前最大快照号,作为测试的终止快照号;再多添加一个JDBC采样器,通过包dbms_workload_repository提供的方法awr_report_html获取两个快照间的AWR报告。
\zaUG+SF0_8hS#|7ZNF0pH^0--------------------
dtWR:C#]Z051Testing软件测试网 q+O#vEay;wT理想很美好,但是实际实现起来确发现没有那么简单。原来想当然的是在初始化场景里先获取测试开始的快照号,然后作为变量传给收尾场景的JDBC采样器。但是执行的时候一直报变量无效。
51Testing软件测试网{Ur|,[s想了好久不知道是什么原因,最后忽然想明白原因了,没想到
学习使用了这么长时间的hyperpacer,最后在小--(阴)--(沟)---(里)翻了船。
51Testing软件测试网 `nN^$Rrd获取初始快照号的
采样器建在初始化场景下,这也就决定了这个采样器的作用域只能在初始化场景下,我把它输出的变量传给收尾场景的采样器,超出了作用域自然就无法识别了。