Oracle Database Replay
OCA/OCP认证考试指南 766页
数据库重演可以在生产系统上捕获工作负荷,然后在测试系统上重放。在重放的过程中,可以发现问题,或者查看优化的手段是否能起作用。
下面的实验通过数据库重演,查看删除索引对插入性能的提升。
1.初始化实验数据
2.捕获工作负荷
3.重放工作负荷
4.删除索引,再次重放工作负荷
1.初始化实验数据
-
create table test(id int);
-
-
create index inx_test on test(id);
-
-
create directory tmp_dir as '/home/lihuilin/test';
2.捕获工作负荷
-
exec dbms_workload_capture.start_capture('Test','TMP_DIR');
-
-
begin
-
for x in 1..200000 loop
-
insert into test values(x);
-
commit;
-
end loop;
-
end;
-
/
-
-
exec dbms_workload_capture.finish_capture;
-
-
exec dbms_workload_replay.process_capture('TMP_DIR');
3.重放工作负荷(先删除test表数据)
-
truncate table test;
-
-
exec dbms_workload_replay.initialize_replay('replay_20140212_1','TMP_DIR');
-
-
exec dbms_workload_replay.prepare_replay;
-
-
--在此时,打开命令行输入:wrc edmond/edmond replaydir=/home/lihuilin/test
-
-
exec dbms_workload_replay.start_replay;
查看报表
-
select id,capture_id,directory,start_time,end_time from dba_workload_replays;
-
-
set long 100000;
-
set pagesize 40000;
-
spool /home/lihuilin/桌面/r1.html
-
select dbms_workload_replay.report(12,'HTML') from dual;
-
spool off


4.删除索引,再次重放工作负荷
-
drop index inx_test;
-
-
truncate table test;
-
-
exec dbms_workload_replay.initialize_replay('replay_20140212_2','TMP_DIR');
-
-
exec dbms_workload_replay.prepare_replay;
-
-
--在此时,打开命令行输入:wrc edmond/edmond replaydir=/home/lihuilin/test
-
-
exec dbms_workload_replay.start_replay;
再次查看报表
-
select id,capture_id,directory,start_time,end_time from dba_workload_replays;
-
-
set long 100000;
-
set pagesize 40000;
-
spool /home/lihuilin/桌面/r2.html
-
select dbms_workload_replay.report(14,'HTML') from dual;
-
spool off


通过比对两次重放的结果,发现性能有所提升...
删除不需要的捕获和重放。
捕获和重放的信息分别存放在dba_workload_captures、dba_workload_replays
可以使用如下命令删除
exec dbms_workload_replay.DELETE_REPLAY_INFO(1);
exec dbms_workload_capture.DELETE_CAPTURE_INFO(1);
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-1080520/
,如需转载,请注明出处,否则将追究法律责任。