Performance-Analyse mit Bordmitteln

317 Aufrufe

Veröffentlicht am

http://www.opitz-consulting.com

Nicht immer stehen einem DBA GUI-basierte (und oftmals teure) Tools zur Verfügung, um ein Performance-Problem in der Datenbank zu analysieren. Mit den vorhandenen "Bordmitteln" der Datenbank kann man jedoch auch eine gute Diagnose stellen. Dieser Vortrag widmet sich einer Auswahl dieser Werkzeuge und legt einen Schwerpunkt auf die Möglichkeiten, die einem in der Standard Edition und ohne Tuning Pack zur Verfügung stehen.

Unser Experte Uwe Küchler hat beim DOAG Community Webcast am 8.4.2016 eine Auswahl von Werkzeugen vorgestellt.

--
Über uns:
Als führender Projektspezialist für ganzheitliche IT-Lösungen tragen wir zur Wertsteigerung der Organisationen unserer Kunden bei und bringen IT und Business in Einklang. Mit OPITZ CONSULTING als zuverlässigem Partner können sich unsere Kunden auf ihr Kerngeschäft konzentrieren und ihre Wettbewerbsvorteile nachhaltig absichern und ausbauen.

Besuchen Sie unsere Homepage: http://www.opitz-consulting.com

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
317
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
69
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • Hier ist zu sehen, wie in Oracle 12.1.0.2 Idle Events in den Top 5 auftauchen und damit die „echten“ Top Events verdrängen.

    Es gibt aber noch viel mehr Möglichkeiten als nur Reports zu lesen…
  • Hier ist zu sehen, wie in Oracle 12.1.0.2 Idle Events in den Top 5 auftauchen und damit die „echten“ Top Events verdrängen.

    Es gibt aber noch viel mehr Möglichkeiten als nur Reports zu lesen…
  • Hier ist zu sehen, wie in Oracle 12.1.0.2 Idle Events in den Top 5 auftauchen und damit die „echten“ Top Events verdrängen.

    Es gibt aber noch viel mehr Möglichkeiten als nur Reports zu lesen…
  • Performance-Analyse mit Bordmitteln

    1. 1. © OPITZ CONSULTING GmbH 2016 Seite 1Oracle Performance-Analyse mit Bordmitteln Uwe Küchler Senior Consultant – Infrastructure Consulting OPITZ CONSULTING Deutschland GmbH Eine Auswahl von Werkzeugen DOAG Community Webcast 2016 8.4.2016 Performance-Analyse mit Bordmitteln
    2. 2. © OPITZ CONSULTING GmbH 2016 Seite 2Oracle Performance-Analyse mit Bordmitteln Mission Wir entwickeln gemeinsam mit allen Branchen Lösungen, die dazu führen, dass sich diese Organisationen besser entwickeln als ihr Wettbewerb. Unsere Dienstleistung erfolgt partnerschaftlich und ist auf eine langjährige Zusammenarbeit angelegt. Leistungsangebot  Business IT Alignment  Business Information Management  Business Process Management  Anwendungsentwicklung  SOA und System-Integration  IT-Infrastruktur-Management Märkte  Branchenübergreifend  Über 600 Kunden 29% Industrie / Versorger / Telekommunikation 29% Handel / Logistik / Dienstleistungen 42% Öffentliche Auftraggeber / Banken und Versicherungen / Vereine und Verbände Eckdaten  Gründung 1990  400 Mitarbeiter  10 Standorte
    3. 3. © OPITZ CONSULTING GmbH 2016 Seite 3Oracle Performance-Analyse mit Bordmitteln Zur Person  Generation C=64  Seit über 25 Jahren in der IT tätig  1997-2000 bei Oracle Deutschland  Seither durchgehend Oracle-Berater, im DBA- und Entwicklungs-Umfeld, Tutor  Seit 09/2013 bei OPITZ CONSULTING  Buch- und Blogautor (oraculix.de) 1975
    4. 4. © OPITZ CONSULTING GmbH 2016 Seite 5Oracle Performance-Analyse mit Bordmitteln Agenda 1. Analyse eines akuten Problems a) LongOps b) ASH für 60 Minuten kostenfrei? c) (Extended) SQL_TRACE und orasrp 2. Historische Analyse ohne AWR a) Log Switch Heat Map b) Statspack und SQL Developer
    5. 5. © OPITZ CONSULTING GmbH 2016 Seite 6Oracle Performance-Analyse mit Bordmitteln 1 Analyse akuter Probleme
    6. 6. © OPITZ CONSULTING GmbH 2016 Seite 7Oracle Performance-Analyse mit Bordmitteln AMON – ein „top“ für die Oracle-DB  Fortlaufend entwickelt von Andrej Simon (Oracle Support)  Für fast alle Unixe/Linuxe verfügbar  Rein Text-basiert  Läuft daher in jedem Terminal  Ideal, wenn nur SSH-Zugriff auf DB-Server möglich ist  Berechnet regelmäßig differentielle Metriken, ähnlich „top“  Leichtgewichtig und schnell aufgerufen  https://sites.google.com/site/freetoolamon/  https://github.com/Rendanic/SQL-Zauberkasten
    7. 7. © OPITZ CONSULTING GmbH 2016 Seite 8Oracle Performance-Analyse mit Bordmitteln 1a V$SESSION_LONGOPS
    8. 8. © OPITZ CONSULTING GmbH 2016 Seite 9Oracle Performance-Analyse mit Bordmitteln V$SESSION_LONGOPS  Zeigt lange laufendes SQL und PL/SQL  Ab bestimmten Schwellwerten  PL/SQL: bei entsprechender Instrumentierung immer.  Nur Operationen, deren Dauer berechnet werden kann  Full Table Scans  Index (Fast) Full + Range Scans  Hash- und Merge Joins  leider keine Nested Loops  Nachteil bei OLTP
    9. 9. © OPITZ CONSULTING GmbH 2016 Seite 10Oracle Performance-Analyse mit Bordmitteln V$SESSION_LONGOPS im SQL Developer
    10. 10. © OPITZ CONSULTING GmbH 2016 Seite 11Oracle Performance-Analyse mit Bordmitteln 1b ASH für 60 Minuten kostenfrei
    11. 11. © OPITZ CONSULTING GmbH 2016 Seite 12Oracle Performance-Analyse mit Bordmitteln ASH für 60 Minuten kostenfrei  Es gibt Views auf Daten aus ASH, für die kein Diagnostics Pack gekauft werden muss:  V$WAITCLASSMETRIC_HISTORY  Wartezeiten nach Wait Class (Application, Concurrency, Network, …)  Durchschnitt über 15s und 60s, für eine Stunde historisiert  V$SYSMETRIC_HISTORY  System-Metriken (CPU, Executes, Parses, Commits, Reads, …)  Durchschnitt über 15s und 60s, für eine Stunde historisiert  Entspricht den Performance-Infos in EM – aber kostenfrei!
    12. 12. © OPITZ CONSULTING GmbH 2016 Seite 13Oracle Performance-Analyse mit Bordmitteln ASH für 60 Minuten kostenfrei (2) select * from ( with WC as( select distinct e.WAIT_CLASS, e.WAIT_CLASS_ID from v$event_name e ) select to_char( END_TIME, 'yyyy-mm-dd hh24:mi' ) time , wc.WAIT_CLASS , round( AVERAGE_WAITER_COUNT, 2 ) AVERAGE_WAITER_COUNT from GV$WAITCLASSMETRIC_HISTORY h , WC where h.WAIT_CLASS_ID = wc.WAIT_CLASS_ID and wc.WAIT_CLASS <> 'Idle' and h.INST_ID = ( select INST_ID from V$INSTANCE ) union all select to_char( END_TIME, 'yyyy-mm-dd hh24:mi' ) time , '_CPU' as WAIT_CLASS , round( sh.VALUE / 100, 2 ) AVERAGE_WAITER_COUNT from GV$SYSMETRIC_HISTORY sh where sh.METRIC_ID = 2075 -- "CPU Usage Per Sec" in csec/s and sh.INST_ID = ( select INST_ID from V$INSTANCE ) ) where rownum < 1000 order by TIME, WAIT_CLASS;
    13. 13. © OPITZ CONSULTING GmbH 2016 Seite 14Oracle Performance-Analyse mit Bordmitteln Gather Database Stats
    14. 14. © OPITZ CONSULTING GmbH 2016 Seite 15Oracle Performance-Analyse mit Bordmitteln 1c Extended SQL Trace
    15. 15. © OPITZ CONSULTING GmbH 2016 Seite 16Oracle Performance-Analyse mit Bordmitteln Extended SQL Trace SQL> ALTER SESSION SET EVENTS '10046 trace name context forever, level 8'; SQL> ALTER SESSION SET EVENTS '10046 trace name context off'; SQL> EXEC DBMS_SYSTEM.set_sql_trace_in_session(sid=>123, serial#=>1234, sql_trace=>TRUE); SQL> EXEC DBMS_SYSTEM.set_sql_trace_in_session(sid=>123, serial#=>1234, sql_trace=>FALSE); SQL> EXEC DBMS_SYSTEM.set_ev(si=>123, se=>1234, ev=>10046, le=>8, nm=>' '); SQL> EXEC DBMS_SYSTEM.set_ev(si=>123, se=>1234, ev=>10046, le=>0, nm=>' ');
    16. 16. © OPITZ CONSULTING GmbH 2016 Seite 17Oracle Performance-Analyse mit Bordmitteln Extended SQL Trace (2)  „Howto“ auf oracle-base.com  Trace File auswerten mit  Tkprof  SQL Developer  orasrp
    17. 17. © OPITZ CONSULTING GmbH 2016 Seite 18Oracle Performance-Analyse mit Bordmitteln Demo OraSRP
    18. 18. © OPITZ CONSULTING GmbH 2016 Seite 19Oracle Performance-Analyse mit Bordmitteln 2 Historische Analyse ohne AWR
    19. 19. © OPITZ CONSULTING GmbH 2016 Seite 20Oracle Performance-Analyse mit Bordmitteln Historische Analyse ohne AWR  ASH und AWR erfordern die Enterprise Edition + Diagnostics Pack  Lizenzpflichtig sind daher:  Fast alle DBA_HIST% - Views  ADDM  SQL Monitor   Performance-Funktionen von Cloud Control und DB Console  Vorsichtsmaßnahme nicht vergessen: control_management_pack_access = NONE  In SE bzw in EE ohne Diagnostics Pack also nicht nutzbar!
    20. 20. © OPITZ CONSULTING GmbH 2016 Seite 21Oracle Performance-Analyse mit Bordmitteln 2a Log Switch Heat Map
    21. 21. © OPITZ CONSULTING GmbH 2016 Seite 22Oracle Performance-Analyse mit Bordmitteln Log Switch Heat Map  Grundlage: v$log_history SELECT TO_CHAR(first_time,'YYYY-MM-DD HH24')||'h' t , COUNT(*) FROM v$log_history WHERE trunc(FIRST_TIME) >= trunc(sysdate - 31) GROUP BY TO_CHAR(first_time,'YYYY-MM-DD HH24');  …das geht aber schöner! 
    22. 22. © OPITZ CONSULTING GmbH 2016 Seite 23Oracle Performance-Analyse mit Bordmitteln Log Switch Frequency Map in TOAD  Database  Diagnose  Log Switch Frequency Map  Erfordert aber DBA-Modul
    23. 23. © OPITZ CONSULTING GmbH 2016 Seite 24Oracle Performance-Analyse mit Bordmitteln Log Switch Heat Map in SQL Developer
    24. 24. © OPITZ CONSULTING GmbH 2016 Seite 25Oracle Performance-Analyse mit Bordmitteln 2b STATSPACK
    25. 25. © OPITZ CONSULTING GmbH 2016 Seite 26Oracle Performance-Analyse mit Bordmitteln Statspack lebt!  Bordmittel seit Oracle 8  Vorläufer des AWR, basierend auf Schnappschüssen von Wait Events.  Ist auch in Oracle 12c immer noch verfügbar!  Anfängliche Startschwierigkeiten in 12c behoben.  Kleiner Bug in 12.1.0.2 bei einem unbekannten, aber nützlichen Feature (s.u.)  Größerer Bug: Idle Events werden in Top Events gelistet.  Kombiniert mit Oracle SQL Developer Reports sogar graphisch und kostenfrei.
    26. 26. © OPITZ CONSULTING GmbH 2016 Seite 27Oracle Performance-Analyse mit Bordmitteln STATSPACK 12c: Installation  Installation in 12c genauso wie bisher:  Tablespace für Schema PERFSTAT einrichten.  SQL> @spcreate  Snapshot-Job einrichten; Empfehlung: Um Ausführungspläne zu archivieren, höchsten Level einstellen (statspack.snap(7))  Löschjob einrichten (Aufruf von statspack.purge(<days>)).  Achtung bei RAC: Es wird ein Snapshot-Job pro Instance benötigt.  Skripte, um dies alles zu automatisieren, gibt es auf Github: https://github.com/Rendanic/SQL-Zauberkasten/tree/master/sql/statspack/spcreate
    27. 27. © OPITZ CONSULTING GmbH 2016 Seite 28Oracle Performance-Analyse mit Bordmitteln STATSPACK 12c: Reports  Wie bei AWR wird ein Bericht aus den Differenzen zweier Snapshots generiert.  $ORACLE_HOME/rdbms/admin/spreport
    28. 28. © OPITZ CONSULTING GmbH 2016 Seite 29Oracle Performance-Analyse mit Bordmitteln STATSPACK und DBMS_XPLAN  Historisierte Ausführungspläne können mit dem bekannten DBMS_XPLAN formatiert werden: select * from table(DBMS_XPLAN.DISPLAY( TABLE_NAME => 'perfstat.stats$sql_plan' , STATEMENT_ID => null , FORMAT => 'ALL -predicate -note' , FILTER_PREDS => 'plan_hash_value = '|| &phv ));
    29. 29. © OPITZ CONSULTING GmbH 2016 Seite 30Oracle Performance-Analyse mit Bordmitteln STATSPACK und DBMS_XPLAN (2)  Bug in 12.1: DBMS_XPLAN erwartet eine Spalte, die in der Statspack-Tabelle derzeit noch fehlt.  Workaround: Spalte (unsichtbar) manuell anlegen. ALTER TABLE perfstat.stats$sql_plan ADD timestamp INVISIBLE AS (cast(NULL AS DATE));
    30. 30. © OPITZ CONSULTING GmbH 2016 Seite 31Oracle Performance-Analyse mit Bordmitteln Statspack-Analyse mit SQL Developer Reports  Beispiel: Average Active Sessions (AAS)  Wesentlicher Indikator für Belastung des RDBMS.  Vergleichbar mit „Load“ in Unix/Linux top.  Guter Einstieg für ein Drill-Down nach Top Waits und Top SQL  Nicht in SQL Developer mitgeliefert; bei GitHub zu finden  http://tinyurl.com/sqldevReports  http://oraculix.com/2015/03/24/visualizing-statspack-average-active-sessions-in-sql- developer/
    31. 31. © OPITZ CONSULTING GmbH 2016 Seite 32Oracle Performance-Analyse mit Bordmitteln Problem: Mehr aktive Sessions als log. CPUs (hier: Hyperthreads)  Überlastung des Servers  Lange Antwortzeiten
    32. 32. © OPITZ CONSULTING GmbH 2016 Seite 33Oracle Performance-Analyse mit Bordmitteln Worauf haben die Sessions in diesem Zeitraum am längsten gewartet? Idle Events korrekt sortiert
    33. 33. © OPITZ CONSULTING GmbH 2016 Seite 34Oracle Performance-Analyse mit Bordmitteln
    34. 34. © OPITZ CONSULTING GmbH 2016 Seite 35Oracle Performance-Analyse mit Bordmitteln Fazit  Eine komfortable Performance-Analyse geht auch  Ohne teure Zusatzlizenzen  Ohne Tools von Drittherstellern  Statspack funktioniert auch noch in 12c und erlaubt eine fundierte Top-Down-Analyse.  Die Reports des SQL Developer sind auch für DBAs interessant!  Es gibt eine Menge freier Tools von Oracle und anderen  SQLT, sqld360, orasrp, …
    35. 35. © OPITZ CONSULTING GmbH 2016 Seite 37Oracle Performance-Analyse mit Bordmitteln Kontakt Uwe Küchler Managing Consultant OPITZ CONSULTING GmbH Kirchstr. 6 | 51647 Gummersbach Tel. +49 (6172) 662 60-1515 uwe.kuechler@opitz-consulting.com youtube.com/opitzconsulting @OC_WIRE slideshare.net/opitzconsulting xing.com/net/opitzconsulting
    36. 36. © OPITZ CONSULTING GmbH 2016 Seite 38Oracle Performance-Analyse mit Bordmitteln Links + Literatur Li 3 6.941
    37. 37. © OPITZ CONSULTING GmbH 2016 Seite 39Oracle Performance-Analyse mit Bordmitteln Links + Literatur  SQL Developer Performance Reports: https://github.com/oraculix/sql-developer-tools  ORASRP – Profiler für Extended SQL Trace Files: http://oracledba.ru/orasrp/  SQLT und SQLHC: Präsentation von der DOAG 2013  SQLd360, SQL diagnostics collection made faster  SQL_TRACE/Event 10046 Trace File Analyzer (trca): MOS Doc ID 224270.1  Trace File Analyzer (TFA): MOS Doc ID 1513912.1  Trace Assistant (trcasst): Database Net Services Admin Guide  Welche Views und APIs sind Lizenzpflichtig: http://docs.oracle.com/cd/E11882_01/license.112/e47877/options.htm#DBLIC165

    ×