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完之后生成报表:DECLAREl_cap_idNUMBER;l_rep_idNUMBER;v_rep_rptCLOB;REPORTFILE UTL_FILE.FILE_TYPE;BEGINl_cap_id:=dbms_workload_replay.get_replay_info(dir=>'DIR1');SELECTMAX(id)INTO l_rep_idFROM dba_workload_replaysWHERE 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对比).