Upload
gordon-foster
View
219
Download
1
Embed Size (px)
Citation preview
1 © 2010 Julian Dyke
Real ApplicationTestingJulian Dyke
Independent Consultant
juliandyke.com
Web Version
2
© 2010 Julian Dykejuliandyke.com
Real Application TestingIntroduction Introduced in Oracle 11.1 Licensable option Includes
Database Replay SQL Performance Analyzer
Database Replay Captures database workload on production system Replays captured workload on test system
Optionally includes concurrency and timing characteristics Generates reports and recommends changes
SQL Performance Analyzer Identifies performance divergence between workloads on source and
target platforms Generates tuning recommendations
3
© 2010 Julian Dykejuliandyke.com
Real Application TestingDatabase Replay Requires the following steps:
Capture workload into capture files Copy files to test system and preprocess them Replay files on test system Perform detailed analysis of workload capture and replay using reports
generated by Database Replay
Potential applications Test operating system upgrades Test database upgrades and migrations Test parameter changes Evaluate migration from single-instance to RAC Test storage changes Debugging Test database manageability features
4
© 2010 Julian Dykejuliandyke.com
Real Application TestingWorkload Capture To capture workload on an existing system:
Create a operating system directory e.g.
[oracle@server14]$ mkdir /home/oracle/rat/test1
SQL> CREATE DIRECTORY dir1 AS '/home/oracle/rat/test1';
Create an Oracle directory e.g.:
Run the workload:
Start the capture process:
dbms_workload_capture.start_capture(
name => 'TEST4',dir => 'DIR4'
);
dbms_workload_capture.finish_capture;
Finish the capture process:
5
© 2010 Julian Dykejuliandyke.com
Real Application TestingReplay Preparation Copy the capture files to the target database server On the target database
Preprocess the captured workload
dbms_workload_replay.process_capture(
capture_dir => 'DIR1');
Initialize the replay
dbms_workload_replay.initialize_replay(
replay_name => 'REPLAY1',replay_dir => 'DIR1'
);
dbms_workload_replay.prepare_replay(
synchronization => FALSE);
Prepare the replay
6
© 2010 Julian Dykejuliandyke.com
Real Application TestingWorkload Replay Copy the workload files to the client system. For example:
/home/oracle/rat/test1 On the client
Run the workload client to calibrate the replay
The calibration process recommends the number of client processes required to perform the replay Replay the workload
$ wrc tpcc/tpcc@cluster1-scan mode=CALIBRATE \ replaydir=/home/oracle/rat/test1
$ wrc tpcc/tpcc@cluster1-scan mode=REPLAY \replaydir=/home/oracle/rat/test1
The client will not start to replay the workload until the replay has been started on the target database
7
© 2010 Julian Dykejuliandyke.com
Real Application TestingWorkload Replay On the target database
Start the replay process
dbms_workload_replay.start_replay;
When the replay process completes on the client, run the replay report
SET SERVEROUTPUT ON TRIMSPOOL ON LONG 500000 LINESIZE 200VAR v_rep_rpt CLOB;
DECLAREl_cap_id NUMBER; l_rep_id NUMBER;
BEGINl_cap_id := dbms_workload_replay.get_replay_info (dir => 'DIR4');
SELECT MAX (id) INTO l_rep_id FROM dba_workload_replaysWHERE capture_id = l_cap_id;
:v_rep_rpt := dbms_workload_replay.report(
replay_id => l_rep_id, format => DBMS_WORKLOAD_CAPTURE.TYPE_TEXT
);END;/PRINT :v_rep_rpt
8
© 2010 Julian Dykejuliandyke.com
Real Application TestingSQL Performance Analyzer Can analyze impact on SQL performance of
Database upgrade Configuration changes to operating system or hardware Schema changes Changes to database initialization parameters Refreshing optimizer statistics SQL tuning