1 © 2010 Julian Dyke Real Application Testing Julian Dyke Independent Consultant juliandyke.com Web Version
© 2010 Julian Dyke juliandyke.com 2 Real Application Testing Introduction 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
© 2010 Julian Dyke juliandyke.com 3 Real Application Testing Database 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
© 2010 Julian Dyke juliandyke.com 4 Real Application Testing Workload Capture To capture workload on an existing system: Create a operating system directory e.g. 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:
© 2010 Julian Dyke juliandyke.com 5 Real Application Testing Replay 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
© 2010 Julian Dyke juliandyke.com 6 Real Application Testing Workload 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 mode=CALIBRATE \ replaydir=/home/oracle/rat/test1 $ wrc 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
© 2010 Julian Dyke juliandyke.com 7 Real Application Testing Workload 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 LINESIZE 200 VAR v_rep_rpt CLOB; DECLARE l_cap_id NUMBER; l_rep_id NUMBER; BEGIN l_cap_id := dbms_workload_replay.get_replay_info (dir => 'DIR4'); SELECT MAX (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 => DBMS_WORKLOAD_CAPTURE.TYPE_TEXT ); END; / PRINT :v_rep_rpt
© 2010 Julian Dyke juliandyke.com 8 Real Application Testing SQL 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
© 2010 Julian Dyke juliandyke.com 9 Thank you for your interest