© 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
© 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
© 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
© 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
© OPITZ CONSULTING GmbH 2016 Seite 6Oracle Performance-Analyse mit Bordmitteln
1 Analyse akuter Probleme
© 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
© OPITZ CONSULTING GmbH 2016 Seite 8Oracle Performance-Analyse mit Bordmitteln
1a V$SESSION_LONGOPS
© 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
© OPITZ CONSULTING GmbH 2016 Seite 10Oracle Performance-Analyse mit Bordmitteln
V$SESSION_LONGOPS im SQL Developer
© OPITZ CONSULTING GmbH 2016 Seite 11Oracle Performance-Analyse mit Bordmitteln
1b ASH für 60 Minuten kostenfrei
© 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!
© 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;
© OPITZ CONSULTING GmbH 2016 Seite 14Oracle Performance-Analyse mit Bordmitteln
Gather Database Stats
© OPITZ CONSULTING GmbH 2016 Seite 15Oracle Performance-Analyse mit Bordmitteln
1c Extended SQL Trace
© 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=>' ');
© 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
© OPITZ CONSULTING GmbH 2016 Seite 18Oracle Performance-Analyse mit Bordmitteln
Demo OraSRP
© OPITZ CONSULTING GmbH 2016 Seite 19Oracle Performance-Analyse mit Bordmitteln
2 Historische Analyse ohne AWR
© 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!
© OPITZ CONSULTING GmbH 2016 Seite 21Oracle Performance-Analyse mit Bordmitteln
2a Log Switch Heat Map
© 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! 
© 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
© OPITZ CONSULTING GmbH 2016 Seite 24Oracle Performance-Analyse mit Bordmitteln
Log Switch Heat Map in SQL Developer
© OPITZ CONSULTING GmbH 2016 Seite 25Oracle Performance-Analyse mit Bordmitteln
2b STATSPACK
© 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.
© 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
© 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
© 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
));
© 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));
© 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/
© OPITZ CONSULTING GmbH 2016 Seite 32Oracle Performance-Analyse mit Bordmitteln
Problem: Mehr aktive
Sessions als log. CPUs
(hier: Hyperthreads)
 Überlastung des Servers
 Lange Antwortzeiten
© 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
© OPITZ CONSULTING GmbH 2016 Seite 34Oracle Performance-Analyse mit Bordmitteln
© 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, …
© 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
© OPITZ CONSULTING GmbH 2016 Seite 38Oracle Performance-Analyse mit Bordmitteln
Links + Literatur
Li
3
6.941
© 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

Performance-Analyse mit Bordmitteln

  • 1.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 2016 Seite 6Oracle Performance-Analyse mit Bordmitteln 1 Analyse akuter Probleme
  • 6.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 2016 Seite 8Oracle Performance-Analyse mit Bordmitteln 1a V$SESSION_LONGOPS
  • 8.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 2016 Seite 10Oracle Performance-Analyse mit Bordmitteln V$SESSION_LONGOPS im SQL Developer
  • 10.
    © OPITZ CONSULTINGGmbH 2016 Seite 11Oracle Performance-Analyse mit Bordmitteln 1b ASH für 60 Minuten kostenfrei
  • 11.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 2016 Seite 14Oracle Performance-Analyse mit Bordmitteln Gather Database Stats
  • 14.
    © OPITZ CONSULTINGGmbH 2016 Seite 15Oracle Performance-Analyse mit Bordmitteln 1c Extended SQL Trace
  • 15.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 2016 Seite 18Oracle Performance-Analyse mit Bordmitteln Demo OraSRP
  • 18.
    © OPITZ CONSULTINGGmbH 2016 Seite 19Oracle Performance-Analyse mit Bordmitteln 2 Historische Analyse ohne AWR
  • 19.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 2016 Seite 21Oracle Performance-Analyse mit Bordmitteln 2a Log Switch Heat Map
  • 21.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 2016 Seite 23Oracle Performance-Analyse mit Bordmitteln Log Switch Frequency Map in TOAD  Database  Diagnose  Log Switch Frequency Map  Erfordert aber DBA-Modul
  • 23.
    © OPITZ CONSULTINGGmbH 2016 Seite 24Oracle Performance-Analyse mit Bordmitteln Log Switch Heat Map in SQL Developer
  • 24.
    © OPITZ CONSULTINGGmbH 2016 Seite 25Oracle Performance-Analyse mit Bordmitteln 2b STATSPACK
  • 25.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 2016 Seite 32Oracle Performance-Analyse mit Bordmitteln Problem: Mehr aktive Sessions als log. CPUs (hier: Hyperthreads)  Überlastung des Servers  Lange Antwortzeiten
  • 32.
    © OPITZ CONSULTINGGmbH 2016 Seite 33Oracle Performance-Analyse mit Bordmitteln Worauf haben die Sessions in diesem Zeitraum am längsten gewartet? Idle Events korrekt sortiert
  • 33.
    © OPITZ CONSULTINGGmbH 2016 Seite 34Oracle Performance-Analyse mit Bordmitteln
  • 34.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 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.
    © OPITZ CONSULTINGGmbH 2016 Seite 38Oracle Performance-Analyse mit Bordmitteln Links + Literatur Li 3 6.941
  • 37.
    © OPITZ CONSULTINGGmbH 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

Hinweis der Redaktion

  • #29 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…
  • #30 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…
  • #31 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…