Real Application Testing
Download
Report
Transcript Real Application Testing
Real Application
Testing
Julian Dyke
Independent Consultant
Web Version
1
© 2010 Julian Dyke
juliandyke.com
Real Application Testing
Introduction
2
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
Real Application Testing
Database Replay
3
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
Real Application Testing
Workload Capture
To capture workload on an existing system:
Create a operating system directory e.g.
[oracle@server14]$ mkdir /home/oracle/rat/test1
Create an Oracle directory e.g.:
SQL> CREATE DIRECTORY dir1 AS '/home/oracle/rat/test1';
Start the capture process:
dbms_workload_capture.start_capture
(
name => 'TEST4',
dir => 'DIR4'
);
Run the workload:
Finish the capture process:
dbms_workload_capture.finish_capture;
4
© 2010 Julian Dyke
juliandyke.com
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'
);
Prepare the replay
dbms_workload_replay.prepare_replay
(
synchronization => FALSE
);
5
© 2010 Julian Dyke
juliandyke.com
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
$ wrc tpcc/tpcc@cluster1-scan mode=CALIBRATE \
replaydir=/home/oracle/rat/test1
The calibration process recommends the number of client processes
required to perform the replay
Replay the workload
$ wrc tpcc/tpcc@cluster1-scan mode=REPLAY \
replaydir=/home/oracle/rat/test1
6
The client will not start to replay the workload until the replay has been
started on the target database
© 2010 Julian Dyke
juliandyke.com
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 500000 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
7
© 2010 Julian Dyke
juliandyke.com
Real Application Testing
SQL Performance Analyzer
8
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
Thank you for your interest
[email protected]
9
© 2010 Julian Dyke
juliandyke.com