rat的两个主要组件database replay和sql performance analyzer(SPA),其中database reply可capture生产库的工作负载,并replay到测试库上,以主动发现升级问题.
database replay可以用于测试数据库升级,操作系统升级,存储系统升级,数据库配置更改.
database replay基本步骤是工作负载capture,工作负载processing,工作负载replay,对比产生报告.
以下是一个简单的测试:
db1:ct6604
db2:ct6604sb
1.通过rman,datapump,snapshot standby,logical standby来实现测试库与与生产库在数据capture前一致.
2.创建工作负载目录
--ct6604
create directory cap_dump as '/home/oracle/oracap';
3.设置capture过滤
--ct6604
begin
dbms_workload_capture.ADD_FILTER(fname=>'filter01',fattribute=>'user',
fvalue=>'scott');
end;
4.开始capture,查看capture状态
--ct6604
--在开始capture时,已经在执行的事务可能capture不到.
begin
dbms_workload_capture.START_CAPTURE('cap01','CAP_DUMP',duration=>10);
end;
select * from dba_workload_captures;
得到capture_id为14
5.完成并结束capture
--ct6604
begin
dbms_workload_capture.FINISH_CAPTURE;
end;
6.导出生产库一个AWR报告
--ct6604
begin
dbms_workload_capture.export_awr(14);
end;
7.传送capture文件到测试库
--ct6604
[oracle@ct6604 oracap]$ pwd
/home/oracle/oracap
[oracle@ct6604 oracap]$ scp -r * 192.108.56.120:~/oracap/
8.创建工作负载目录
--ct6604sb
create directory cap_dump as '/home/oracle/oracap';
9.处理capture到的负载数据
--ct6604sb
begin
dbms_workload_replay.PROCESS_CAPTURE('CAP_DUMP');
end;
10.初始化replay数据
--ct6604sb
begin
dbms_workload_replay.INITIALIZE_REPLAY('rep01','CAP_DUMP');
end;
11.重映射外部连接
--ct6604sb
select * from dba_workload_connection_map;
begin dbms_workload_replay.REMAP_CONNECTION(1,'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.108.56.121)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ct6604sb)))');
end;
12.准备replay工作负载
--ct6604sb
begin
dbms_workload_replay.PREPARE_REPLAY(synchronization => true,connect_time_scale => 100,think_time_scale => 100,think_time_auto_correct => false);
end;
13.确定replay工作负载所需的主机和客户机数,启动replay客户机
--ct6604sb
wrc system/system mode=calibrate replaydir=/home/oracle/oracap
wrc system/system replaydir=/home/oracle/oracap
14.replay工作负载
--ct6604sb
begin
dbms_workload_replay.START_REPLAY;
end;
--可使用dbms_workload_replay.cancel_REPLAY取消replay操作
15.导入capture和replay时的awr
--ct6604sb
select * from dba_workload_captures;得到capture_id为1
select * from dba_workload_replays;得到replay_id为1
select dbms_workload_capture.IMPORT_AWR(1,'SYSTEM') from dual;
select dbms_workload_replay.IMPORT_AWR(1,'SYSTEM') from dual;
16.查看capture和replay时的报告
--ct6604sb
select dbms_workload_capture.REPORT(1,'TEXT') from dual;
select dbms_workload_replay.REPORT(1,'TEXT') from dual;