在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;…