Überwachung, Analysen und Tuning

Werbung
Überwachung, Analyse und Tuning
Reimar Lehmann
PC-Ware Business Solutions
Tel: 0341/2568000 mail: [email protected]
Themen






Tuning-Möglichkeiten
Oracle Diagnose- und Tuningwerkzeuge (bis 9i)
SGA
Oracle Optimizer
SQL-Tracing
I/O Contention
Tuning-Möglichkeiten
Komponente
verantwortlich
Perf. Steigerung
Design (Datenmodell +
SQL)
System/App.entwickler
>> 100%
Applikation
App.entw. /
App.Admin
>>100%
DB – Speicher(SGA)
DBA
< 60%
I/O
DBA (Netw.Admin)
< 30%
Zugriffskonflikte
DBA
<10%
OS-Tuning
Diagnose- und Tuningwerkzeuge

Alert.log:

Regelmässige Prüfung auf




Interne Fehler (ORA-600)
Überwachung Datenbankvorgänge
Nicht-Defaul-Initialisierungsparameter
Anfang und Ende von Checkpoints
(init.ora: LOG_CHECKPOINTS_TO_ALERT=TRUE)
 Deadlocks





Benutzer-Tracedateien
Dynamische PerformanceViews (V$-Views) und DataDict-Views
Skripte utlbstat.sql/utlestat.sql
Package (PL/SQL) STATSPACK (ab 8.1.6)
Oracle Enterprise Manager / DBA Studio
Dynamische PerformanceViews



Werden alle in V$fixed_table aufgelistet
Wichtigste Views:

V$DATABASE, V$INSTANCE:
Informationen über Instanz und DB

V$WAITSTAT:
Statistiken über Zugriffskonflikte

V$SYSTEM_EVENT: gesamten Waits für bestimmte Ereignisse (->
z.B.buffer_busy_waits

V$LIBRARYCACHE,V$SQLAREA: Verwendung von Statements im
Library-Cache

V$SYSSTAT: allg. Instanzstatistiken

V$FILESTAT: I/O-Vorgänge auf Dateien

V$WAITSTAT: Statistiken zu Block-Zugriffskonflikten

V$SESSTAT: Statistiken der Sessions einzelner Benutzer

V$SESSION_EVENT Waits für best. ereignisse auf Sessionebene
Überblick über Statistik-Views in V$STATNAME
Utilities UTLBSTAT und UTLESTAT (bis 8i)
 Sammlung von Performance-Daten für bestimmte Periode zwischen
Ausführung utlbstat und utlestat
 Generierung eines Berichtes
(report.txt)
 Anmeldung als SYSDBA
 utlestat.sql generiert Bericht (Default: report.txt im aktuellen Verzeichnis)
statspack (ab 8i)
 Installation: @%ORACLE_HOME%\rdbms\admin\spcreate.sql
 Statistiksammlung:
 EXECUTE statspack.snap;
Erstellung eines Snapshots
 @%ORACLE_HOME%\rdbms\admin\spauto.sql
Script zur Automatisierung von Snapshoterstellung (Default alle
Stunde)
 Als user perfstat/perfstat Skript ausführen zur Generierung eines
Reports (als Differenzmenge zweier Snapshots):
@%ORACLE_HOME%\rdbms\admin\spreport.sql
Statspack-Informationen










Vollständige Liste aller Wait-Ereignisse
Informationen zu derzeitig im Shared Pool befindlichen SQLAnweisungen
Statistiken zur Instance-Aktivität
Tablespace- und Datei-I/O
Buffer Pool Statistiken
Statistiken zu Rollbacksegmenten
Latch-aktivität
Dictionary Cache- und Library Cache-statistiken
SGA-Statistiken
Startup-Parameter-Werte aus init.ora
Themen
 Tuning-Möglichkeiten
 Oracle Diagnose- und Tuningwerkzeuge (bis 9i)
 SGA
 Oracle Optimizer
 SQL-Tracing
 I/O Contention
SGA - Shared Pool

Library-Cache (SQL und PL/SQL-Anweisungen):

Anweisungen sollten mehrfach genutzt werden

Anweisungen sollten nicht gleich überschrieben werden ->

Grosse und häufig benutzte PL/SQL-Objekte sollten im Cache
verbleiben;

Performanceoptimierung:




SHARED_POOL_RESERVED_SIZE setzen (nicht mehr als 50%)
SHARED_POOL_SIZE
Grosse PL/SQL-Objekte im Cache pinnen mit
DBMS_SHARED_POOL.KEEP
Init.ora-Parameter OPEN_CURSORS erhöhen;
CURSOR_SHARING=FORCE setzen
Dictionary Cache (V$ROWCACHE): Verhältnis der gets zu getsmisses
< 15%, ansonsten shared_pool_size erhöhen -> ABER abhängig von
Situation/Umgebung
SGA - Buffer Cache




Beeinflussung durch init.ora-parameter: DB_BLOCK_SIZE,
DB_BLOCK_BUFFERS, BUFFER_POOL_KEEP, BUFFER_POOL_ RECYCLE
Latch-Optimierung durch DB_BLOCK_LRU_LATCHES (8i)
(Default 1):

Misses in V$LATCH > 5%
Optimierung durch:

Buffer-Pool erhöhen

Mehrere Buffer-Pools verwenden

Kleine u. häufig verwendete Tabellen im Cache pinnen
Überwachung (Berichte von statspack o. utlb/estat; V$SYSSTAT): Cache-Hitratio (Tuning, wenn < 90% )
ABER situationsabhängig
Sortiervorgänge optimieren
 Sortiert wird bei:
 Index-Erstellung
 ORDER BY ; GROUP BY
 DISTINCT
 UNION
 SORT/MERGE-Joins
 ANALYZE
 SORT_AREA_SIZE entsprechend wählen (8i)
 Sortiervorgänge möglichst vermeiden
 Benutzer TEMPORARY TABLESPACE zuweisen
 Ab 9i PGA_AGGREGATE_TARGET und
WORKAREA_SIZE_POLICY=AUTO setzen
Themen
 Tuning-Möglichkeiten
 Oracle Diagnose- und Tuningwerkzeuge (bis 9i)
 SGA
 Oracle Optimizer
 SQL-Tracing
 I/O Contention
Optimizer
 Modi:
 Regelbasiert(Rule) RBO
 Verwendet feste Regeln; gesteuert über Syntax und Data-dictionary
 Ab 10g nicht mehr supported
 Kostenbasiert (Choose) CBO
 Ausführungspfad mit geringsten Kosten
 Statistikgesteuert -> Tabellen sollten Statistiken haben:

ANALYZE TABLE COMPUTE|ESTIMATE STATISTICS
 Kann auf Instanzebene
(optimizer_mode=choose|first_rows|all_rows|rule), auf Sessionebene
(Alter session set optimizer_mode=) und auf Statement-Ebene
angegeben werden (z.B. Hint /*+ CHOOSE */)
Themen
 Tuning-Möglichkeiten
 Oracle Diagnose- und Tuningwerkzeuge (bis 9i)
 SGA
 Oracle Optimizer
 SQL-Tracing
 I/O Contention
SQL-Trace






Einschalten auf Instance-Ebene: SQL_TRACE=TRUE
Session-Ebene: ALTER SESSION SET SQL_TRACE=TRUE
Execute DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION (session_id,
serial_id, true) -> session_id und serial_id aus V$SESSION
Trc-Datei im user_dump_dest
SQL*Plus-Befehl: SET AUTOTRACE [ON|OFF|TRACEONLY]
[EXPLAIN|STATISTICS]
Statistiken sammelbar mit package DBMS_STATS
Parameter TIMED_STATISTICS=TRUE setzen (8i/9i)
oder STATISTICS_LEVEL=TYPICAL|ALL (ab9i)
SQL-Trace und tkprof



„Formatierung“ der Trc-Datei im user_dump_dest
Kommandozeilen-Tool tkprof zum Ausgeben der Datei in lesbarem
Format:
tkprof tracefile.trc output.txt [options]
Beispiel:
TKPROF dlsun12_jane_fg_sqlplus_007.trc OUTPUTA.PRF
EXPLAIN=scott/tiger TABLE=scott.temp_plan_table_a
INSERT=STOREA.SQL SYS=NO
Indizes
 Überwachung mit ANALYZE INDEX name VALIDATE STRUCTURE (9i)
 SELECT name, (DEL_LF_ROWS_LEN/LF_ROWS_LEN) * 100 AS
Nichtnutzbar From index_stats
 Wenn Wert > 20%:
ALTER INDEX name REBUILD
Themen
 Tuning-Möglichkeiten
 Oracle Diagnose- und Tuningwerkzeuge (bis 9i)
 SGA
 Oracle Optimizer
 SQL-Tracing
 I/O Contention
I/O Contention
 Asynchrone Schreiboperationen durch Unterprozesse des DBWR (nur 1
DBWR konf.) durch Parameter DBWR_IO_SLAVES (int)
oder
 Mehrere DBWn-Prozesse -> DB_WRITER_PROCESSES
z.B. auf Systemen mit mehr CPUs
(Beobachtung von V$SYSTEM_EVENT.TOTAL_WAITS von EVENT ‚free
buffer waits‘
 REDOLogs auf schnellste Platte
 Problematik: Checkpoint-Queue: geringer Wert für
FAST_START_MTTR_TARGET (unter 8i FAST_START_IO_TARGET)
mehr Schreibvorgänge durch DBWR
Links




http://www.oracle.com
http://technet.oracle.com
http://metalink.oracle.com
http://www.oraperf.com
Herunterladen