Dipl.-Inform. Obaydah Moallim DOAG Regionaltreffen Hannover Einstieg in Performance Analysen 15.02.2005 Dipl.-Inform. Obaydah Moallim
Agenda: I. Vorwort II. Wie fange ich an zu tunen? - Ein Beispiel aus der realen Welt II. Wie fange ich an zu tunen? III. Performance-Analysen - Welche Tools bekomme ich kostenlos mit der Datenbank dazu? - TKPROF - STATSPACK - UTLBSTAT/UTLESTAT
IV. Auswertung der Performance-Reports - Reportsbeispiele - YAPP - OraPerf V. Links
Wie gehe ich beim Performance-Tuning vor? Wo fange ich an? Wie gehe ich weiter?
Immer einfach anfangen!!! Keep things simple!!!
Sind die Datenbankkonfigurationen/-Parameter immer noch aktuell? Wird oft vernachlässigt! Man denkt oft daran, wenn es kracht!
Sind die ‚alltäglichen‘ Arbeiten immer ordentlich durchgeführt worden?! Was sind diese? Welche Vorteile bringen sie mir? ANALYSE, INDEX REBUILD
Gibt es in der Datenbank Indexe, die nicht mehr benutzt werden? Wieso ist das so wichtig? Wie kriege ich raus, welche Indexe nicht mehr benutzt werden?
Nicht mehr benutzte Indexe erkennen: Seit Oracle9i ALTER INDEX <INDEXNAME> MONITORING USAGE; ALTER INDEX <INDEXNAME> NOMONITORING USAGE;
V$OBJECT_USAGE INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING
Starten des Monitoring: ALTER TABLE SCOTT.EMP MONITORING USAGE; Status überprüfen: SQL> select * from V$OBJECT_USAGE; INDEX_NAME TABLE_NAME MON USED START_MONITORING END_MONITORING --------------- ---------------- --- --- ------------------- -------------- EMPIDX2 EMP YES NO 04/17/2003 15:20:03
(3) Die Anwendung einige Zeit laufen lassen. Status erneut überprüfen: (4) SQL> select * from V$OBJECT_USAGE; INDEX_NAME TABLE_NAME MON USED START_MONITORING END_MONITORING --------------- ---------------- --- --- ------------------- -------------- EMPIDX2 EMP YES YES 04/17/2003 15:20:03
Monitoring ausschalten: (5) ALTER TABLE SCOTT.EMP NOMONITORING USAGE; Status überprüfen: SQL> select * from V$OBJECT_USAGE; INDEX_NAME TABLE_NAME MON USE START_MONITORING END_MONITORING --------------- ---------------- --- --- ------------------- ------------ EMPIDX2 EMP YES YES 04/17/2003 15:20:03 04/17/2003 35:30:03
Performance-Analysen Beim Performance-Tuning muss eine wichtige Tatsache berücksichtigt werden: Performance-Tuning heißt analysieren, tunen und anschließend wieder analysieren und wieder tunen! Es gibt einfach kein Kochbuch für Performance- Tuning!
Zur Performance-Analyse stehen ein paar Methoden zur Verfügung: TKPROF STATSPACK UTLBSTAT/UTLESTAT YAPP
TKPROF konvertiert Oracle Trace-Files in eine lesbarere Form. Voraussetzungen: PLAN_TABLE @ORACLE_HOME/rdbms/admin/utlxplan.sql TIMED_STATISTICS=TRUE ALTER SESSION SET SQL_TRACE = TRUE .. Select ... ALTER SESSION SET SQL_TRACE = FALSE
Trace-File in USER_DUMP_DEST Auswerten mit: TKPROF <trace-file> <output-file> explain=user/password@service
STATSPACK Seit Oracle 8.1.6 Snapshots der Systemstatistiken Report über den Zeitraum zwischen zwei Snapshots
Dokumentation Installation $ORACLE_HOME/rdbms/admin/spdoc.txt $ORACLE_HOME/rdbms/admin/spcreate.sql User PERFSTAT mit den notwendigen Schema- Objekten und dem STATSPACK-Package.
Snapshots automatisieren durch: Snapshots mit: SQL> exec Statspack.Snap Snapshots automatisieren durch: DB-Job über DBMS_JOB erzeugen mit Hilfe $ORACLE_HOME/rdbms/admin/spauto.sql Report generieren mit: $ORACLE_HOME/rdbms/admin/spreport.sql
Vorgänger von Statspack UTLBSTAT/UTLESTST Vorgänger von Statspack Erster Snapshot mit: UTLBSTAT Abschließender Snapshot und (Text-) Report mit: UTLESTAT
STATSPACK VS. UTLBSTAT/UTLESTAT unterstützt OPS/RAC nicht nicht alle interessanten Statistiken werden gesammelt und ausgewertet nur Instance-Statistiken keine hinterlegten Snapshots in der Datenbank UTLBSTAT/UTLESTAT betrachtet nur die mit einem COMMIT abgeschlossen Transaktionen, als Transaktion Transaktionen = ‚user commits’
Wichtige Informationen, die beim UTLBSTAT/UTLESTAT fehlen: Für SQL-Statements: Buffer gets Disk reads Pars calls Executes Detailisierte latch Statistiken
STATSPACK Viel besser als UTLBSTAT/UTLESTAT. Transaktion ist eine Prozesskette, die mit ROLLBACK oder COMMIT endet. Die Anzahl der Transaktionen ist gleich ‚user commits’+’user rollbacks’. Wichtig: Der Vergleich zwischen Staspack und UTLBSTAT/UTLESTAT zeigt Unterschiede in den ‚Raten’ pro Transaktion.
Der generierte Report ist ausführlicher als report Der generierte Report ist ausführlicher als report.txt, ist aber genau so schwer zu lesen OraPerf www.oraperf.com
YAPP YAPP: Yet Another Performance Profiling Method Von Anjo Kolak Anstelle von ‚Rates‘ z.B. buffer cache hit ratio responce time = service time + wait time Verwendet die Ergebnisse vom STATSPACK Report
OraPerf Interpretiert die Performance-Reports und macht sie lesbarer Kostenlose Anmeldung Kein Software-Download notwendig STATSPACK-Report UTLBSTAT/UTLESTAT-Report Oracle8 bis Oracle10g
Links www.oracle-base.com www.adp-gmbh.ch/ora www.dbasupport.com www.ss46.com www.orafaq.com www.orapub.com/papers Ansonsten: technet.oracle.com metalink.oracle.com