Response Time Analyse 10g 11/2005 Response Time Analyse unter Oracle 10g Dr. Günter Unbescheid Database Consult GmbH – Jachenau Copyright Database Consult GmbH 1 Response Time Analyse 10g 11/2005 Prolog 1 Response Time Analyse 10g Performanz bezeichnet in der Informatik den Ressourcenverbrauch und die Qualität der Ausgabe von Programmen und Hardware. Meistens ist mit Performance die Datenrate gemeint, also die Menge von Daten die innerhalb einer bestimmten Zeitspanne verarbeitet werden kann Wikipedia Optimierung ist die Steigerung der Performance Optimierung kein Troubleshooting – auch wenn sie oftmals grosse „Erleichterung“ verschafft. ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 2 von 197 2 Response Time Analyse 10g 11/2005 Prolog 2 Response Time Analyse 10g Performanz – Vorsorge Maßnahmen zur pauschalen Vermeidung von möglichen Engpässen – wie z.B. Verteilung von IO, Steigerung der Treffenquote im Cache, Vermeidung von Full Scans Performanz – Planung Systemanalyse und spezifische Implementierung Performanz – Tuning Maßnahmen zur Optimierung der Antworzeit im Kontext eines konkreten Dialogs/Programms ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 3 von 197 3 Response Time Analyse 10g 11/2005 Agenda Response Time Analyse 10g • Die Methode im Überblick • Die Werkzeuge im Überblick – – – – Die V$-Welt Tracing Repositories Diverse Hilfsmittel • Die Methode in der Praxis – Instance-Tuning – Applikations-Tuning Stand der Technik: Oracle Database 10g Release 2 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 4 von 197 4 Response Time Analyse 10g 11/2005 Response Time Analyse 10g Die Methode im Überblick ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 5 von 197 5 Response Time Analyse 10g 11/2005 Warum Performance-Tuning? Response Time Analyse 10g • Akzeptable/schnelle Antwortzeiten (AZ) • Sicherstellen der Skalierbarkeit (S) • Erkennen von Performance-Trends Methode AZ = Servicezeit + Wartezeit S durch geringe Konkurrenz um zentrale Ressourcen (gute Synchronisation) S = Synch-Bedarf * Synch-Kosten ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 6 von 197 6 Response Time Analyse 10g 11/2005 Wie optimieren wir? Response Time Analyse 10g Reduktion der Anwortzeiten durch Optimierung massgeblicher Faktoren Methode Ermittlung der Faktoren durch Aufzeichnung von Ressourcenprofilen Ressourcenprofile listen CPU- und Wartezeiten von Kontexten Oracle Wait Events und Zeitmodelle ermöglichen Profile ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 7 von 197 7 Response Time Analyse 10g 11/2005 Oracle Wait Events v$event_name Name Null? --------------- -------EVENT# NAME PARAMETER1 PARAMETER2 PARAMETER3 Methode – 9iR2 = 360 events – 10g R1 = 812 events – 10g R2 = 872 events Response Time Analyse 10g • Kernel erfasst Wartezustände – drei zusätzliche Parameter • Erste Anfänge in 7.0 – als Basis die Instanz, Session, Call (Trace) • Anzahl Ständig erweitert: Typ -----------NUMBER VARCHAR2(64) VARCHAR2(64) VARCHAR2(64) VARCHAR2(64) ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 8 von 197 8 Response Time Analyse 10g 11/2005 Zeitmodelle Methode – Statistiken für Instanz und Session • „CPU used by this session“ • „parse time CPU“ • „parse time elapsed“ etc. Response Time Analyse 10g • Kernel misst Elapsed- und CPU-Zeiten • Genauigkeit in der Regel im Mikrosekundenbereich (millionstel Sekunde – 10-6) • Kontexte – Ab 10g genauere Kontexte – 19 verschiedene Zeitstatistiken • V$SYS_TIME_MODEL • V$SESS_TIME_MODEL ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 9 von 197 9 Response Time Analyse 10g 11/2005 Kontext Response Time Analyse 10g Methode • Fokus auf geschäftsrelevante Dialoge mit kritischem Antwortzeitverhalten • Kenntnis des technologischen Umfelds • Kenntnis des konkreten Dialogablaufs – z.B. über Aktivitätsdiagramme • Messung zum richtigen Zeitpunkt in originalem System ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 10 von 197 10 Response Time Analyse 10g 11/2005 Kontext C D S S S C D D S C Session 2 S D D C D D D C C S Session 3 D C C C D D S S C D Session 4 C D S S S S C C D D Response Time Analyse 10g Session 1 Methode Zeit Grafik nach C. Millsap C = 32,5 % D = 37,5 % S = 30,0 % C = 25 % D = 75 % S=0% ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 11 von 197 11 Response Time Analyse 10g 11/2005 Ressourcenprofile Response Time Analyse 10g • • • • Liste von Wait-Events und CPU-Events Dauer ist entscheidend, nicht die Anzahl Absteigend sortiert nach Dauer Konzentration auf maßgebliche Faktoren! Methode EVENT TIME_WAITED % total AVERAGE_WAIT ------------------------------------------ ----------- ------- -----------log file parallel write 42260 42,25 12,79 log file sync 41923 41,91 140,21 db file sequential read 9015 9,01 1,16 control file sequential read 1774 1,77 ,47 control file parallel write 1074 1,07 ,24 os thread startup 885 ,88 3,99 db file scattered read 630 ,63 ,81 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 12 von 197 12 Response Time Analyse 10g 11/2005 Die Methode noch einmal… 1. Auswahl des problematischen Dialogs bzw.Programms Response Time Analyse 10g 2. Erstellen des Lastprofils zum maßgeblichen Zeitpunkt Methode 3. Optmierung der zeitintensivsten Profilkomponenten 4. Auswahl des nächsten Dialogs … ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 13 von 197 13 Response Time Analyse 10g 11/2005 … darüber hinaus ng e Ne t bs zw er k Netzwerk Betriebssystem Datenbank Entwicklung/Anwendung • Organisationsstrukturen sollten dies unterstützen! • Tuning ist (leider) nur reaktiv • Proaktives Tuning Methode u nd we An at D k an b n e tri e B em st y s – – – – Response Time Analyse 10g • Tuning ist Teamarbeit – Design – Architektur – Implementierung ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 14 von 197 14 Response Time Analyse 10g 11/2005 … darüber hinaus Response Time Analyse 10g • Tuning bei selbst-tunender Datenbank? – Weniger, jedoch komplexere Tuningprobleme – Performance-Faktoren werden unterschätzt – Macht Systemanalyse nicht überflüssig! Methode • Die „Säulen“ effizienten Tunings – Effiziente Methode – Gute Systemkenntnisse – Umfassende Teamarbeit ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 15 von 197 15 Response Time Analyse 10g 11/2005 Response Time Analyse 10g Die Werkzeuge im Überblick ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 16 von 197 16 Response Time Analyse 10g 11/2005 Werkzeuge Response Time Analyse 10g V$-Tabellen - V$-Erweiterungen 10g Automatic Worklod Repository (AWR) ADDM – Diagnostic Monitor und Advisories Diagnostic Events DBMS_MONITOR STATSPACK Eigene Skripte trcsess TKPROF und Trace-Analyzer Hammerdba und dbaman Markierungen (z.B. DBMS_APPLICATION_INFO) Werkzeuge • • • • • • • • • • • ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 17 von 197 17 Response Time Analyse 10g 11/2005 Polling versus Tracing Response Time Analyse 10g Polling Werkzeuge t Tracing ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 18 von 197 18 Response Time Analyse 10g 11/2005 Dynamische Performance-Tabellen Basis X$-Objekte Views als V_$-Objekte Synonyme V$-Objekte Gruppen: V$ und GV$ (global virtual table) Werkzeuge – – – – Response Time Analyse 10g • Traditionell – ab der Version 6 • Diverse "virtuelle" Tabellen als Fenster in SGABereiche, Dateien. • Informationsdichte abhängig von Polling-Rate und SQL • Darstellung durch V$-(Pseudo-)Tabellen • Flüchtig – Werte gültig für Instanzlauf, Session – ab 10g „Mini-Historien“ z.B. v$session_wait_history (10 rows) ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 19 von 197 19 Response Time Analyse 10g 11/2005 Dynamische Performance-Tabellen – teilweise grobe Zeitraster in Centisekunden – v$sysstat, v$sesstat – teilweise hochgerechnete Mikrosekunden: cpu_time in v$sql und v$sqlarea bei Versionen < 10g Response Time Analyse 10g • Problematik – Separate SQL-Abfragen ohne „Lesekonsistenz“ - siehe folgende Folie – nur instrumentierte Wait Events werden erfasst • Version 7 – 104 • Version 10g R2 - 872 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 20 von 197 20 Response Time Analyse 10g 11/2005 Dynamische Performance-Tabellen Response Time Analyse 10g SELECT a.VALUE va, b.VALUE vb, c.VALUE vc, d.VALUE vd FROM (SELECT SUM (bbwait) AS VALUE FROM x$kcbwds) a, (SELECT total_waits AS VALUE FROM v$system_event WHERE event = 'buffer busy waits') b, (SELECT SUM (COUNT) AS VALUE FROM v$waitstat) c, (SELECT SUM (VALUE) AS VALUE FROM v$segment_statistics WHERE statistic_name = 'buffer busy waits') d / ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 21 von 197 21 Response Time Analyse 10g 11/2005 Beispiele V$ Response Time Analyse 10g Werkzeuge • Sessiondetails über v$session • Transaktionen über v$transaction • Wartezeiten der Sessions über v$session_wait, v$session_event • Wartezeiten der Instanz über v$system_wait • CPU-Zeiten über v$sys_time_model, v$sess_time_model • Kennzahlen über v$sysstat, v$sessstat • Übersicht durch v$fixed_table • Definitionen über v$fixed_view_definition • Indizierung über v$indexed_fixed_column ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 22 von 197 22 Response Time Analyse 10g 11/2005 V$ Erweiterungen 10g SGA Historien/Klassen Historien/Klassen Vordef. Metriken • • • • • • Werkzeuge Kennzahlen Response Time Analyse 10g Summaries und Histogramme Kontextinfos Kennzahlen – v$sysstat, v$sessstat, v$mystat Kontextinfos – v$session_wait, v$sql Metriken – v$metricname, v$metric Klassifizierungen – v$metricgroup, v$system_wait_class Historien über zirkulären Buffer in der SGA – v$filemetric_history Summaries fassen Historien zusammen – v$sysmetric_summary ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 23 von 197 23 Response Time Analyse 10g 11/2005 V$ Erweiterungen Beispiele v$sysstat v$metricname Werkzeuge v$metricgroup Response Time Analyse 10g v$statname (mit class) v$metric v$sysmetric v$sysmetric_history ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 24 von 197 24 Response Time Analyse 10g 11/2005 DBA_HIST_xxx Views AWR Werkzeuge Summaries und Histogramme SGA Response Time Analyse 10g SYSAUX 10g – Automatic Workload Repository Historien/Klassen Historien/Klassen Vordef. Metriken Kennzahlen Kontextinfos ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 25 von 197 25 Response Time Analyse 10g 11/2005 AWR Response Time Analyse 10g • Automatic Workload Repository enthält – Sammelt und speichert wait events, active session history, Systemstatistiken – Aufwendige SQL-Statements etc. Advisories "Snapshots" im SYSAUX-Tablespace AWR dbms_workload_repository V$Views Werkzeuge ADDM Background-Prozesse (MMON) MMNL-Prozess SGA-Memory ASH etc. ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 26 von 197 26 Response Time Analyse 10g 11/2005 ASH Response Time Analyse 10g • Active Session History (ASH) • Daten aktiver Sessions (waiting/on CPU) Werkzeuge – Wait event mit p1 – p3 – Modul, Action, Client-ID – Cursor-ID • Gesammelt jede Sekunde in zirkulärem Buffer des shared pool – ASH buffers von v$sgastat • Details über v$active_session_history • Historische Daten in AWR DBA_HIST_ACTIVE_SESS_HISTORY ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 27 von 197 27 Response Time Analyse 10g 11/2005 ADDM – automatisch im Anschluss an Snapshot – explizit über EM oder API (DBMS_ADVISOR, addmrpt.sql) – Probleme (root causes) : Symptome : Informationen (nonproblem areas) Werkzeuge • Ziel: Optimierung der Antwortzeit der Instanz (DB time) • Empfehlungen über Views und Reports Response Time Analyse 10g • Automatic Database Diagnostic Monitor • analysiert die Daten des AWR • Views: – – – – DBA_ADVISOR_TASKS DBA_ADVISOR_LOG DBA_ADVISOR_FINDINGS DBA_ADVISOR_RECOMMENDATIONS ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 28 von 197 28 Response Time Analyse 10g 11/2005 AWR Konfiguration Response Time Analyse 10g _awr_restrict_mode = { TRUE | FALSE } STATISTICS_LEVEL = { TYPICAL | ALL } Werkzeuge View DBA_HIST_WR_CONTROL dbms_workload_repository.modify_snapshot_settings (interval => 45 -- Minuten ,retention => 20160 –- Minuten = 2 Wochen); _addm_auto_enable = { TRUE | FALSE } ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 29 von 197 29 Response Time Analyse 10g 11/2005 Advice Werkzeuge – – – – – Response Time Analyse 10g • Hilfsmittel bei der Konfiguration von Speichergrössen • verfügbar ab statistics_level = TYPICAL • V$-Views v$shared_pool_advice v$java_pool_advice v$db_cache_advice v$sga_target_advice v$pga_target_advice • DBA-Views – DBA_HIST_SHARED_POOL_ADVICE – etc. ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 30 von 197 30 Response Time Analyse 10g 11/2005 ATO Werkzeuge Automatic Tuning Optimizer Synonym: SQL Tuning Advisor Expertensystem zur Optimierung von SQL-Statements Detaillierte Analyse erstellt Report mit Verbesserungsvorschlägen • Expliziter Aufruf über Schnittstelle: Response Time Analyse 10g • • • • – Paket DBMS_SQLTUNE oder – Enterprise Manager – „Advisor Central“ – SQL-Vorlagen – einzeln oder in Sets • manuelle Angabe • Cursor-Cache oder AWR-Historie ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 31 von 197 31 Response Time Analyse 10g 11/2005 SQL Acess Advisor Response Time Analyse 10g – – – – Werkzeuge • Analysiert Indizes und Materialized Views und Materialized View Logs • Nutzung über Enterprise Manager oder API (DBMS_ADVISOR) • Vorgehen Task definieren Workload neu definieren oder verlinken Empfehlungen generieren Ergebnisse evaluieren ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 32 von 197 32 Response Time Analyse 10g 11/2005 Diagnostische Events Response Time Analyse 10g Werkzeuge • Generierung von zusätzlichen Debug- und TraceInformationen • Level-Angaben zur Steuerung des Detailierungsgrades • schreiben Informationen in ASCII-Trace-Dateien • Dateien können „roh“ interpretiert oder über Tools formatiert werden. • Hier interessant: – 10046 – (extended) SQL-Trace inkl. Waits und Binds – 10053 – Optimizer-Internals – 10031, 10032 – Sort Internals • Zu Event 10046 existieren Alternativen ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 33 von 197 33 Response Time Analyse 10g 11/2005 Package DBMS_MONITOR Response Time Analyse 10g • „End to End Application Tracing“ – Statistik-Generierung – SQL-Tracing Werkzeuge • Datensammlung auf unterschiedlichen Ebenen: – Session – Service, Modul und/oder Action - hierarchisch – Client Identifier • manche Filter sind kombinierbar • SQL-Trace erzeugt „rohe“ Trace-Dateien zur Weiterverarbeitung ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 34 von 197 34 Response Time Analyse 10g 11/2005 STATSPACK Response Time Analyse 10g • Verfügbar ab Version 8i • Erweiterung von utlbstat/utlestat • Snapshots von V$-Objekten Werkzeuge – Umfänge steuerbar über Level 0 bis 10 • • • • • Reports über Delta-Werte Geeignet zur Parametrierung der Instanz, Nur bedingt geeignet für einzelne Anwendungen Vorgeschaltete, strategische Analyse wichtig! Braucht mehr Ressourcen als AWR ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 35 von 197 35 Response Time Analyse 10g 11/2005 STATSPACK Response Time Analyse 10g • Installiert über ?/rdbms/admin/spcreate.sql Werkzeuge – User PERFSTAT – Hilfstabellen – Package STATSPACK • Arbeiten mit – EXECUTE statspack.snap; – Job über SPAUTO.SQL – Auswertungen: • Instanzreport über SPREPORT.SQL und SPREPINS.SQL • SQL-Report über SPREPSQL.SQL und SPRSQINS.SQL ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 36 von 197 36 Response Time Analyse 10g 11/2005 Eigene Skripte db file ... und direct path ... Events latch free enqueue und log file synch Buffer busy waits und free buffer waits und library chache pin – v$sessstat mit CPU-Statistiken ggf. v$sql – – – – • • • • Response Time Analyse 10g • Gur geeignet für Versionen < 10g • Strikte Beschränkung auf wichtige Kennzahlen und Wait events, z.B. über Logoff-Trigger für Zusammenfassungen Prozedurale Snapshots für Details – Auflösung von p1, p2, p3 Hilfstabellen speichern Historien vertretbarer Overhead ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 37 von 197 37 Response Time Analyse 10g 11/2005 TKPROF Response Time Analyse 10g • „transient kernel profiler“ • formatiert einzelne SQL-Trace-Dateien • Trace-Dateien erzeugt über Werkzeuge – Event 10046. DBMS_MONITOR, sql_trace = true • unterschiedliche Filter und Sortierungen verfügbar Tkprof <trace> <output> <explain> <insert> <sort> <sys> ..... ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 38 von 197 38 Response Time Analyse 10g 11/2005 TRCSESS Werkzeug Response Time Analyse 10g • Konsolidieren von Trace-Dateien für – Client-Identifier – Module, Actions – Sessions, Services Werkzeuge • Nötig für Shared-Server, Parallelisierungen, Connection Pooling • Java-Werkzeug trcsess [output=output_file_name] [session=session_id] [clientid=client_id] [service=service_name] [action=action_name] [module=module_name] [trace_files] ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 39 von 197 39 Response Time Analyse 10g 11/2005 Trace-Analyzer Werkzeuge – RDBMS > 8.1.6 Response Time Analyse 10g • Erzeugt detailliertes Last- und Ressourcenprofil daher sehr gut für Response Time Analyse • Skriptsammlung zur formatierten Ausgaben von 10046er Traces • Über Metalink: TRCANLZR.sql (Note 224270.1) • Erweiterte Funktionalität und Reports – auch für 8i funktionabel • läuft vollständig in der Datenbank – Tabellen und Prozeduren ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 40 von 197 40 Response Time Analyse 10g 11/2005 hammerora Response Time Analyse 10g • Open Source Tool • verfügbar über www.sourceforge.net • Generiert Lasttest-Skripte aus SQL-Tracedateien Umwandlung der Tracedatei in Oratcl Oracle-Instantclient muss auf Testmaschine vorhanden sein Virtuelle Nutzer können eingerichtet werden TCL-Skripte editierbar Werkzeuge – – – – ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 41 von 197 41 Response Time Analyse 10g 11/2005 dbaman Response Time Analyse 10g • Erweiterung der TCL-Sprache für den Zugriff auf Oracle-Datebank über OCI • Parsing von Oracle-Tracedateien Werkzeuge – Generierung von Testskripten – u.a. wirkungsvolle Simulation von Applikationen • Entwickelt von James Morle für „Scaling Oracle8i“ – http://www.morle.com/dbaman/index.htm – Shareware – getestet bis Oracle 8.1 – verfügbar für Unix • Voraussetzungen – TCL 8.0, C-Compiler, Oracle 7.3+, 8.x, > 8 ? ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 42 von 197 42 Response Time Analyse 10g 11/2005 Application Services Response Time Analyse 10g • Logische Bereiche zur "group of applications with common attributes" Verteilung der Arbeitslast, Job Scheduling Performancemessung und Monitoring Grenzwerte und Tuning Werkzeuge – – – – select name, network_name from v$services; -NAME NETWORK_NAME ---------------- ----------------T10G.NndaDevi.de T10G.NandaDevi.de T10GXDB T10GXDB SYS$BACKGROUND SYS$USERS ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 43 von 197 43 Response Time Analyse 10g 11/2005 Application Services Response Time Analyse 10g • Views: – v$active_services – v$service_events, v$service_metrics u.a. – v$session, DBA_THRESHOLDS Werkzeuge • Konfiguration: – service_names (init.ora) – DBMS_SERVICE (auch disconnect_session) BEGIN DBMS_SERVICE.CREATE_SERVICE (SERVICE_NAME => 'App1', NETWORK_NAME => 'App1'); DBMS_SERVICE.START_SERVICE (SERVICE_NAME => 'App1', INSTANCE_NAME => 'T10G'); END; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 44 von 197 44 Response Time Analyse 10g 11/2005 Identifizierung Response Time Analyse 10g • Generiert individuelles Infix für Trace-Dateien • Dynamisch für die Session • Immer dann, wenn Session mehrere Prozesse benutzt: Werkzeuge – Parallel Query – Shared Server ALTER SESSION SET tracefile_identifier = 'GU02'; Format: <sid>_ora_<pid>_GU02.trc ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 45 von 197 45 Response Time Analyse 10g 11/2005 Application Info Response Time Analyse 10g • client_info, module, action über DBMS_APPLICATION_INFO • client_id über DBMS_SESSION – „auditierbar“ • Filtern teilweise möglich über Werkzeuge – v$session, – v$sqlarea, v$sql – dbms_monitor BEGIN DBMS_APPLICATION_INFO.SET_CLIENT_INFO ( CLIENT_INFO => 'Test-Client'); DBMS_SESSION.SET_IDENTIFIER (CLIENT_ID => 'Test-ID'); END; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 46 von 197 46 Response Time Analyse 10g 11/2005 Markierungen Response Time Analyse 10g • Individuelles Schreiben in Trace- und Alert-Dateien – Markierung relevanter Code-Kontexte • Setzen von Zeitstempeln Werkzeuge BEGIN -- schreibt Zeitstempel in TRACE-Datei dbms_system.ksdddt; -- Einzug mit Doppelpunkten ("::::") dbms_system.ksdind(4); dbms_system.ksdwrt (1, 'Output written to trace file'); dbms_system.ksdwrt (2, 'Output written to alert log'); dbms_system.ksdwrt (3, 'Output written to both trace file and alert log'); END; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 47 von 197 47 Response Time Analyse 10g 11/2005 Resumeé Response Time Analyse 10g Werkzeuge Oracle bietet eine Fülle von Werkzeugen, Kennzahlen und Statistiken. Projekte müssen die für sie relevanten Werkzeuge und Methoden festlegen, um optimal optimieren zu können. Werkzeuge und Kennzahlen sollten so überschabar und einfach wie möglich sein! ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 48 von 197 48 Response Time Analyse 10g 11/2005 Response Time Analyse 10g Die Praxis ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 49 von 197 49 Response Time Analyse 10g 11/2005 Übersicht Response Time Analyse 10g Ist-Zustand der Instanz/Datenbank ermitteln Performance-Vorsorge für die Instanz/Datenbank Tuning Projekt formulieren Last-Profile erstellen Last-Profile verstehen und bewerten Typische Tuning-Szenarien Die Praxis • • • • • • ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 50 von 197 50 Response Time Analyse 10g 11/2005 Ist-Zustand ermitteln Die Praxis – IST-Zusatnd – Name, Version, Charactersets – SGA-Verwaltung – Tuning-Einstellungen, z.B. AWR etc. • „Dynamische“ Attribute – – – – Response Time Analyse 10g • Report über maßgebliche Daten einer Instanz/Datenbank – „Steckbrief“ für die Kurzanalyse • „Statische“ Attribute Laufzeit und aktuelle Buffergrössen Trefferquoten Redo- und Transaktionslast IO-Verteilung und IO-Last • Werkzeuge: Statspack (Ausschnitte), Table-Function... ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 51 von 197 51 Response Time Analyse 10g 11/2005 Ist-Zustand – gezielte Auswahl relevanter Kennzahlen – Übersichtlichkeit – keine zusätzlichen Abhängigkeiten durch Zielinstallation (Monitoring Account) Die Praxis – IST-Zusatnd *************** DATENBANK Steckbrief **************** generiert am: 28.10.2005 08:19 ************** Allgemeine Information *************** Name: ORA102 Unique Name: ora102 ID: 192045336 Plattform: Microsoft Windows IA (32-bit) Rolle: PRIMARY Log-Mode: NOARCHIVELOG Open-Mode: READ WRITE Force Logging: Open Resetlogs: NOT ALLOWED RSL Time: 29.09.05 Created: 29.09.2005 09:00 Current SCN: 660690 Standard Blockgroesse: 8192 Response Time Analyse 10g • Table-Function NO Global Name: ORA102.DBCONSULT.DE ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 52 von 197 52 Response Time Analyse 10g 11/2005 IST-Zustand Response Time Analyse 10g +++ Services: ora102XDB ora102.dbconsult.de SYS$BACKGROUND SYS$USERS Die Praxis – IST-Zusatnd +++ Instances: Nr.: 1 Name: ora102 Version: 10.2.0.1.0 Role: PRIMARY_INSTANCE Start: 24.10.2005 14:50:35 Laufzeit (Tage/Std.): +003 17:28:54 Host: DATTATREYA2 +++ SGA-Daten in MB: sga_max_size 432 sga_target 432 Buffer Cache Size Java Pool Size Large Pool Size Redo Buffers Shared Pool Size Streams Pool Size 284 12 4 3 128 0 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 53 von 197 53 Response Time Analyse 10g 11/2005 IST-Zustand Response Time Analyse 10g +++ Redo-Daten in MB: Gruppe 1 50 Members 1 Gruppe 2 50 Members 1 Gruppe 3 50 Members 1 +++ IO-Kennzahlen: Anzahl Datendateien: 4 Gesamtgroesse in GB: 1,14 Die Praxis – IST-Zusatnd C:\ORACLE\ORADATA\ORA102\SYSTEM01.DBF MinTime: 0 MaxRTime: 306 MaxWTime: 91 C:\ORACLE\ORADATA\ORA102\UNDOTBS01.DBF MinTime: 0 MaxRTime: 120 MaxWTime: 34305 C:\ORACLE\ORADATA\ORA102\SYSAUX01.DBF MinTime: 0 MaxRTime: 219 MaxWTime: 353 C:\ORACLE\ORADATA\ORA102\USERS01.DBF MinTime: 0 MaxRTime: 7 MaxWTime: 20 +++ Undo Management: undo_management undo_tablespace undo_retention AUTO UNDOTBS1 900 +++ Undo mit Snapshot too old oder Unexpired steals: ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 54 von 197 54 Response Time Analyse 10g 11/2005 IST-Zustand Response Time Analyse 10g +++ AWR, ADDM und Statistik-Historie: statistics_level TYPICAL _awr_restrict_mode FALSE _addm_auto_enable TRUE Stats Historie ab: 29.09.05 09:03 Aufbewahrungszeit: 31 +00000 01:00:00.0 +00007 00:00:00.0 AWR Disk usage in MB: ASH Pool usage in MB: 30,94 2 Die Praxis – IST-Zusatnd AWR Interval (Day/Second): AWR Aufbewahrungszeit (Day/Second): ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 55 von 197 55 Response Time Analyse 10g 11/2005 IST-Zustand Response Time Analyse 10g *************** Response Time Daten +++ Zeitangaben in Minuten: CPU (server + background): 8,65 Wait (non-idle) : 76,12 **************** Percent CPU Time: 10,2% Percent Wait Time: 89,8% Die Praxis – IST-Zusatnd +++ Massgebliche Elapsed Zeiten in Minuten: 77,19 background elapsed time 60,49 sql execute elapsed time 2,36 PL/SQL execution elapsed time 1,99 parse time elapsed 1,73 hard parse elapsed time +++ Massgebliche Wartezeiten nach Klassen in Minuten: 40,44 System I/O 52,55% 28,1 Commit 36,51% 3,73 Concurrency 4,85% 2,9 User I/O 3,77% 1,76 Other 2,29% ,01 Application ,01% ,01 Network ,01% ,01 Configuration ,01% ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 56 von 197 56 Response Time Analyse 10g 11/2005 IST-Zustand Response Time Analyse 10g *WERT 100 100 1405,33 67 38,78 26,21 ,99 0 0 0 0 ,14 ,09 ,13 0 Die Praxis – IST-Zusatnd ****************** Metriken ******************** +++ Current Values: *INTERVAL (Sek.)*METRIK 61 Buffer Cache Hit Ratio 61 Redo Allocation Hit Ratio 61 Redo Generated Per Txn 61 Logical Reads Per Txn 61 Cursor Cache Hit Ratio 61 Database Wait Time Ratio 61 Response Time Per Txn 600 Average File Read Time (Files-Long) 600 Average File Read Time (Files-Long) 600 Average File Read Time (Files-Long) 600 Average File Read Time (Files-Long) 600 Average File Write Time (Files-Long) 600 Average File Write Time (Files-Long) 600 Average File Write Time (Files-Long) 600 Average File Write Time (Files-Long) ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 57 von 197 57 Response Time Analyse 10g 11/2005 IST-Zustand *MAXWERT 54,69 95,68 100 53754,67 46823,68 100 100 *AVG 6,53 21,03 25,01 1156,32 3703,59 100 99,78 Die Praxis – IST-Zusatnd *MINWERT 0 0 0 0 0 0 0 Response Time Analyse 10g +++ Historic Values: *INTERVAL (Min) *METRIK 751 Response Time Per Txn 751 Database Wait Time Ratio 751 Cursor Cache Hit Ratio 751 Logical Reads Per Txn 751 Redo Generated Per Txn 751 Redo Allocation Hit Ratio 751 Buffer Cache Hit Ratio ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 58 von 197 58 Response Time Analyse 10g 11/2005 Statspack Response Time Analyse 10g • • • • gut geeignet zur Ermittlung allgemeiner Kennzahlen zur „Performance“-Vorsorge und IST-Darstellung Doku unter ?\rdbms\admin\spdoc.txt Skripte lassen sich anpassen Listing all Completed Snapshots Snap Instance DB Name Snap Id Snap Started Level Comment ------------ ------------ --------- ----------------- ----- -------------------ora102 ORA102 1 26 Okt 2005 12:06 5 11 26 Okt 2005 13:28 5 21 28 Okt 2005 08:41 5 22 28 Okt 2005 08:55 10 Die Praxis – IST-Zusatnd SQL> exec statspack.snap SQL> start ?\rdbms\admin\spreport.sql Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Geben Sie einen Wert f³r begin_snap ein: ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 59 von 197 59 Response Time Analyse 10g 11/2005 Statspack –Ausschnitte Response Time Analyse 10g Cache Sizes Begin End ---------- ---------Buffer Cache: 292M 284M 8K Shared Pool Size: 2,828K Std Block Size: 128M Log Buffer: Redo size: Logical reads: Block changes: Physical reads: Physical writes: User calls: Parses: Hard parses: ....... Per Second --------------475.25 51.65 2.67 0.01 0.12 0.12 0.51 0.02 Per Transaction --------------15,589.84 1,694.37 87.65 0.39 4.05 3.85 16.89 0.74 Die Praxis – IST-Zusatnd Load Profile ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 60 von 197 60 Response Time Analyse 10g 11/2005 Statspack –Ausschnitte %: %: %: %: %: 100.00 99.98 96.78 46.35 88.80 Redo NoWait %: In-memory Sort %: Soft Parse %: Latch Hit %: % Non-Parse CPU: 100.00 100.00 95.63 100.00 89.95 Top 5 Timed Events Event Waits Time (s) ------------------------- ------------ ----------log file sync 1,518 1,635 log file parallel write 6,958 1,622 db file parallel write 12,178 366 CPU time 191 control file sequential read 20,046 121 AVG %Total wait Call (ms) Time ------ -----1077 39.3 233 39.0 30 8.8 4.6 6 2.9 Die Praxis – IST-Zusatnd Buffer Nowait Buffer Hit Library Hit Execute to Parse Parse CPU to Parse Elapsd Response Time Analyse 10g Instance Efficiency Percentages ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 61 von 197 61 Response Time Analyse 10g 11/2005 Statspack Ausschnitte .... .... Die Praxis – IST-Zusatnd Background Wait Events DB/Inst: ORA102/ora102 Snaps: 1-21 -> %Timeouts: value of 0 indicates value was < .5%. Value of null is truly 0 -> Only events with Total Wait Time (s) >= .001 are shown -> ordered by Total Wait Time desc, Waits desc (idle events last) Response Time Analyse 10g Wait Events DB/Inst: ORA102/ora102 Snaps: 1-21 -> s - second, cs - centisecond, ms - millisecond, us - microsecond -> %Timeouts: value of 0 indicates value was < .5%. Value of null is truly 0 -> Only events with Total Wait Time (s) >= .001 are shown -> ordered by Total Wait Time desc, Waits desc (idle events last) Latch Activity DB/Inst: ORA102/ora102 Snaps: 1-21 ->"Get Requests", "Pct Get Miss" and "Avg Slps/Miss" are statistics for willing-to-wait latch get requests ->"NoWait Requests", "Pct NoWait Miss" are for no-wait latch get requests ->"Pct Misses" for both should be very close to 0.0 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 62 von 197 62 Response Time Analyse 10g 11/2005 AWR-Report Response Time Analyse 10g • 10g produziert standardmässig Snapshots • Skript ?\rdms\admin\awrreport.sql produziert Reports ähnlich Statspack – HTML- oder Textformat • relevante Abschnitte: Die Praxis – IST-Zusatnd – „Load Profile“ – „Instance Efficiency“ – „Top 5 Timed Events“ – „Time Model Statistics“ SQL> start ?\rdbms\admin\awrrpt Current Instance ~~~~~~~~~~~~~~~~ DB Id DB Name Inst Num Instance ----------- ------------ -------- -----------192045336 ORA102 1 ora102 Specify the Report Type ~~~~~~~~~~~~~~~~~~~~~~~ ... Type Specified: html ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 63 von 197 63 Response Time Analyse 10g 11/2005 Performance-Vorsorge – Optimierung/Monitoring von wichtigen Metriken – nach Möglichkeit effizientes Applikationsdesign – nach Möglichkeit effizientes Instanz Design Response Time Analyse 10g • Response Time Optimierung ist im Bereich der Instanz nicht möglich, daher: • Konzentration auf wenige, überschaubare Kennzahlen – weniger ist mehr! – – – – – Buffer Cache Hit Ratio – ca. 90% Library Cache Hit Ratio – >= 90% Redo Log Allocation Retries – sehr gering IO-Verteilung Betriebssystem: IO, Paging Swapping, Filesystem/Rawdevice, Blockgrössen ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 64 von 197 64 Response Time Analyse 10g 11/2005 Instanz Design Automatic Undo Management Locally Managed Tablespaces Connectivity: MTS, dedicated server, connection pooling ggf. ASSM für Segmentverwaltung ggf. Session Cursor Cache Statistiken über DBMS_STATS auch Systemstatistiken Blockgrössen auswählen Multiple Buffer Pools: Keep-Pool, Recycle-Pool Large Pool – bei Shared Server, RMAN, Parallel Query PGA_AGGREGATE_TARGET Installationsplanung Response Time Analyse 10g • • • • • • • • • • • ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 65 von 197 65 Response Time Analyse 10g 11/2005 Systemstatistiken -- laufende Kontrolle STATID C1 --------- ------------SYSTEM_01 AUTOGATHERING ... SYSTEM_01 COMPLETED Response Time Analyse 10g BEGIN DBMS_STATS.GATHER_SYSTEM_STATS( gathering_mode => 'INTERVAL', interval => 2 , stattab => 'STAT_TABLE' , statown => 'DEVELOPER' , statid => 'SYSTEM_01'); END; C2 C3 ---------------- ---------------08-09-2003 16:29 08-11-2001 16:29 08-09-2001 16:41 08-09-2001 16:43 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 66 von 197 66 Response Time Analyse 10g 11/2005 Systemstatistiken -- Übertragen in Dictionary = aktivieren BEGIN DBMS_STATS.IMPORT_SYSTEM_STATS( stattab => 'STAT_TABLE', statid => 'SYSTEM_01', statown => 'DEVELOPER'); END; SELECT * FROM sys.aux_stats$; SNAME -------------------SYSSTATS_INFO SYSSTATS_INFO SYSSTATS_INFO SYSSTATS_INFO SYSSTATS_MAIN SYSSTATS_MAIN SYSSTATS_MAIN SYSSTATS_MAIN SYSSTATS_MAIN SYSSTATS_MAIN PNAME -----------------STATUS DSTART DSTOP FLAGS SREADTIM MREADTIM CPUSPEED MBRC MAXTHR SLAVETHR Response Time Analyse 10g -- Löschen von Dictionary aux_stats$ BEGIN DBMS_STATS.DELETE_SYSTEM_STATS; END; PVAL1 PVAL2 ---------- -------------------COMPLETED 08-09-2001 16:40 08-09-2001 16:42 0 7.581 56.842 117 9 47104 -1 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 67 von 197 67 Response Time Analyse 10g 11/2005 Systemstatistiken Response Time Analyse 10g sreadtim : wait time to read single block, in milliseconds mreadtim : wait time to read a multiblock, in milliseconds cpuspeed : cycles per second, in millions mbrc : mulitblock read count (average) maxthr:maximum I/O system throughput, in bytes/sec Slavethr:average slave I/O throughput, in bytes/sec • PLAN_TABLE.CPU_COST: benötigte Maschinen-Zyklen • PLAN_TABLE.IO_COST: gelesene Datenblöcke ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 68 von 197 68 Response Time Analyse 10g 11/2005 Performance Vorsorge – – – – – – – v$sysstat v$sgastat v$filestat v$osstat v$rollstat, v$undostat v$pgastat v$osstat Response Time Analyse 10g • relevonate Kennzahlen aus Reports (siehe vorne) oder • Manuelle Auswertung der Instanz über ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 69 von 197 69 Response Time Analyse 10g 11/2005 Tuning-Projekt – – – – Programmatisches Umfeld Relevanz für das geschäftliche Umfeld Ist- und Soll-Zahlen Genaue Angaben zum Kontext des Performance-Problems • Server, Instanz, Zeitrahmen • Session, Modul, Schema, Service – erwarteter (geschäftlicher) Nutzen Response Time Analyse 10g • Exakte Formulierungen, aus den folgenden Bereichen: • Entscheidung zur Strategie und zu den Werkzeugen – Polling versus Tracing – Auswertungsverfahren • Keine Parametervorgaben akzeptieren! ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 70 von 197 70 Response Time Analyse 10g 11/2005 Tuning-Projekt – – – – – – Schnell einsetzbare V$Abfragen genaue Synchronisierung erforderlich – manuell oder Trigger unmittelbare Auswertung für Session oder Service keine zusätzlichen Tools lückenhafte Kennzahlen Ungenaue Analysen bei diffusen Trends Response Time Analyse 10g • Polling • Tracing – – – – lückenlose Protokollierung, exakte Kontexte alle Filter möglich: Session, Module, Service Auswertung erfordert Tools ggf. grosse Datenmenge und damit erschwerte Analysen ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 71 von 197 71 Response Time Analyse 10g 11/2005 Polling – v$sess_time_model – v$sessstat – diverse Statistiken • Wartezeiten: – – – – – – – – v$session_event – mit Historie der Session v$session – mit aktuellen Wartezyklen v$session_wait – aktuelle Wartezyklen v$session_wait_history – die letzten 10 Wartezyklen akt.S. v$service_event – Zusammenfassungen per Service per Event v$session_wait_class – Zusammenfassung nach Klassen v$service_wait_class – Zusammenfassung nach Klassen v$active_session_history – Historie v.Wartezyklen akt. Sessions Response Time Analyse 10g • CPU-Zeiten: ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 72 von 197 72 Response Time Analyse 10g 11/2005 CPU-Statistiken >= 10g Response Time Analyse 10g background cpu time background elapsed time connection management call elapsed time DB CPU DB time failed parse elapsed time failed parse (out of shared memory) elapsed time hard parse (bind mismatch) elapsed time hard parse elapsed time hard parse (sharing criteria) elapsed time inbound PL/SQL rpc elapsed time Java execution elapsed time parse time elapsed PL/SQL compilation elapsed time PL/SQL execution elapsed time repeated bind elapsed time RMAN cpu time (backup/restore) sequence load elapsed time sql execute elapsed time ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 73 von 197 73 Response Time Analyse 10g 11/2005 CPU Statistiken <= 10g Response Time Analyse 10g • Aus v$sysstat oder v$sysstat • CPU Zeit im wesentlichen nötig für – Parsing von SQL – Logical IO/Blockzugriffe im Buffer 12 11 161 46 43 332 331 330 328 329 8 CPU used by this session CPU used when call started gc CPU used by this session global enqueue CPU used by this session IPC CPU used by this session parse count (failures) parse count (hard) parse count (total) parse time cpu parse time elapsed recursive cpu usage ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 74 von 197 74 Response Time Analyse 10g 11/2005 Tracing <= 10g Response Time Analyse 10g • • • • Event 10046 Session wird "getracet" Session führt Aktionen aus Tracing schreibt für Prozesse – Trace-Datei in user_dump_dest (dynamisch) – max_dump_file_size beachten! • Session kann mehrere Prozesse nutzen – MTS oder Parallel-Query – tracefile_identifier nutzen (dynamisch) ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 75 von 197 75 Response Time Analyse 10g 11/2005 Tracing <= 10g • • • • Response Time Analyse 10g alter session set timed_statistics = true; alter session set max_dump_file_size = unlimited; alter session set events '10046 trace name context forever, level 12' alter session set events '10046 trace name context off'; Level 1 – wie sql_trace = true Level 4 – 1 + Bindevariablen Level 8 – 1 + wait events Level 12 – 1 + BV + WE ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 76 von 197 76 Response Time Analyse 10g 11/2005 Tracing <= 10g Response Time Analyse 10g dbms_system.set_bool_param_in_session (72, 166, 'timed_statistics', true); dbms_system.set_int_param_in_session (72, 166, 'max_dump_file_size', 2147483647); dbms_system.set_ev(72, 166, 10046, 8, ''); /* Tracing ausschalten */ dbms_system.set_ev(72, 166, 10046, 0, ''); -- ################ DBMS_SUPPORT.START_TRACE_IN_SESSION (SID => 12, SERIAL => 77 , WAITS => TRUE, BINDS => TRUE); ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 77 von 197 77 Response Time Analyse 10g 11/2005 Tracing <= 10g Response Time Analyse 10g # ORADEBUG über SQLPlus # für Prozess ORADEBUG SETORAPID 8 –- verifizieren über v$process, oder ORADEBUG SETMYPID –- fuer eigenen Prozess ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12 # für die eigene Session ORADEBUG SESSION_EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12 ORADEBUG SESSION_EVENT event TRACE NAME CONTEXT OFF # weitere Alternativen EXECUTE dbms_system.set_ev (9,29,10046,8,''); EXECUTE dbms_system.set_ev (9,29,10046,0,''); ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 78 von 197 78 Response Time Analyse 10g 11/2005 Tracing <= 10g Response Time Analyse 10g -- Logon-Trigger CREATE OR REPLACE TRIGGER b4711_logon AFTER LOGON ON b4711.SCHEMA BEGIN dbms_session.set_sql_trace (TRUE); END; CREATE OR REPLACE TRIGGER b4711_logoff BEFORE LOGOFF ON b4711.SCHEMA BEGIN dbms_session.set_sql_trace (FALSE); END; -- Beliebig aktivieren ALTER TRIGGER b4711 _logon ENABLE; ALTER TRIGGER b4711 _logon DISABLE; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 79 von 197 79 Response Time Analyse 10g 11/2005 Tracing <= 10g Response Time Analyse 10g • • • • Dauerhaftes Setzen der Events Mehrfache Events immer in Folge oder über ":"! Nicht für immediate dumps geeignet Alert-Datei zeigt aktive Events # SQL-Trace aktiviert am 12.08.2003 GU EVENT='10046 trace name context forever, level 12' # Interna des CBO-Optimizers aktiviert am 1.9.03 EVENT='10053 trace name context forever, level 1' # alternativ mit :, \ für Zeilenumbruch EVENT="\ 10046 trace name context forever, level 12:\ 10053 trace name context forever, level 1" ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 80 von 197 80 Response Time Analyse 10g 11/2005 Tracing <= 10g Response Time Analyse 10g • Lesen eingestellter Events und Level • Zeigt Werte nur für die eigene Session declare event_level number; begin for i in 10000..10999 loop sys.dbms_system.read_ev(i,event_level); if (event_level > 0) then dbms_output.put_line('Event '||to_char(i)||' set at level ' || to_char(event_level)); end if; end loop; end; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 81 von 197 81 Response Time Analyse 10g 11/2005 Tracing >= 10g Response Time Analyse 10g -- Erweitertes Tracing mit BV und WE dbms_monitor.session_trace_enable (10,47,TRUE,TRUE); -- einfaches Tracing dbms_monitor.session_trace_enable (10,47); -- Ausschalten dbms_monitor.session_trace_disable (10,47); ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 82 von 197 82 Response Time Analyse 10g 11/2005 Session-Kontext – set_module (<module>,<action>) – set_client_info(<client_info>) – hervorragendes Tracing von SQL-Code im Rahmen von Triggern, Prozeduren, Packages – Setzen des Session-Kontexts set_module set_client_info Response Time Analyse 10g • Paket DBMS_APPLICATION_INFO v$sqlarea.. v$session ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 83 von 197 83 Response Time Analyse 10g 11/2005 Session-Kontext Response Time Analyse 10g BEGIN dbms_application_info.SET_MODULE ('TestModul','TestAction'); END; SELECT ..... INSERT .... UPDATE ... BEGIN dbms_application_info.SET_MODULE('',''); END; SELECT sql_text FROM v$sql WHERE module = 'TestModul'; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 84 von 197 84 Response Time Analyse 10g 11/2005 Tracing >= 10g Response Time Analyse 10g • • • • Hierarchische Filter für Servicename, Modul und Action Separater Filter für Client Identifier Regeln wirken kumulativ Ausgabe der definierten regeln über View DBA_ENABLED_TRACES dbms_monitor.serv_mod_act_trace_enable ('APP1', 'PACK_X', 'Proc_Y'); dbms_monitor.serv_mod_act_trace_disable ('APP1', 'PACK_X', 'Proc_Y'); dbms_monitor.client_id_trace_enable('GU'); dbms_monitor.client_id_trace_disable('GU'); ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 85 von 197 85 Response Time Analyse 10g 11/2005 Tracefile ermitteln und öffnen Response Time Analyse 10g Rem ggf. an OS oder Ora-Version anpassen SET SUFFIX TRC COLUMN filename NEW_VALUE filename SELECT p1.value||'\'||p2.value||'_ora_'||p.spid ||decode(p3.value,null,'','_'||p3.value) filename FROM v$process p, v$session s, v$parameter p1, v$parameter p2, v$parameter p3 WHERE p1.name = 'user_dump_dest' AND p2.name = 'db_name' AND p3.name = 'tracefile_identifier' AND p.addr = s.paddr AND s.audsid = USERENV ('SESSIONID'); EDIT &&filename SET SUFFIX SQL COLUMN filename CLEAR ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 86 von 197 86 Response Time Analyse 10g 11/2005 Tracing Response Time Analyse 10g • Mögliche weitere Arbeitsschritte: – – – – – ggf. zusammenführen verschiedener Tracde-Dateien Verstehen der „rohen“ Trace-Datei Formatierung über TKPROF Formatierung über Trace Analyzer (trcanlzr.sql) Tools von www.hotsos.com ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 87 von 197 87 Response Time Analyse 10g 11/2005 Tracing Response Time Analyse 10g • Zusammenführen von Trace-Dateien für – Client-Identifier – Module, Actions – Sessions trcsess [output=output_file_name] [session=session_id] [clientid=client_id] [service=service_name] [action=action_name] [module=module_name] [trace_files] ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 88 von 197 88 Response Time Analyse 10g 11/2005 Tracing – Rawtrace Response Time Analyse 10g • sinnvoll bei unvollständigen Auswertungen • exakte Zuordnung von Wait Events zu Calls • Gliederung – Allgemeiner Header – Identification: *** ACTION NAME:(Action X) 2005-11-03 13:24:10.265 *** MODULE NAME:(Module A) 2005-11-03 13:24:10.265 *** SERVICE NAME:(SYS$USERS) 2005-11-03 13:24:10.265 *** CLIENT ID:(GU) 2005-11-03 13:24:10.265 *** SESSION ID:(16.1022) 2005-11-03 13:24:10.265 ===================== ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 89 von 197 89 Response Time Analyse 10g 11/2005 Tracing – Rawtrace Response Time Analyse 10g • • • • • • • • • Cursor Informationen direkt nach Parse Call oder später Nummer nimmt Bezug auf nachfolgende Calls len – Länge des Stmts, uid – schema ID des parsenden Benutzers oct – Oracle Call Type lid – privileged user id tim Zeitstempel in Mikrosekunden (>= 9i) z.B. gettimeofday hv – hash value ad - address PARSING IN CURSOR #7 len=32 dep=0 uid=58 oct=3 lid=58 tim=22374257176 hv=2935929963 ad='1fd73f00' select count(*) from dba_objects END OF STMT ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 90 von 197 90 Response Time Analyse 10g 11/2005 Tracing – Rawtrace Bindevariablen werden positionsbedingt aufgeführt oacdty – external datatype (hier varchar) (entspricht dump-Ausgabe) avl – Länge; value – Länge Details über Note 39817.1 (Metalink) Scl und pre = scale und precision ===================== PARSING IN CURSOR #7 len=58 dep=1 uid=58 oct=3 lid=58 tim=535121950 hv=1332351685 ad='1fcb0338' SELECT COUNT(*) FROM DBA_TABLES WHERE TABLE_NAME LIKE :B1 END OF STMT ... BINDS #7: kkscoacd Bind#0 oacdty=01 mxl=32(30) mxlc=00 mal=00 scl=00 pre=00 oacflg=13 fl2=206001 frm=01 csi=178 siz=32 off=0 kxsbbbfp=0762442c bln=32 avl=04 flg=09 value="DBA%" Response Time Analyse 10g • • • • • ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 91 von 197 91 Response Time Analyse 10g 11/2005 Tracing – Rawtrace Response Time Analyse 10g • Wait Events – im Kontext von DB-Calls (erscheinen vor diesen hier grün) – zwischen DB-Calls (erscheinen separat hier blau) • nam – Names des Events • ela – elapsed time • die letzten 3 entsprechen p1, p2, p3 von v$session_wait EXEC #7:c=156250,e=153309,p=0,cr=2,cu=0,mis=1,r=0,dep=1,og=1,tim=535275386 WAIT #7: nam='db file sequential read' ela= 11988 file#=1 block#=10859 blocks=1 obj#=3 tim=535338348 FETCH #7:c=109375,e=123525,p=1,cr=2797,cu=0,mis=0,r=1,dep=1,og=1,tim=535398965 EXEC #10:c=265625,e=277739,p=1,cr=2799,cu=0,mis=0,r=1,dep=0,og=1,tim=535399206 WAIT #10: nam='SQL*Net message to client' ela= 6 driver id=1111838976 #bytes=1 p3=0 obj#=3 tim=535399302 WAIT #10: nam='SQL*Net message from client' ela= 459 driver id=1111838976 #bytes=1 p3=0 obj#=3 tim=535399827 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 92 von 197 92 Response Time Analyse 10g 11/2005 Tracing - Rawtrace Response Time Analyse 10g • STAT kennzeichnet Rowsources (Ausführungspläne) – ähnlich plan_table • id – identifier; cnt – rowcount ; pid – parent id • obj – object id; op – operation, time – Zeit in Mikrosekunden • cr – consisent reads; pr – physical reads; pw – physical writes STAT #7 id=1 cnt=1 pid=0 pos=1 obj=0 op='SORT AGGREGATE (cr=5248 pr=0 pw=0 time=407489 us)' STAT #7 id=2 cnt=50337 pid=1 pos=1 obj=2371 op='VIEW DBA_OBJECTS (cr=5248 pr=0 pw=0 time=1562536 us)' STAT #7 id=3 cnt=50337 pid=2 pos=1 obj=0 op='UNION-ALL (cr=5248 pr=0 pw=0 time=1159833 us)' STAT #7 id=4 cnt=50337 pid=3 pos=1 obj=0 op='FILTER (cr=5247 pr=0 pw=0 time=505435 us)' STAT #7 id=5 cnt=51503 pid=4 pos=1 obj=0 op='HASH JOIN (cr=625 pr=0 pw=0 time=980596 us)' ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 93 von 197 93 Response Time Analyse 10g 11/2005 Tracing - Rawtrace PARSING IN CURSOR #1 len=46 dep=1 uid=0 oct=3 lid=0 tim=3282021354 hv=1343089354 ad='2aac0994' select node,owner,name from syn$ where obj#=:1 END OF STMT PARSE #1:c=0,e=46,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=3282021346 PARSING IN CURSOR #1 len=179 dep=1 uid=0 oct=3 lid=0 tim=3282058960 hv=2812844157 ad='2aaf9d38' select owner#,..... from dependency$ d, obj$ o where d_obj#=:1 and p_obj#=obj#(+) order by order# END OF STMT ... ===================== PARSING IN CURSOR #7 len=32 dep=0 uid=58 oct=3 lid=58 tim=3282347867 hv=2935929963 ad='1fcc1024' select count(*) from dba_objects END OF STMT PARSE #7: c=328125,e=327028,p=0,cr=97,cu=0,mis=1,r=0,dep=0,og=1,tim=3282347858 Response Time Analyse 10g • Rekursive Calls erscheinen vor ihren Parents • Parents enthalten in elapsed time die Zeiten ihrer Kinder ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 94 von 197 94 Response Time Analyse 10g 11/2005 Tracing - Rawtrace Response Time Analyse 10g 5 dep=0 2 3 4 dep=1 dep=1 dep=1 1 dep=2 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 95 von 197 95 Response Time Analyse 10g 11/2005 TKPROF Response Time Analyse 10g C:\oracle\admin\ora102\udump>tkprof Usage: tkprof tracefile outputfile [explain= ] [table= ] [print= ] [insert= ] [sys= ] [sort= ] table=schema.tablename Use 'schema.tablename' with 'explain=' option. explain=user/password Connect to ORACLE and issue EXPLAIN PLAN. print=integer List only the first 'integer' SQL statements. aggregate=yes|no insert=filename List SQL statements and data inside INSERT statements. sys=no TKPROF does not list SQL statements run as user SYS. record=filename Record non-recursive statements found in the trace file. waits=yes|no Record summary for any wait events found in the trace file. sort=option Set of zero or more of the following sort options: prscnt number of times parse was called prscpu cpu time parsing ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 96 von 197 96 Response Time Analyse 10g 11/2005 TKPROF Output count cpu elapsed disk query current rows Summaries – – – – read consistency kein Schema-Trap mehr! Recursion-Trap Time Trap (locking) Response Time Analyse 10g • Zeiten nur bei timed_statistics = true • „Traps“ beachten ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 97 von 197 97 Response Time Analyse 10g 11/2005 TKPROF call count ------- -----Parse 1 Execute 1 Fetch 4 ------- -----total 6 cpu elapsed disk query current -------- ---------- ---------- ---------- ---------0.06 0.06 0 2 0 0.02 0.01 0 0 0 0.05 0.04 0 7 0 -------- ---------- ---------- ---------- ---------0.13 0.12 0 9 0 rows ---------0 0 45 ---------45 Response Time Analyse 10g *************************************************************************** select * from hr.employees where department_id = 50 Misses in library cache during parse: 1 Optimizer goal: CHOOSE Parsing user id: SYS Rows ------45 Row Source Operation --------------------------------------------------TABLE ACCESS FULL EMPLOYEES (cr=7 r=0 w=0 time=672 us) Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------Waited ---------- -----------SQL*Net message to client 4 0.00 0.00 SQL*Net message from client 4 20.91 20.93 ******************************************************************************** ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 98 von 197 98 Response Time Analyse 10g 11/2005 Nachteile TKPROF Response Time Analyse 10g • Eingeschränkte Übersicht der Wait Events • Keine Unterscheidung der Calls in User/recursive und Internal/recursive • Zeigt keine aktuellen Werte von Bindevariablen! ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 99 von 197 99 Response Time Analyse 10g 11/2005 Trace-Analyzer Response Time Analyse 10g • Skriptsammlung zur formatierten Ausgaben von 10046er Traces – RDBMS > 8.1.6 • Über Metalink: TRCA.zip • Erweiterte Funktionalität und Reports – auch für 8i funktionabel • Arbeitet über Hilfstabellen und PL/SQL-Prozeduren – Zugriff auf Trace mittels DIRECTORY ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 100 von 197 100 Response Time Analyse 10g 11/2005 Trace-Analyzer – Nötige Grants erteilen (über SYS) – Hilfstabellen (22) und Package (1) anlegen (unter user) – Analyse starten: • START TRCANLZR.sql UDUMP prod_ora_9105.trc; • Wenn keine rekrusiven Statements, dann vorher TRCAISYS.sql NO; Response Time Analyse 10g • Fokus: analysierender Benutzer (Generator von 10046)! • Arbeitsweise: ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 101 von 197 101 Response Time Analyse 10g 11/2005 Trace-Analyzer (Report) Response Time Analyse 10g Introduction... TOP SQL (SUMMARY OF CPU, ELAPSED AND WAITS PER TOP EXPENSIVE CURSOR) GAPS OF NO TRACE ACTIVITY SUMMARY OF CALLS BY USER (INTERNAL LAST) AND NON-RECURSIVE/RECURSIVE SUMMARY OF CALLS BY COMMAND TYPE, USER (INTERNAL LAST) AND NONRECURSIVE/RECURSIVE SUMMARY OF WAITS BY USER (INTERNAL LAST) AND NON-RECURSIVE/RECURSIVE DETAIL OF NON-IDLE WAITS BY USER (INTERNAL LAST) AND NON-RECURSIVE/RECURSIVE HOTTEST 5 BLOCKS (MOST TIMES WAITED FOR) SUMMARY BY SQL STATEMENT (CURSOR) *** Vorstellung der einzelnen Cursor mit Bindevariablen etc. ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 102 von 197 102 Response Time Analyse 10g 11/2005 Trace-Analyzer Response Time Analyse 10g ******************************************************************************************** TRCANLZR.sql 115.9 NOTE:224270.1 2003-02-06 15:42:01 ******************************************************************************************** TRACE_DIRECTORY..........: /amer/oracle/visus86/visus86ora/8.1.7/admin/visus86/udump (ALIAS:UDUMP) TRACE_FILENAME...........: visus86_ora_17714.trc (TRACE_ID:31) INSTANCE_AND_RELEASE.... : VISUS86 (ON TDASOL3) 8.1.7.3.0 (SUNOS - PRODUCTION) TRACE_SIZE...............: 1332588 BYTES (IN 25314 LINES) TRACED_INTERVAL..........: STARTED ON 2003-02-04 11:03:13.545, AND LASTED 11.99 SECS USER_ELAPSED_TIME........: 11.99 SECS GAPS_WITH_NO_ACTIVITY....: 0.00 EFFECTIVE_TRACED_INTERVAL: 11.99 ACCOUNTED_CPU_TIME.......: 6.68 SECS (TOTAL SERVICE TIME) ACCOUNTED_ELAPSED_TIME...: 20.17 (RECURSIVE AND NON-RECURSIVE) WAITED_NON-IDLE_TIME.....: 7.72 SECS WAITED_IDLE_TIME.........: 0.90 ******************************************************************************************** ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 103 von 197 103 Response Time Analyse 10g 11/2005 Trace Analyzer Response Time Analyse 10g NUMBER_OF_CURSORS........: 231 (USER), 172 (INTERNAL <SYS>), 403 (TOTAL) UNIQUE_SQL...............: 136 (USER), 44 (INTERNAL <SYS>), 180 (TOTAL) *************************************************************************************** TOP SQL (SUMMARY OF CPU, ELAPSED AND WAITS PER TOP EXPENSIVE CURSOR) ==================================================================== cursor user non-idle idle id id command type count cpu top elapsed top waits top waits top ------ ---- ----------------------- ------ ----- --- ------- --- ----- --- ----- --98.... 65.. pl/sql execute......... 2 0.71 1 2.21 2 0.00 0.00 99.... 65.. insert................. 2 0.69 2 2.19 3 1.81 2 0.00 18.... 65.. pl/sql execute......... 4 0.61 3 1.93 4 0.00 0.00 137... 0... insert................. 375 0.53 4 0.71 5 0.02 0.00 113... 65.. select................. 3 0.40 5 3.00 1 2.11 1 0.01 115... 65.. select................. 125 0.05 0.36 0.31 3 0.00 5..... 0... select................. 15 0.01 0.22 0.22 4 0.00 29.... 0... select................. 266 0.05 0.27 0.21 5 0.10 2 34.... 65.. select................. 3 0.24 0.38 0.00 0.11 1 130... 65.. select................. 63 0.01 0.01 0.00 0.05 3 133... 65.. select................. 17 0.06 0.24 0.20 0.05 4 12.... 65.. pl/sql execute......... 74 0.21 0.23 0.00 0.04 5 *************************************************************************************** ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 104 von 197 104 Response Time Analyse 10g 11/2005 Trace-Analyzer Response Time Analyse 10g Details for wait event Times Count Max. Total Blocks 'db file scattered read (multiblock full scan)' Waited Zero Time Wait Waited Accessed --------------------------------------------------- ------ --------- ---- ------ -------bom.bom_calendar_dates............................. 26 8 0.02 0.19 178 mrp.mrp_schedule_dates_n1.......................... 2 0 0.04 0.06 21 mrp.mrp_load_parameters............................ 2 0 0.02 0.03 6 --------------------------------------------------- ------ --------- ---- ------ -------total.............................................. 30 8 0.04 0.28 205 • Sehr nützlich: Wait Events werden nach User und Segment individuell gruppiert! ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 105 von 197 105 Response Time Analyse 10g 11/2005 Servicezeit - Parsing – Syntaktische und semantische Überprüfung eines SQL-Befehls – Ermittlung "identischer" Statements – Ableitung eines "optimalen" Zugriffsplans Response Time Analyse 10g • Definition: • Begriffe – Hard parse – voller Umfang (aufwendig) – Soft parse – authentifiziert bereits geladenes Statement – Session Cursor Cache übernimmt bei parse call > 3 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 106 von 197 106 Response Time Analyse 10g 11/2005 Servicezeit - Parsing Response Time Analyse 10g • parse time cpu – Zeit zum Parsen der SQL-Befehle – Zwischen 10 und 40% der gesamten Servicezeit • sonst: • parse count und execute count – Parse count: soft und hard – Nicht über 20 – 30% von execute count • recursive cpu usage – Row cache und PL/SQL ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 107 von 197 107 Response Time Analyse 10g 11/2005 Parse-Zeiten 10g Response Time Analyse 10g parse time elapsed hard parse elapsed time failed parse elapsed time failed parse (out of shared memory) elapsed time hard parse (sharing criteria) elapsed time hard parse (bind mismatch) elapsed time ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 108 von 197 108 Response Time Analyse 10g 11/2005 Servicezeit - Parsing Response Time Analyse 10g select * from v$sysstat where name in ('parse time cpu','parse count (total)‚ ,'parse count (hard)' ,'parse count (failures)' ,'execute count' ,'session cursor cache count' , 'session cursor cache hits') ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 109 von 197 109 Response Time Analyse 10g 11/2005 Servicezeit - Parsing Response Time Analyse 10g select a.value "Total CPU", b.value "Parse CPU", c.value "Recursive CPU", a.value - b.value - c.value "Other" from v$sysstat a, v$sysstat b, v$sysstat c where a.name = 'CPU used by this session' and b.name = 'parse time cpu' and c.name = 'recursive cpu usage'; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 110 von 197 110 Response Time Analyse 10g 11/2005 Untergliederung der Servicezeit Response Time Analyse 10g • Restliche Zeit verwendet für – Lesen von Daten- und Indexblöchen – Fetch-Operationen – In der Regel der höchste Anteil ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 111 von 197 111 Response Time Analyse 10g 11/2005 Optimierung der Servicezeit Response Time Analyse 10g • Zu hohe Parse-Anteile – – – – Open/close-Calls untersuchen Bindevariablen verwenden Ggf. cursor_sharing Ggf. session_cursor_cache setzen • Zu hohe recursive Anteile – SQL in PL/SQL optimieren – shared_pool erhöhen ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 112 von 197 112 Response Time Analyse 10g 11/2005 Optimierung der Servicezeit Response Time Analyse 10g • Hoher Restanteil – SQL ausserhalb PL/SQL optimieren – LIO und PIOs reduzieren – Weitere Analysen über V$sql, v$sqlarea etc. ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 113 von 197 113 Response Time Analyse 10g 11/2005 cursor_sharing Response Time Analyse 10g • Dynamischer Init.ora Parameter – Session- und System-Kontext – Automatisiertes Ersetzen von Literalen durch Bindevariablen bei sonst gleicher Syntax • exact = nicht aktiviert, hard parse pro stmt. • force = Literale werden immer ersetzt, wenn Semantik nicht verändert wird – Ggf. problematisch bei stored outlines • similar – Literale werden nur dort ersetzt, wo eine Änderung des Plans nicht zu erwarten ist, ggf. wie exact ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 114 von 197 114 Response Time Analyse 10g 11/2005 bind variable peeking optimizer_features_enable >= 9.0.1 Betrachtet Bind-Werte beim ersten Aufruf des Cursors! Keine Evaluierung bei Folgeaufrufen Sharing des Cursors ansonsten wie cursor_sharing Response Time Analyse 10g • • • • ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 115 von 197 115 Response Time Analyse 10g 11/2005 Response Time Analyse 10g Die Praxis: Kontext IO ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 116 von 197 116 Response Time Analyse 10g 11/2005 Basiswissen – ORA-Daten in SGA und FS Cache • Von Raw Device – Direct IO • Reads – physical reads oder logical reads – Statistik session logical reads – als p. direct reads in PGA – Statistik physical reads direct – als p. cache reads in SGA – Statistik physical reads cache – Gesamtstatistik physical reads Response Time Analyse 10g • Über File System Cache – Buffered IO • Writes – analog reads als cache oder direct write – Statistiken physical writes, physical writes direct und physical writes from cache ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 117 von 197 117 Response Time Analyse 10g 11/2005 Wait Events Response Time Analyse 10g • • • • • • • db file sequential read – single block reads db file scattered read – mulitblock reads direct path read direct path write db file parallel write log file parallel write control file parallel write ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 118 von 197 118 Response Time Analyse 10g 11/2005 db file sequential read – read()-Call – kontinuierliche Speicherung im Memory-Bereich – entspricht Single-Block Read aus Sicht von Oracle – Ausnahme: MB reds auf temporären Segmenten • Verwendet für – – – – Response Time Analyse 10g • Wartezustände bei read()-Operationen (Unix) Index Scans Table Access by Rowid Undo Zugriffe Control File und Datafile Header • Parameter – p1 – file# – p2 – block# – p3 - blocks ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 119 von 197 119 Response Time Analyse 10g 11/2005 db file sequential read – dadurch Reduzierung des LIO und dadurch Reduzierung des PIO – Implementierung, Indexstrukturen, Parameter Response Time Analyse 10g • Optimierung der zugehörigen SQL-Statements • wenn nicht möglich dann IO-Durchsatz erhöhen – Durchschnittliche Single Block Reads ca. 10ms oder ca. 68 ms (SAN) – siehe Tabelle aux_stats$ – IO-Verteilung: Platten und Controller – v$filestat – Filesystem und Blockgrösse versus Rawdevice – Raid Level – Multiple Buffer Pools oder Cache-Klausel ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 120 von 197 120 Response Time Analyse 10g 11/2005 db file scattered read – readv()-Call – verteilte Speicherung im Memory-Bereich – entspricht Multi-Block Read aus Sicht von Oracle – maximal db_file_mulitblock_read_count • Verwendet für Response Time Analyse 10g • Wartezustände bei read()-Operationen (Unix) – Full Table Scans – Fast Full Scans auf Indizes (FFS) • Parameter – p1 – file# – p2 – block# – p3 – block count ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 121 von 197 121 Response Time Analyse 10g 11/2005 db file scattered read – – – – „gecachte“ Blöcke extent boundaries Migrierte oder „gechainte“ Rows Index-Pflege bei INSERTS über Subqueries mit Full Scans Response Time Analyse 10g • Gemischte db file waits bei full table Scans möglich: • Optimierung ähnlich sequential reads: – SQL-Optimierung – wenn nicht möglich dann IO-Durchsatz erhöhen ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 122 von 197 122 Response Time Analyse 10g 11/2005 direct path read (temp) Response Time Analyse 10g • single oder multiblock rad in PGA – entspricht Anzahl der read-requests für Synch-IO – ungenau wegen Überlappungen bei Asynch-IO • Ursachen – Sorts auf Platte – Hash-Joins > hash_area_size – Parallelisierung von SQL – für Query Slaves (!!) • für Parent der Event „PX Deq: Execute Reply“ • Parameter – p1 – file# – p2 – block# – p3 – block count ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 123 von 197 123 Response Time Analyse 10g 11/2005 direct path read (temp) – SQL Optimierung – sort_area_size, hash_area_size, pga_aggregate_target • Direct IO Buffer Size Response Time Analyse 10g • Tuning Massnahmen – Grösse in Byte über _db_file_direct_io_count – Trace über Event 10357 zeigt slots und slot size – Einstellung von Sltos size über Event 10351 – Anzahl slots über Event 10353 • aktuelle Nutzung siehe über v$tempseg_usage ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 124 von 197 124 Response Time Analyse 10g 11/2005 direct path write (temp) – direct load – sorts und has joins Response Time Analyse 10g • Analog direct path read – Schreiben aus PGA-Puffer • Ausgelöst durch • Massnahmen wie bei direct path reads ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 125 von 197 125 Response Time Analyse 10g 11/2005 db file parallel write Response Time Analyse 10g • Wartezustand im Kontext des DBWR • DBWR schreibt modifizierte Blöcke – – – – alle 3 Sekunden initialisiert durch Server-Prozess bei Checkpoints wenn Grenzwerte erreicht sind ... • Begleitende Events bei den Serverprozessen – free buffer waits – write complete waits • Massnahmen: DBWR Durchsatz erhöhen – asynch IO – db_writer_processes > 1 oder dbwr_io_slaves ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 126 von 197 126 Response Time Analyse 10g 11/2005 log file parallel write Response Time Analyse 10g • Wartezustand im Kontext des LGWR • LGWR schreibt – nach Zeitraster – nach Füllraster – zum Commit ... • Begleitende Events für Serverprozesse – log file synch • Massnahmen – bessere IO-Verteilung – Log-Dateien separieren – Reduzierung des Redo-Volumens • NOLOGGING • Commit-Frequenz ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 127 von 197 127 Response Time Analyse 10g 11/2005 File IO Response Time Analyse 10g select file#, readtim, phyrds , readtim/phyrds from v$filestat order by 4; select disk_reads, executions , disk_reads/executions, sql_text from v$sql where executions != 0 order by 3; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 128 von 197 128 Response Time Analyse 10g 11/2005 File IO Response Time Analyse 10g SELECT fs.file#, NAME, avgiotim , PHYRDS, PHYWRTS, miniotim,lstiotim , PHYBLKRD/phyrds Read_ratio , PHYBLKWRT/phywrts Write_ratio FROM V$DATAFILE df, V$FILESTAT fs WHERE df.FILE# = fs.FILE# order by PHYRDS + PHYWRTS desc / ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 129 von 197 129 Response Time Analyse 10g 11/2005 Response Time Analyse 10g Die Praxis: Kontext Latches ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 130 von 197 130 Response Time Analyse 10g 11/2005 Aufgabe von Latches Response Time Analyse 10g – Serialisierung der Zugriffe • Schutz von Datenstrukturen in der SGA • schüten shared memory allocations – Serialisierung von Ausführungen (executions) • Schutz von Korruption ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 131 von 197 131 Response Time Analyse 10g 11/2005 Latch Characteristics Enqueues Latches Access Several modes Mostly exclusive Acquisition FIFO queue Non-deterministic Atomicity No Yes Response Time Analyse 10g – "Low level" Lock – atomare Operationen – Latches unterscheiden sich darin von Locks (enqueues erfordern multiple Operationen ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 132 von 197 132 Response Time Analyse 10g 11/2005 Latch Implementierung Response Time Analyse 10g • "schnelle" und billige Locks • Exclusive latches = schreiben von einem Process • Shared latches = concurrent reads auf einen MemoryBereich • Regelwerk (Reihenfolge der Aquirierung) um Deadlocks zu vermeiden. ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 133 von 197 133 Response Time Analyse 10g 11/2005 Latch Attribute – latch set: parent und child latches • Child latches werden dynamisch alloziert • Parent und child latches tragen den gleichen Namen • Latchlevel verhindern interne Deadlocks Response Time Analyse 10g • Latches: einzeln oder in Sets/Gruppen (latch set) ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 134 von 197 134 Response Time Analyse 10g 11/2005 Mechanismen Prozeß B wartet (spins + retries + sleeps) * N _SPIN_COUNT Response Time Analyse 10g SGA Latch Process B Process A CPU 1 CPU 2 Proceß A hält den Latch ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 135 von 197 135 Response Time Analyse 10g 11/2005 No-Wait Modus Response Time Analyse 10g • Ein Versuch; kein spin oder sleep • Für den Fall, dass mehrere latches verfügbar sind – Wenn frei, wird Latch reserviert – Wenn belegt, wird nächster Kandidat aquiriert ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 136 von 197 136 Response Time Analyse 10g 11/2005 Wait Modus Response Time Analyse 10g • Latch gets mit Warteschleifen – Ein schneller get; kein spin – wiederholte gets mit wachsenden Warteintervallen, mit spin bei mehreren CPUs • Wartet auf latch free wait event zwischen den gets • Schlafzeitzeit verdoppelt sich bei jedem zweiten Versuch bis zu einer Maximalzeit Fast get – spin_retr - sleep – spin_retr - sleep - spinretr - sleep … ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 137 von 197 137 Response Time Analyse 10g 11/2005 Latch Klassen Response Time Analyse 10g • Verfügbar ab 9iR2 • Jede Klasse kann eigenen _spin_count erhalten -- Spin Count für Klassen ermitteln SELECT indx, spin FROM x$ksllclass / -- Count für Klasse 2 anpassen _latch_class_2 = 6000 -- Latch# ermitteln über v$latchname -- Latch 97 Klasse 2 zuordnen _latch_classes = ’97:2’ -- Kontrollieren SELECT a.kslldnam, b.kslltnum, b.class_ksllt FROM x$kslld a, x$ksllt b WHERE a.kslldadr = b.addr AND b.class_ksllt > 0 / ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 138 von 197 138 Response Time Analyse 10g 11/2005 Relative Wartezeit EVENT ------------latch free CPU used when call started ..... Response Time Analyse 10g SELECT event, time_waited, round(time_waited*100/ SUM (time_waited) OVER(),2) wait_pct FROM (SELECT event, time_waited FROM v$system_event WHERE event NOT IN ('Null event','client message','rdbms ipc reply','smon timer', 'rdbms ipc message','PX Idle Wait','PL/SQL lock timer','file open', 'pmon timer','WMON goes to sleep','virtual circuit status', 'dispatcher timer','SQL*Net message from client', 'parallel query dequeue wait','pipe get') UNION (SELECT NAME, VALUE FROM v$sysstat WHERE NAME LIKE 'CPU used when call started')) ORDER BY 2 DESC; TIME_WAITED WAIT_PCT ---------------- ----------40144 31.67 30341 23.94 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 139 von 197 139 Response Time Analyse 10g 11/2005 Deatillierung... Response Time Analyse 10g SELECT name, gets, sleeps , sleeps*100/sum(sleeps) over() sleep_pct , sleeps*100/gets sleep_rate FROM v$latch where gets>0 ORDER BY sleeps desc; NAME GETS SLEEPS SLEEP_PCT SLEEP_RATE ---------------------- ----------- ------------ --------- ---------cache buffers chains 13,863,552 38,071 99.48 .2746 session allocation 1,223,982 110 .29 .0090 checkpoint queue latch 1,461,039 39 .10 .0027 .... ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 140 von 197 140 Response Time Analyse 10g 11/2005 Latch Waits unter 10g Response Time Analyse 10g • Neben latch free 28 weitere Latch Events • Vereinfachte Analyse latch: cache buffer handles latch: cache buffers chains latch: cache buffers lru chain latch: checkpoint queue latch latch: enqueue hash chains latch free latch: library cache latch: library cache lock latch: library cache pin latch: parallel query alloc buffer latch: redo allocation latch: redo copy latch: redo writing latch: session allocation latch: shared pool ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 141 von 197 141 Response Time Analyse 10g 11/2005 latch free – Warten auf Latch – adress, latch number, tries als Parameter – Feststellen welches Latch (v$latchname, v$latch, v$latch_children) Response Time Analyse 10g • Latch free – Aktion nach Art des Latch • Shared pool latch & Library cache latch – bei space allocation = Reduzieren von Parsing • cache buffer hash chain latch – bei Anfrage und Änderung eines Buffers ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 142 von 197 142 Response Time Analyse 10g 11/2005 Shared Pool Latches Response Time Analyse 10g • Komponente über v$sgastat • Shared pool latch schützt Memory Operationen – z. B. bei hard parse von SQL – Version < 9i – 1 sahred pool latch – danach bis zu 7 child latches möglich • mindestens 4 CPUs und shared_pool_size > 250 MB • Subpools einstellbar über _kghdsidx_count • Library cache latch für Arbeit mit LC-Objekten – Anzahl: kleinste Primzahl >= CPU_COUNT – Einstellung über _kgl_latch_count ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 143 von 197 143 Response Time Analyse 10g 11/2005 Shared Pool Latches Response Time Analyse 10g • Massnahmen: • Reduzierung von Hard Parse – Bindevariablen oder cursor_sharing – SQL-Aufbau • Zu grosser Shared Pool – lange Freilisten pro chunk size – siehe heapdump level 2 – Freiplatz über v$sgastat • Hohe Anzahl von version_count (Variante von Hard Parse) – View v$sql_shared_cursor mit reason code ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 144 von 197 144 Response Time Analyse 10g 11/2005 LIO: Ablauf und Aufwand Response Time Analyse 10g • (Logisches) Lesen eines Buffers/Blocks im Buffer Cache der SGA • Hash-Table enthält buffer header in cache buffer chains (verkettete Listen) • Hashing eines Blocks nach – DBA – Tablespace Number – Block Typ • Geschützt durch Latches ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 145 von 197 145 Response Time Analyse 10g 11/2005 LIO: Ablauf und Aufwand Response Time Analyse 10g _db_block_hash_buckets _db_block_hash_latches • Z.B. Buffer = 3000 (v$buffer_pool) • Hash Buckets = 6007 (Primzahl >= 2*buffer) • Cache Buffers Chains Latches = 1024 (x$ksppstvl, x$ksppi) ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 146 von 197 146 Response Time Analyse 10g 11/2005 LIO: Ablauf und Aufwand - Response Time Analyse 10g 1. Hash-Funktion mit DBA etc. ergibt chain 2. Prüfung/"Lesen" der betreffenden chain – geschützt durch buffer chain Latch 3. Falls Block vorhanden: lesen 4. CR-Modus: Rekonstruktion von Clone- Blöcken in gleicher chain! Zugriff auf Rollback-Segmente 5. Lesen der Rows des Blockes ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 147 von 197 147 Response Time Analyse 10g 11/2005 LIO: Ablauf und Aufwand Response Time Analyse 10g • 8i: pro latch 1 Benutzer – blockt auch als Leser • Oracle 9i: – – – – mehr buckets 1 Latch für mehrere buckets mehere „Leser“ pro cache buffers chains latch „Schreiber“ blockieren „Leser“ und umgekehrt ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 148 von 197 148 Response Time Analyse 10g 11/2005 LIO: Ablauf und Aufwand – Einstellungen über x$ksppi und x$ksppcv – Zugehörige Latches: v$latch und v$latch_children – Bufferzuordnung: x$bh – über Spalte HLADDR Verknüpfung mit v$latch_children Response Time Analyse 10g • Recherchemöglichkeiten: SELECT n.ksppinm, v.ksppstvl FROM x$ksppi n, x$ksppcv v WHERE n.ksppinm IN ('_db_block_hash_buckets', '_db_block_hash_latches') AND n.indx = v.indx AND n.inst_id = v.Inst_id; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 149 von 197 149 Response Time Analyse 10g 11/2005 LIO Aufwand Response Time Analyse 10g • Höher als angenommen wegen – Latch-Synchronisierung – Clone-Aufwand (Lesekonsistenz) – Ggf. Grosse Anzahl aus Sorglosigkeit ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 150 von 197 150 Response Time Analyse 10g 11/2005 PIO: Ablauf Response Time Analyse 10g 1. Prüfen der cache buffers chains 2. Physisches Lesen des/der Blöcke – ggf. von OS gepuffert 3. Modifikation von buffer chains – ggf. löschen und eintragen 4. Lesen des Inhalts wie bei LIO ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 151 von 197 151 Response Time Analyse 10g 11/2005 Cache buffers Chains Latch – – – – Latches : Bucket = 1 : n Parameter _db_blocks_hash_latches default abhängig von Cache Size, < 1 GB = 1024 Default Hash Buckets abhängig von db_cache_size; Parameter _db_block_hash_buckets Response Time Analyse 10g • auch unter dem Namen hash latches oder CBC latches • schützen Operationen im Kontext der hash chains ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 152 von 197 152 Response Time Analyse 10g 11/2005 Cache buffers Chains Latch Response Time Analyse 10g • Ineffizientes SQL – unnötig viele Blöcke • „heisse“ Blöcke – Reduzierung der Datenfülle • PCTFREE • Blockgrösse – Lange Hash Chains • Anzahl der Blöcke pro Latch ermitteln: SELECT hladdr, count(*) FROM x$bh GROUP by hladdr / ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 153 von 197 153 Response Time Analyse 10g 11/2005 Buffer Pool Interna Response Time Analyse 10g • Puffer enthalten Datenblöcke • Puffer werden über buffer header identifiziert • Datenblöcke werden über Blockadressen identifiziert (DBA/RDBA) • Hash Buckets verweisen jeweils auf eine Kette von buffer headern (hassh chain) • Puffer werden über ihren Hash-Wert in der hash chain und damit im Buffer Cache lokalisiert • Working sets sind verkettete Listen von Puffern • Working Sets gruppieren Puffer nach Verwendungszwecken. ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 154 von 197 154 Response Time Analyse 10g 11/2005 Working Sets Response Time Analyse 10g List Name Type of buffers on list LRU Replacement list LRU-W Write list; old dirty buffers LRU-P Ping list; RAC only LRU-XO Reuse object list; buffers to be written for drop/truncate LRU-XR Reuse range list; buffers to be written for reuse block range Thread CKPT queue Thread checkpoint buffers File CKPT queue Checkpoint buffers queued by file# Recovery CKPT queue Buffers for performing recovery ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 155 von 197 155 Response Time Analyse 10g 11/2005 Cache Buffers LRU Chain Latch Response Time Analyse 10g • CBLCL schützen Working Sets im Buffer Pool – Anzahl der WS ermitteln über x$kcbwds – Anzahl der Latches über v$latch_children – Einstellbar über _db_block_lru_latches • Ursachen – intensive Block-Operationen, ggf. durch schlechtes SQL – SQL entsprechend optimieren ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 156 von 197 156 Response Time Analyse 10g 11/2005 Blockgrösse in Oracle8i Response Time Analyse 10g Höhe Höhe von von IndexIndexbäumen bäumen Zeilen Zeilenpro pro Tablescan Tablescan Zeilen Zeilenpro pro Block Block RowRowsplitting splitting db_block_size ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 157 von 197 157 Response Time Analyse 10g 11/2005 Blockgrössen in Oracle9i Response Time Analyse 10g • db_block_size = 4096 – Setzt primäre Blockgröße – Standard- und SYSTEM-Größe • db_cache_size = 50m – Bestimmt Default-Bufferpool • db_8k_cache_size = 80m – Auch 2k/8K/16k/32K – Bestimmt bis zu 4 weitere Buffer-Caches • SGA insgesamt <= sga_max_size ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 158 von 197 158 Response Time Analyse 10g 11/2005 Blockgrössen Response Time Analyse 10g ALTER SYSTEM SET db_4k_cache_size = 50m; CREATE TABLESPACE b4k DATAFILE '/opt/oracle/oradata/o901/b4k.dbf' SIZE 10M BLOCKSIZE 4096; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 159 von 197 159 Response Time Analyse 10g 11/2005 Weitere Parameter – Optimierung von Flüchtigen oder "permanenten" Objekten – Keep-Klausel ersetzt CACHE-Klausel – Für CREATE und ALTER Response Time Analyse 10g • Multipe Buffer Pools • Angaben in Grössen • db_keep_cache_size • db_recycle_cache_size ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 160 von 197 160 Response Time Analyse 10g 11/2005 Multiple Buffer Pools Response Time Analyse 10g -- Nur für Standard-Blockgrössen CREATE TABLE test (c1 NUMBER, c2 VARCHAR2(100)) STORAGE(INITIAL 100K NEXT 100K BUFFER_POOL KEEP); ALTER TABLE test2 STORAGE(BUFFER_POOL RECYCLE); ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 161 von 197 161 Response Time Analyse 10g 11/2005 Views Response Time Analyse 10g SELECT id,name, block_size, current_size,buffers FROM v$buffer_pool; ID -1 2 3 4 5 6 7 NAME --------KEEP RECYCLE DEFAULT DEFAULT DEFAULT DEFAULT DEFAULT BLOCK_SIZE ---------4096 4096 4096 2048 8192 16384 32768 CURRENT_SIZE -----------16 8 28 8 4 16 4 BUFFERS ---------3932 1966 6881 3784 501 1012 127 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 162 von 197 162 Response Time Analyse 10g 11/2005 v$buffer_pool_statistics Response Time Analyse 10g ID NAME BLOCK_SIZE SET_MSIZE CNUM_REPL CNUM_WRITE CNUM_SET BUF_GOT SUM_WRITE SUM_SCAN FREE_BUFFER_WAIT WRITE_COMPLETE_WAIT BUFFER_BUSY_WAIT FREE_BUFFER_INSPECTED DIRTY_BUFFERS_INSPECTED DB_BLOCK_CHANGE DB_BLOCK_GETS CONSISTENT_GETS PHYSICAL_READS PHYSICAL_WRITES ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 163 von 197 163 Response Time Analyse 10g 11/2005 V$buffer_pool_statistics NAME CONSISTENT_GETS BLOCK_SIZE CONSISTENT_GETS DB_BLOCK_GETS Response Time Analyse 10g select name, block_size ,consistent_gets, db_block_gets,consistent_gets from v$buffer_pool_statistics ------------------- ---------- --------------- ------------- -------------DEFAULT 379081 8192 379081 79133 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 164 von 197 164 Response Time Analyse 10g 11/2005 dynamische SGA Response Time Analyse 10g • Vorgeben der Maximalgrösse (statisch) • Dynamik bei Buffer-Pool und Shared Pool • Gerundet auf Granule – Kleinste Einheit, abhängig von SGA-Größe – 4MB (< 128MB) oder 16 MB >= 128MB – Spalte resize_state in v$buffer_pool SGA_MAX_SIZE = 800M ALTER SYSTEM SET shared_pool_size = 100M; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 165 von 197 165 Response Time Analyse 10g 11/2005 db_cache_advice Response Time Analyse 10g • Aktiviert Statistiken für Bufferpool – Off: deaktiviert Statistikgenerierung – On: reaktiviert v$db_cache_advice – Ready: alloziert Speicher, erhält „alte“ Statistiken • Overhead – CPU – Memory: 100 bytes pro Puffer alloziert vom Shared Pool ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 166 von 197 166 Response Time Analyse 10g 11/2005 v$db_cache_advice Response Time Analyse 10g • db_cache_advice = on • Zeigt Statistiken von 10% - 200% der aktuellen Puffergröße Estd Phys Estd Phys Cache Size (MB) Buffers Read Factor Reads ---------------- ---------- ----------- -----------91 11,406 7.38 75,865,861 121 15,208 4.97 51,111,658 ... 304 38,020 1.00 10,282,475 334 41,822 .93 9,515,878 364 45,624 .87 8,909,026 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 167 von 197 167 Response Time Analyse 10g 11/2005 v$db_cache_advice NUMBER VARCHAR2(20) NUMBER VARCHAR2(3) NUMBER NUMBER NUMBER NUMBER Response Time Analyse 10g ID NAME BLOCK_SIZE ADVICE_STATUS SIZE_FOR_ESTIMATE BUFFERS_FOR_ESTIMATE ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 168 von 197 168 Response Time Analyse 10g 11/2005 Database Writer Response Time Analyse 10g • Schreibt modifizierte Blöcke – Make free requests – Checkpoints • Checkpoint SCN • Checkpoint RBA • Thread that allocated the checkpoint • Enabled thread bitmap • Timestamp – Ping writes – Cleanout von "cold dirty buffers" • Wait Events – Free buffer waits, Buffer busy waits, Write complete waits ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 169 von 197 169 Response Time Analyse 10g 11/2005 Buffer Busy Waits Response Time Analyse 10g • Buffer busy waits verursacht durch: – mehrere sessions lesen den selben Block – mehrere sessions warten auf die Fertigstellung einer Blockmodifikation • • • • Analyse: Grund (reason Code) und Block-Klasse P3 in V$SESSION_WAIT hat "reason code" V$WAITSTAT zeigt waits gruppiert nach Blockklassen X$KCBFWAIT zeigt waits gruppiert nach Dateien ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 170 von 197 170 Response Time Analyse 10g 11/2005 Buffer Busy Waits Response Time Analyse 10g • Reason Code gibt – Ursache für das Warten (erste Ziffer) – Anlass der Anforderung (zweite und dritte Ziffer) • Erste Ziffer – 1 – Buffer wurde gelesen – 2 – Buffer genutzt in inkompatiblem Modus • zweite Ziffer – – – – – 00 – newing/reuse 10 – CU for inspection 20 – CU for modification 30 – CU oder CR zum consisten read 31 – CU oder CR zum CR prüfen ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 171 von 197 171 Response Time Analyse 10g 11/2005 Buffer Busy Waits - 220 Response Time Analyse 10g • Zugriff auf Buffer mit dem Wunsch zu modifizieren – Block war hierfür nicht verfügbar • Ursachen und Maqssnahmen – gleichzeitige Inserts auf identischen Blöcken • Feilisten-Verwaltung, Reverse KEy – Modifikationen auf Rows in identischen Blöcken • Row-dichte reduzieren, PCTFREE etc. ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 172 von 197 172 Response Time Analyse 10g 11/2005 Biffer Busy Waits – 130, 230 Response Time Analyse 10g • 130 – CR Anfrage für einen Buffer, der gerade eingelesen wird – ggf. KEEP Pool • 230 – CR Anfrage eines Buffers der gerade modifiziert wird – ggf. geringere Row-Dichte/bessere Datenverteilung ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 173 von 197 173 Response Time Analyse 10g 11/2005 Buffer Cache Statistics Response Time Analyse 10g • Drei buffer cache Statistikgruppen: – User statistics – Background (DBWR) statistics – RAC related statistics • Details in Oracle9i Database Reference: Appendix C ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 174 von 197 174 Response Time Analyse 10g 11/2005 DBWR Statistics Response Time Analyse 10g • DBWR Statistiken werden kalkuliert, wenn DBWR die buffers schreibt und die LRU-Listen scannt • Die wichtigsten: – DBWR timeouts – “Make free” requests – Checkpoints • DBWR in der Regel selbsttunend! ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 175 von 197 175 Response Time Analyse 10g 11/2005 Buffer busy waits Response Time Analyse 10g • Buffer busy waits – Reaktion pro Klasse – Segment Header: • Freilisten/-gruppen erhöhen • HWM-Bump (_BUMP_HIGHWATER_MARK_COUNT) • Contention auf der Extent-Map des Headers – Data Block • Warten auf Leseoperation = mehr buffer • Zu viele Rows pro Block = pctfree/pctused • Zu viele Inserts/Block = mehr Freilisten ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 178 von 197 178 Response Time Analyse 10g 11/2005 Buffer busy waits Response Time Analyse 10g • Buffer busy waits – Reaktion pro Klasse – Free List Block Waits: • Freilisten/-gruppen erhöhen ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 179 von 197 179 Response Time Analyse 10g 11/2005 free buffer waits – Warten beim Scan nach freien Puffern – Verfeinert durch (v$sysstat, v$sessstat) • Free buffers inspected („angefasste“ Buffer) • Dirty buffers inspected („angefasste“ schmutzige B.) • Free buffers requested (angefordete B.) Response Time Analyse 10g • Free buffer waits – Mgl. Geringe Zahl pro Scan – Ggf. _db_block_write_batch erhöhen ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 180 von 197 180 Response Time Analyse 10g 11/2005 Diverses Response Time Analyse 10g • Log file sync – Session wartet auf LGWR – Ggf. log_buffer vergrößern – Ggf. IO-Problem bei Online Redo • Enqueue – Session wartet auf Lock – Verfeinert durch enqueue-Statistiken – Abhängig von Lock-Type (v$lock) ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 181 von 197 181 Response Time Analyse 10g 11/2005 Diverses Response Time Analyse 10g • Write complete waits – Warten auf Beenden des Schreibvorgangs – Ggf. zu häufige Checkpoints • SQL* Net more data from/to client – Warten auf Netzwerk-Opertionen (latency) – Reduzierung der Calls – Reduzierung der Latenzzeit ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 182 von 197 182 Response Time Analyse 10g 11/2005 Buffer Cache Tabellen Response Time Analyse 10g • • • • V$WAITSTAT : Wait statistics pro Blockklasse X$KCBFWAIT : Wait statistics proFileID V$BUFFER_POOL : Buffer pool descriptors X$KCBBHS : DBWR Histogramme ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 183 von 197 183 Response Time Analyse 10g 11/2005 Response Time Analyse 10g SQL Workareas ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 185 von 197 185 Response Time Analyse 10g 11/2005 PGA (dedicated) Response Time Analyse 10g PGA session memory private SQL area persistent run-time Run-time area enthält SQL workareas ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 186 von 197 186 Response Time Analyse 10g 11/2005 SQL workarea Response Time Analyse 10g • Sortierbereiche – sort_area_size • Hash-Bereiche – hash_area_size (für Hash-Joins) • Bitmap-Bereiche – bitmap_merge_area_size (bitmap-merge bei Index-RangeScans) – create_bitmap_area_size (Bitmap Aufbau) ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 187 von 197 187 Response Time Analyse 10g 11/2005 SQL workarea Response Time Analyse 10g • Schwer zu optimieren wegen schwankender Anforderungen • Mögliche Operationen – optimal – one-pass – multi-pass ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 188 von 197 188 Response Time Analyse 10g 11/2005 dynamische SQL Workareas Response Time Analyse 10g • Nur für dedizierte Serverprozesse • Gesamtgröße aller PGAs der Instanz über dynamischen Parameter – pga_aggregate_target – Zwischen 10MB und 4000GM – Einfache Größenbestimmung • workarea_size_policy – auto – automatisiert Speicherallokation – manual ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 189 von 197 189 Response Time Analyse 10g 11/2005 v$sysstat /v$sesstat Response Time Analyse 10g • • • • Zusätzliche Statistiken: workarea memory allocated workarea executions – optimal workarea executions – onepass – Anzahl der Speicherbereiche, die einen zusätzlichen Ladelauf hatten • workarea executions – multipass – Anzahl der Speicherbereiche, die mehrere zusätzliche Ladeläufe hatten. ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 190 von 197 190 Response Time Analyse 10g 11/2005 v$pgastat – Für workareas aktuell verfügbarer Bereich – pga_aggregate_target minus bereits verbrauchter Bereich Response Time Analyse 10g • Statistiken der PGA-Nutzung u.a.: • aggregate PGA auto target • global memory bound – Maximalgröße einer Workarea (>= 1MB) • total PGA allocated • total PGA used for auto workareas ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 191 von 197 191 Response Time Analyse 10g 11/2005 pga_used_mem, pga_alloc_mem, pga_max_mem Response Time Analyse 10g • v$sql_workarea – Kumulative Statikstiken von deallozierten Workareas – Join mit v$sql und v$sqlarea • v$sql_workarea_active – Statistiken augenblicklich aktiver Workareas – Pro Session und Operation ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 192 von 197 192 Response Time Analyse 10g 11/2005 v$sql_workarea_active Response Time Analyse 10g SELECT operation, options, object_name name, trunc(bytes/1024/1024) "input(MB)", trunc(last_memory_used/1024) last_mem, trunc(estimated_optimal_size/1024)optimal_mem, trunc(estimated_onepass_size/1024)onepass_mem, decode(optimal_executions, null, null, optimal_executions||’/’||onepass_executions ||’/’|| multipasses_exections) "O/1/M„ FROM V$SQL_PLAN p, V$SQL_WORKAREA w WHERE p.address=w.address(+) AND p.hash_value=w.hash_value(+) AND p.id=w.operation_id(+) AND p.address=’88BB460C’; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 193 von 197 193 Response Time Analyse 10g 11/2005 v$sql_workarea_active OPTIMAL_ME ONEPASS_ME ---------- ---------SELECT STATE SORT GROUP BY 16 16 HASH JOIN SEMI 5194 2187 TABLE ACCESS FULL TABLE ACCESS FULL O/1/M -----4582 8 4582 5976 Response Time Analyse 10g OPERATION OPTIONS NAME input(MB) LAST_MEM ------------ -------- -------- --------- -------- 16/0/0 16/0/0 ORDERS LINEITEM 51 1000 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 194 von 197 194 Response Time Analyse 10g 11/2005 v$sql_workarea_active Response Time Analyse 10g SELECT to_number(decode(SID, 65535, NULL, SID)) sid, operation_type OPERATION, trunc(WORK_AREA_SIZE/1024) WSIZE, trunc(EXPECTED_SIZE/1024) ESIZE, trunc(ACTUAL_MEM_USED/1024) MEM, trunc(MAX_MEM_USED/1024) "MAX MEM", NUMBER_PASSES PASS FROM V$SQL_WORKAREA_ACTIVE ORDER BY 1,2; ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 195 von 197 195 Response Time Analyse 10g 11/2005 v$sql_workarea_active Response Time Analyse 10g SID --27 44 71 OPERATION WSIZE ESIZE MEM MAX MEM PASS --------------- ----- ------ ------ ------- ---GROUP BY (SORT) 73 73 64 64 0 HASH-JOIN 3148 3147 2437 2437 0 HASH-JOIN 13241 19200 12884 34684 1 ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 196 von 197 196 Response Time Analyse 10g 11/2005 Literatur Response Time Analyse 10g James Morle – Scaling Oracle 8i Cary Millsap with Jeff Hold – Optimizing Oracle Performance R.Shee, K. Deshpande, K. Gopalakrishnan – Oracle Wait Interface Diverse Metalink-Artikel ©Database Consult GmbH - Jachenau Version 10/2005 Copyright Database Consult GmbH Folie 197 von 197 197