Wie schon im <link blog-detailansicht database-workload-capture-in-der-version-10g-teil-1.html _top external-link-new-window internal link in current>Tipp des Monats Oktober 2008 angekündigt, beschäftigen wir uns diesen Monat mit der Wiedergabe von der mit dem Oracle Workload Capture aufgenommenen Last.
Als erstes kopieren Sie die Dateien, die bei der Aufnahme entstanden sind, auf das Zielsystem, auf dem die Last wiedergegeben werden soll.
Erstellen Sie als nächstes wieder ein Directory Objekt welches auf das Verzeichnis zeigt, in das Sie die Dateien kopiert haben. Im Fall unseres Monatstipps wird folgender Befehl verwendet:
SQL> CREATE DIRECTORY db_workload_dir AS 'c:\temp\oracle';
Verzeichnis wurde erstellt.
Bereiten Sie die Daten der Aufnahmen zuerst für den Replay vor. Dies geschieht mit folgendem PL/SQL Block:
BEGIN
DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE(
capture_dir => 'DB_WORKLOAD_DIR');
END;
/
Wurden die Daten vorbereitet, sollte nun der Replay initialisiert werden. Benutzen Sie am besten diesen PL/SQL Block:
BEGIN
DBMS_WORKLOAD_REPLAY.INITIALIZE_REPLAY(
replay_name => 'Monatstipp_Replay1',
replay_dir => 'DB_WORKLOAD_DIR');
END;
/
Im Anschluss wird die Datenbank auf die Wiedergabe vorbereitet. Dies geschieht mit folgendem SQL*Plus Befehl:
exec DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY
Um Informationen über, z. B. Anzahl der Client Sessions zu bekommenen, führen Sie den Workload Replay Client mit dem Zusatz MODE=calibrate aus. Damit vermeiden Sie Probleme, sollte der Replay auf einem Multiprozessorsystem aufgenommen worden sein. Setzen Sie den Befehl in der Kommandozeile wie folgt ab:
DOS> wrc system/sys@o11g MODE=calibrate REPLAYDIR=c:\temp\oracle
Workload Replay Client: Release 11.1.0.6.0 - Production on Mo Nov 3 11:36:18 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Report for Workload in: C:\temp\oracle
-----------------------
Recommendation:
Consider using at least 1 clients divided among 1 CPU(s).
Workload Characteristics:
- max concurrency: 8 sessions
- total number of sessions: 16
Assumptions:
- 1 client process per 50 concurrent sessions
- 4 client process per CPU
- think time scale = 100
- connect time scale = 100
- synchronization = TRUE
Starten Sie auf der Kommadozeile die entsprechende Anzahl an Clients:
DOS>wrc system/sys@o11g REPLAYDIR=c:\temp\oracle
Wait for the replay to start (11:40:18)
Wechseln Sie wieder auf die Datenbank und führen Sie in SQL*Plus folgenden Aufruf aus:
exec DBMS_WORKLOAD_REPLAY.START_REPLAY
In der Kommandozeile erscheint die folgende Ausgabe:
Replay started (11:41:05)
Wurde der Replay beendet, erscheint folgende Meldung:
Replay finished (11:16:11)
Über die View DBA_WORKLOAD_REPLAYS erhalten Sie interessante Informationen über die Einstellungen des Replays und sehen u. a. in der Spalte Status, ob der Replay beendet wurde.
SQL> col name for a20
SQL> col dir_path for a20
SQL> col status for a20
SQL> select id, name, dir_path, status from dba_workload_replays;
ID NAME DIR_PATH STATUS
---------- -------------------- ----------------- ------------------
1 Monatstipp_Replay1 c:\temp\oracle COMPLETE
Am Ende können Sie sich noch einen Report des Replays erzeugen lassen. Benützen Sie dazu folgenden PL/SQL Block:
set serveroutput on
set linesize 1000
set pagesize 1000
Declare
wl_cp_id Number;
wl_rp_id Number;
wl_rp_report clob;
Begin
wl_cp_id := DBMS_WORKLOAD_REPLAY.GET_REPLAY_INFO(
dir=>'DB_WORKLOAD_DIR');
select max(id)
into wl_rp_id
from dba_workload_replays
where capture_id = wl_cp_id;
wl_rp_report := DBMS_Workload_replay.REPORT(
replay_id=>wl_rp_id,
format=>DBMS_WORKLOAD_REPLAY.TYPE_TEXT);
DBMS_OUTPUT.PUT_LINE(wl_rp_report);
END;
/
Ihr Report sollte ungefähr wie dieser Report aussehen. Hier erhalten Sie Informationen über den Ablauf des Replays, z. B. Dauer der Capture und der Replays, Datenbankversion, ... und vieles, vieles mehr.
In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den
Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.