Real Application Testing for Earlier Releases
在Oracle11g中有一个新功能,称为Real Application Testing,直接的竞争对手是HP/Mercury的Load Runner,用于系统测试,在正式的产品环境中通过Capture抓取实际的Load,然后在测试环境中Replay,这样来测试新环境的性能。
现在Real Application Testing的部分功能通过打patch的方式在更早的Oracle版本中也可以使用了,这些版本包括Oracle9i和Oracle10g。在10.2.0.4 Patchset中已经包含了这部分功能,因此如果你已经将数据库升级到10.2.0.4,那么不再需要安装额外的oneoff patch,否则则需要去下载一个单独的patch包(详细的文档参看Metalink Note:560977.1)。
为什么要让老版本的数据库也支持Real Application Testing呢?Oracle的想法很简单,因为Oracle希望客户将自己的数据库都尽快升级到11g,那么对于客户来说一个很大的顾虑就是,我现在的9i或者10g数据库上跑的很正常的应用到了11g上是不是会出现大的性能问题呢?怎样才能完善地测试呢?
所以Oracle将Real Application Testing中的Workload Capture功能加入到了9i和10g数据库里,但是,没有把Workload Replay的功能加入,用脚想也知道会这样了,Workload Capture可以把老版本的生产库中的压力抓出来,但是,你只能到11g的数据库中去重新播放来观察效果。
体现到数据库对象上,就是在9i和10g库中只会存在DBMS_WORKLOAD_CAPTURE这个包,而没有DBMS_WORKLOAD_REPLAY包。
抓取Workload很简单。
- --只有在10.2.0.4版本中需要设置pre_11g_enable_capture参数,其它版本不需要
- alter system set pre_11g_enable_capture=true;
- --先创建一个filter,只抓取指定用户的workload
- BEGIN
- DBMS_WORKLOAD_CAPTURE.ADD_FILTER (
- fname => 'USER_KAMUS',
- fattribute => 'USER',
- fvalue => 'KAMUS');
- END;
- /
- --开始抓取,持续时间1分钟,其中TMP_DIR是一个Directory,需要先用create directory来创建
- BEGIN
- DBMS_WORKLOAD_CAPTURE.START_CAPTURE (name => 'kamus_test_capture',
- dir => 'TMP_DIR',
- duration => 60);
- END;
- /
- --将被抓取的这段时间内的AWR数据也导出来,用以之后的AWR Report compare
- BEGIN
- DBMS_WORKLOAD_CAPTURE.EXPORT_AWR (capture_id => 1);
- END;
- /
之后会在TMP_DIR指向的目录中生成一系列的文件,把这些文件传输到11g的机器上,然后就可以开始Process以及Replay了。
![Chanel [K]](http://www.dbform.com/wp-content/chanelk.png)
RAT和LoadRunner确实有竞争关系,不过各有所长:LR的适用范围更广,RAT在针对oracle的应用上有不可替代的优势。而且效率更高,我曾看到过一个Oracle官方的比较,同样一个任务,用:DB Replay: 2 weeks,而用LoadRunner: 30 weeks
另外,oracle收购了Empirix的e-load, e-tester之后,就又多了一个跟LR竞争的产品了,参考下面我这个帖子:
http://www.rickyzhu.com/451_oracle-get-etestsuite.html
ricky
27 Aug 08 at 8:31 pm
AQM里面的功能测试套件就是从Empirix的e-load, e-tester来的吧
kamus
29 Aug 08 at 12:32 am