RAT 是Oracle 11g的一个新特性.它的目的是评估数据的性能。当我们对数据库进行升级或改动一些配置,换数据库服务器时可以对改动之前和改动之后的性能进行对比.要使两者的性能具有可比性,并且切合实际。就需要先在生产环境中capture某一个时间段的所有操作。然后把它们在测试环境中进行replay.
一.Capture步骤
创建一个系统目录,例如d:\capture 创建一个Oracle 目录:create directory dir1 as ‘d:\capture’ 开始capture:dbms_workload_capture.start_capture(name=>’TEST’,dir=>’DIR1’);(此处DIR1必须大写) 在数据库中做一些操作 结束capture: dbms_workload_capture.finish_capture;
二.Replay 准备工作
- 把目标server上的capture files拷贝到测试的server上.假设在测试的server上同样建一个目标d:\capture
- 创建一个Oracle 目录:create directory dir1 as ‘d:\capture’
Process workload:dbms_workload_replay.process_capture
(
capture_dir => ‘DIR1′)
);
Initialize the replay
dbms_workload_replay.initialize_replay
(
replay_name => ‘REPLAY1′,
replay_dir => ‘DIR1′
);
Prepare the replay
dbms_workload_replay.prepare_replay
(
synchronization => FALSE
);
三.Replay 正式开始:
把capture files 拷贝到本地,假设也拷到d:\capture.
打开cmd.运行命令:wrc Arwen/Arwen@ora11r2 mode = calibrate replaydir=’d:\capture’;
接着运行wrc Arwen/Arwen@ora11r2 mode = replay replaydir = ‘d:\capture’
打开别外一个cmd用sqlplus 连接到db然后运行exec dbms_workload_replay.start_replay.
在前一个cmd中会有提示:replay started :时间 replay finished :时间
Replay完之后生成报表:
DECLARE
l_cap_idNUMBER;
l_rep_idNUMBER;
v_rep_rptCLOB;
REPORTFILE UTL_FILE.FILE_TYPE;
BEGIN
l_cap_id:= dbms_workload_replay.get_replay_info(dir =>'DIR1');
SELECTMAX (id) INTO l_rep_id FROM dba_workload_replays
WHERE capture_id= l_cap_id;
v_rep_rpt:= dbms_workload_replay.report(replay_id=> l_rep_id,format=>'HTML');
REPORTFILE:=UTL_FILE.FOPEN('DIR1','report.HTML','W',32767);
UTL_FILE.PUT_LINE( REPORTFILE, v_rep_rpt, true);
UTL_FILE.FCLOSE(REPORTFILE);
END;
(注:capture完之后在对应的目录中也会生成一个html的report.可以拿来和replay产生的report.html对比).