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了。

2 thoughts on “Real Application Testing for Earlier Releases

  1. 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

Leave a Reply

Your email address will not be published. Required fields are marked *