· PDF fileReport einzelner SQL Statements über hash_value ... (kurz AWR) eingesetzt. Per...

Post on 17-Mar-2018

230 views 6 download

Transcript of · PDF fileReport einzelner SQL Statements über hash_value ... (kurz AWR) eingesetzt. Per...

www.informatik-aktuell.de

Angelika Gallwitz Statistische Auswertungen in Oracle mit

Statspack und AWR 1 Mittwoch, 16. Dezember 2015

DBA Datenbankadministrator

Seit 1984 in der IT tätig

Seit 1987 mit Oracle Datenbanken

Als Entwickler und Datenbankadministrator

Angelika Gallwitz

Statistische Auswertungen in Oracle mit Statspack und AWR 2

Mittwoch, 16. Dezember 2015

1. Einleitung

2. Oracle 12c Neuerungen

3. Systemvorraussetzungen

4. Perfstat Schema einrichten, Statspack Reports

5. ADDM und AWR Architektur

6. ADDM Ablauf

7. AWR Reports

8. Leitfaden zur Auswertung

9. Massnahmen I/O Durchsatz Messung Calibration

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 3 Mittwoch, 16. Dezember 2015

Die Automatischen Features der Performance Diagnose in der Oracle Datenbank 12c.

Statspack-Reports bzw. AWR Reports werden herangezogen, um Performance Engpässe zu erkennen und Maßnahmen zu ergreifen. Wie erzeuge und interpretiere ich einen Statistik Report. Wie verändere ich Snap Level und Threshold.

Im AWR Repository werden aktuelle und historischen Performance Statistiken abgespeichert.

Der (ADDM) durchläuft ein Set vordefinierter Kriterien, nach denen die aktuelle Performance der Datenbank analysiert wird .

Nachdem ein Problem identifiziert und analysiert worden ist, hilft der ADDM selbst Probleme zu beheben

Mit Statspack ADDM-, ASH- und AWR-Reports können Probleme und Statistiken sofort oder nachträglich analysiert werden.

Der ADDM analysiert Performance Probleme direkt nach dem Auftreten des Events.

ADDM sollte von DBAs zuerst benutzt werden, wenn ein Performance Problem bemerkt wird.

Es wird anhand der Wait-Events eine Zuordnung zu den Problembereichen vorgenommen und Empfehlungen zu Tuning Maßnahmen gegeben

4

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR Mittwoch, 16. Dezember 2015

Neue Idle Events in den Reports: LogMiner, PQ, SQL*Net, Capture Reply

In der Performance Analyse und Diagnose durch den "Real Time ADDM".

SQL Monitor-,ASH-, ADDM und AWR – Reports zeigen jetzt Statistiken von „In-Memory“ Operationen

AWR Report hat neue Sektionen - In-Memory Segments Statistics – IO Statistik.

Der ADDM kann in unterschiedlichen Connection Modi gefahren werden.

Der „Real-Time ADDM“ mit dem Emergency Feature hilft die Ursachen und Lösungen zu finden, wenn die Datenbank hängt.

Performance Hub Active Report

PGA_AGGREGATE_LIMIT kann jetzt gesetzt werden

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 5

ADDM und AWR sind standardmäßig eingeschaltet und werden gesteuert über den Parameter

Control_management_pack_access:

timed_statistics = true

statistics_level = [typical|all] /* ausschalten mit „BASIC“

Control_management_pack_access=diagnostic/diagnostic+tuning /* ausschalten mit None

Systemstatistiken müssen vorhanden sein:

dbms_stats.gather_system_stats(gathering_mode=>'start');

Nach 30 Minuten

dbms_stats.gather_system_stats(gather_mode=>'stop');

Für I/O Statistiken z.B. average read time benötigen Sie Ihre Hardwarespezifischen Antwortzeiten normale Werte liegen zw. 5000 u. 20000 Microsekunden

Execute dbms_advisor.set_default_task_parameter(‚ADDM‘, ‚DBIO_EXPECTED‘, 8000);

Iostat –d 5

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 6

SQL> SELECT statistics_name, activation_level, Session_settable, session_status, statistics_view_name FROM v$statistics_level ORDER BY 1

STATISTICS_NAME ACTIVAT SES SESSION_ STATISTICS_VIEW_NAME

---------------------------------------------------------------- ------- --- -------- --------------------------

OLAP row load time precision TYPICAL YES ENABLED

Automatic DBOP Monitoring TYPICAL YES ENABLED V$SQL_MONITOR

Active Session History TYPICAL NO ENABLED V$ACTIVE_SESSION_HISTORY

Adaptive Thresholds Enabled TYPICAL NO ENABLED

Automated Maintenance Tasks TYPICAL NO ENABLED

Bind Data Capture TYPICAL NO ENABLED V$SQL_BIND_CAPTURE

Buffer Cache Advice TYPICAL NO ENABLED V$DB_CACHE_ADVICE

Global Cache Statistics TYPICAL NO ENABLED

Longops Statistics TYPICAL NO ENABLED V$SESSION_LONGOPS

MTTR Advice TYPICAL NO ENABLED V$MTTR_TARGET_ADVICE

Modification Monitoring TYPICAL NO ENABLED

PGA Advice TYPICAL NO ENABLED V$PGA_TARGET_ADVICE

Plan Execution Sampling TYPICAL YES ENABLED V$ACTIVE_SESSION_HISTORY

Plan Execution Statistics ALL YES ENABLED V$SQL_PLAN_STATISTICS

SQL Monitoring TYPICAL YES ENABLED V$SQL_MONITORING

Segment Level Statistics TYPICAL NO ENABLED V$SEGSTAT

Shared Pool Advice TYPICAL NO ENABLED V$SHARED_POOL_ADVICE

Streams Pool Advice TYPICAL NO ENABLED V$STREAMS_POOL_ADVICE

Threshold-based Alerts TYPICAL NO ENABLED

Time Model Events TYPICAL YES ENABLED V$SESS_TIME_MODEL

Timed OS Statistics ALL YES ENABLED

Timed Statistics TYPICAL YES ENABLED

Ultrafast Latch Statistics TYPICAL NO ENABLED

Undo Advisor, Alerts and Fast Ramp up TYPICAL NO ENABLED V$UNDOSTAT

V$IOSTAT_* statistics TYPICAL NO ENABLED

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 7

SQL> select pname, pval1 from sys.aux_stats$ ;

PNAME PVAL1

------------------------------ ----------

STATUS

DSTART

DSTOP

FLAGS 1

CPUSPEEDNW 3161,90476

IOSEEKTIM 10

IOTFRSPEED 4096

SREADTIM ,865

MREADTIM ,161

CPUSPEED 1115

MBRC 0

MAXTHR 1865474048

SLAVETHR 479232

Execute dbms_advisor.set_default_task_parameter(‚ADDM‘, ‚DBIO_EXPECTED‘, 8650);

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 8

Seit Oracle 9.0

sreadtim - single block read time mreadtim - multiblock read time mbrc - multi-block read count cpuspeed - CPU speed

Seit Oracle 9.2

maxthr - maximum I/O throughput slavethr -average slave throughput

Seit Oracle 10g cpuspeedNW - Represents noworkload CPU speed ioseektim - I/O seek time equals seek time + latency time + operating system overhead time. iotfrspeed - I/O transfer speed is the rate at which an Oracle database can read data in a single read

request

How to Set Different System Statistics for the Instance Doc Id 149560.1

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 9

• Seit Oracle 8.1.7 bis heute unterstützt

• Sinnvoll einsetzbar, wenn keine Diagnostik Pack Lizenz vorhanden ist

• Ist vergleichbar mit dem AWR Report

• Speichert die Performance Statistik Daten permanent in Oracle Tabellen im Schema des Users perfstat

• Die gesammelten Daten können über den Statspack-Report analysiert werden

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 10 Mittwoch, 16. Dezember 2015

• Schema perfstat anlegen • ?/rdbms/admin/spcreate.sql

• Automatisierung

• /rdbms/admin/spauto.sql

• Report erstellen

• ?/rdbms/admin/spreport.sql

• Perfstat-User löschen

• ?/rdbms/admin/spdrop.sql

• Perfstat-Daten löschen

• ?/rdbms/admin/spdrop/sppurge.sql

• Readme

• ?/rdbms/admin/spdoc.txt

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 11 Mittwoch, 16. Dezember 2015

• $ORACLE_HOME/rdbms/admin/sprepins.sql

Genereller Instance Healthcheck

• $ORACLE_HOME/rdbms/admin/sprepsql.sql

Report einzelner SQL Statements über hash_value Bsp:

• SQL> connect perfstat/perfstat

• SQL> execute statspack.snap

• SQL> execute statspack.snap SQL> select snap_id,old_hash_value,hash_value from perfstat.stats$sql_summary order by hash_value;

• $ORACLE_HOME/rdbms/admin/sprsqins.sql

Abfrage dbid ,instance, hash_value

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 12 Mittwoch, 16. Dezember 2015

In Tabelle perfstat.stats$statspack_parameter

select * from perfstat.stats$level_description

• Levels: 0, 5 ,6 ,7 ,10

• Levels = 5 ist der Default Wert

• Level >= 7 beinhaltet zus. Segmentstatistiken

SQL> connect perfstat SQL> execute statspack.snap - (i_snap_level=>7, i_modify_parameter=>'true');

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 13 Mittwoch, 16. Dezember 2015

Kommt mit der Datenbank seit Oracle 10

Liegt im Schema SYS

Im Tablespace SYSAUX

Ist in jeder Oracle Edition enthalten(SE, EE)

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 14 Mittwoch, 16. Dezember 2015

Snap_level 1 statistics_level = typical

Snap_level 2 statistics_level = all

beinhaltet zusätzlich OS Statistiken

control_management_pack_access = diagnostic oder tuning+diagnostic

TIMED_STATISTICS = TRUE

ash_enable = [true|false]

awr_restrict_mode = [true|false]

db_cache_advice = [on|off]

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 15 Mittwoch, 16. Dezember 2015

Statspack AWR

Auch für Standard Edition ohne zusätzliche Lizenz

Snap level 1-10

Es muß ein Job eingerichtet werden, der regelmäßig Statistiken sammelt

Es muß ein Job eingerichtet werden, der die gesammelten Statistiken löschen

Statistiken können adhoc gesammelt werden

SQL> connect perfstat

SQL> execute statspack.snap

Benötigt Diagnostic Pack

Snap Level 1 oder 2 ADDM sammelt automatisch

Statistiken 1 x jede Stunde, in 11g werden diese 8 Tage aufbewahrt

Statistiken können adhoc

gesammelt werden

SQL> connect sys / as sysdba SQL> BEGIN dbms_workload_repository.create_snapshot(); END;

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 16 Mittwoch, 16. Dezember 2015

ADDM

Selbst-Tuning

Komponente

Selbst-Tuning

Komponente

Interne Clients

SGA

In Memory Statistik-Sammlung

SGA

Repository der

AWR u. ADDM

Snapshots

MMON Prozess

V$ DBA_ WR.$

Externe Clients OEM SQLPlus

User-Background Prozesse

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 17

Automatic Database Diagnostic Monitor, läuft direkt nach jedem AWR Snapshot

Dabei wird im Hintergrund eine eigene Statistiksammlung, das Automatic Workload Repository (kurz AWR) eingesetzt.

Per Default erzeugt Oracle 11g einmal stündlich ein Statistik-Snapshot der Datenbankauslastung

Diese Snapshots werden per Default 8 Tage aufbewahrt

18

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR Mittwoch, 16. Dezember 2015

1. Komponenten Überblick

2. Ziel der ADDM Analyse

3. Problemtypen des ADDM

4. Der "Real Time ADDM„

5. ADDM Modi

6. ADDM Views

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 19

Datenbank Zeit reduzieren

Wartezeit reduzieren

Durchsatz Erhöhung

Ohne Resourcenänderung

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 20

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 21

ADDM

Analyse

CPU

Bottlenecks

High-load

SQL

Statements

RAC global

cache

interconnect,

Wartezeit

Concurrency

Gleichzeitig

keit

Hot objects

und Top

SQLs

Memory

Strukturen

I/O

Durchsatz

High-load

PL/SQL

Applikation

Datenbank

Parameter

Diagnostic Connection

◦ Real Time

◦ Emergency

Normal Connection

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 22

Emergency Monitoring“ und „Spot ADDM“„

◦ Unterstützt bei der Ursachenforschung:

Datenbank hängt Login nicht mehr möglich

◦ Schlägt Lösungen vor ohne Neustart der Datenbank.

◦ Die Analyse Informationen stammen in Echtzeit aus der SGA:

Blockierende Sessions, Deadlocks und andere Hänger Shared pool connection, Object Locks , Top Aktivitäten und andere Ausnahmesituationen

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 23

Datenbank langsam oder hängt

Anmeldungist möglich

Emergency Monitoring

Normale Connection

View • ASH data • Hang data

Starte Analyse • Hang Analysis Data • I/O Metriken • Host Metriken

View • Analyse Ergebnis • Empfehlung • Hang Data • Top Activity Snapshot

Empfehlungen folgen oder Datenbank Instanz

runterfahren SR an Oracle?

Blocker session?

Kill session

Andere blockers?

System ok?

Ende

Emergency analysis?

Real-Time ADDM

Yes

Yes No

No

No

Yes

Yes

No

In Anlehnung an Oracle Dokumentation

No

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 24

1. Trigger

2. Trigger Control

3. Analyse- MODE

4. Diagnose- MODE

5. Real Time ADDM Report

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 25

AWR Tabellen gibt es in 3 verschiedenen Bereichen

◦ Metadata (WRM$ …)

◦ Historische Daten (WRH$ …)

◦ AWR Tabellen der Advisory Funktionen (WRI$ …)

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 26 Mittwoch, 16. Dezember 2015

AW$AWREPORT AWRRPT_TEXT_TYPE_TABLE DBMS_FEATURE_AWR

AWRRPT_HTML_TYPE_TABLE DBA_HIST_SNAPSHOT DBMS_WORKLOAD_REPOSITORY

AWRRPT_INSTANCE_LIST_TYPE DBMS_AWR_REPORT_LAYOUT

Ändern mit dem DBMS_WORKLOAD_REPOSITORY

DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT

DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 22, high_snap_id => 32, dbid => 3310949047 )

Änderung des Defaults auf 18 Tage Aufbewahrung und 30 Minuten Interval

DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention => 43200, interval => 30, topnsql => 100, dbid => 3310949047);

Setze ich das Interval auf 0 so wird kein Snapshot erzeugt

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 27 Mittwoch, 16. Dezember 2015

Oracle empfiehlt, in Zeiten guter Performance eine Baseline als Referenz zu ziehen, damit diese in Zeiten schlechter Performance herangezogen werden kann DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE (start_snap_id => 270, end_snap_id => 280, baseline_name => 'peak baseline', dbid => 3310949047, expiration => 30);

Wie groß wird das AWR

?/rdbms/admin/awrinfo.sql

AWR-Daten extrahieren

?/rdbms/admin/awrextr.sql

Import der AWR-Daten in eine andere DATENBANK

?/rdbms/admin/awrload.sql

Angelika Gallwitz

Statistische Auswertungen in Oracle mit Statspack und AWR 28

Mittwoch, 16. Dezember 2015

?/rdbms/admin/awrrpt.sql – Nonrac

?/rdbms/admin/awrqrpt.sql - RAC

?/rdbms//admin/awrrpti.sql -- RAC 1 Inst

?/rdbms/admin/awrsqrpt.sql – 1 Sqlstat

?/rdbms/awrddrpt.sql – Vergleich

Angelika Gallwitz

Statistische Auswertungen in Oracle mit Statspack und AWR 29

Mittwoch, 16. Dezember 2015

awrddrpi.sql Reports on differences between snapshot pairs

awrddrpt.sql Defaults the dbid and instance number

awrextr.sql Extracts AWR data into a .DMP file

awrgdrpi.sql AWR global compare period report

awrgdrpt.sql AWR global difference report

awrgrpt.sql AWR global report

awrgrpti.sql AWR RAC global report

awrinfo.sql Output general AWR information

awrload.sql Supports loading DUMP file data into AWR

awrrpt.sql Defaults to current instance

awrrpti.sql Select dbid and instance

awrsqrpi.sql Difference report between two snapshots sql Statements

awrsqrpt.sql Same as awrsqrpi but defaults dbid & instance

awrupd12.sql Updates AWR data to version 12c.

Nur die AWR Daten werden geändert, die vorher mit aus einer früheren Version

geladen wurden oder aus einer anderen DB

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 30

Vorbereitung:

◦ Kenne dein System mit normaler Performance

◦ Mache ein Konzept für Performancemessung und Tuning

◦ Habe “normale” AWR/Statspack Snapshots als Referenz

◦ Baselines verschiedener Loads

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 31 Mittwoch, 16. Dezember 2015

1. Statistiken sammeln von

Betriebssystem

Datenbank

Anwendung

2. Durchsuche die Daten nach Performance-Problemen

3. Erstelle eine Liste der Probleme und Fehler

4. Bilde ein Konzept oder Modell, was passiert ist, anhand der gesammelten Daten

5. Implementiere anhand der Analyse die Änderungen und monitore diese Änderungen

6. Überprüfe ob die Performanceziele erreicht wurden

7. Wiederhole die Schritte

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 32 Mittwoch, 16. Dezember 2015

Kann generiert werden im EM Express oder mit folgendem Script:

SQL> @$ORACLE_HOME/rdbms/admin/perfhubrpt.sql

Summary Tab

Activity Tab

Workload Tab

RAC Tab

Monitored SQL Tab

ADDM Tab

The Current ADDM Findings tab real-time analysis für letzte 5 Minuten

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 33

Kann generiert werden im EM Express oder mit folgendem Script:

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 34

Der Einstieg in die Analyse erfolgt über die DB Time und die Top 5 Timed Wait Events

In Oracle 12c Top 10 Timed Wait Events

1. Report Header mit DB Time anschauen

2. Top-5-Wait-Events

3. Für weitere Analsyse in den Abschnitt gehen, aus dem die Top-5-WaitEvents stammen

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 36 Mittwoch, 16. Dezember 2015

Snap Id Snap Time Sessions Curs/Sess

--------- ------------------- -------- ---------

Begin Snap: 13751 18-Jun-10 10:00:42 1,360 137.1

End Snap: 13752 18-Jun-10 11:00:11 1,613 162.9

Elapsed: 59.48 (mins)

DB Time: 863.08 (mins)

DB Time ist die Gesamtzeit aller user Prozesse, die entweder active

arbeiten oder active warten in ihrer Datenbankanfrage .

Average Active Sessions = Total DB time / Wall Clock Elapsed Time

DB Time beinhaltet nur foreground sessions incl. CPU time, IO time und wait time, excludes idle wait time

In diesem Beispiel haben wir 1360 Sessions in der Sämple Periode

Active sessions werden 1 mal pro Sekunde gesammelt

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 37 Mittwoch, 16. Dezember 2015

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 38

SQL> @?/rdbms/admin/addmrpt.sql ADDM Reports ansehen DBMS_ADDM.GET_REPORT function: DBMS_ADDM.GET_REPORT ( task_name IN VARCHAR2 RETURN CLOB); SET LONG 1000000 PAGESIZE 0; SELECT DBMS_ADDM.GET_REPORT(:tname) FROM DUAL; Select DBMS_ADDM.REAL_TIME_ADDM_REPORT() from dual; REAL_TIME_ADDM_REPORT -------------------------------------------------------- <report db_version="12.1.0.1.0" inst_count="1" cpu_cores="4" hyperthread="N" con

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Oracle 12c Automatic Performance

Diagnostics 39

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Oracle 12c Automatic Performance

Diagnostics 40

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Oracle 12c Automatic Performance

Diagnostics 41

3) Load Profile: Einheit seconds und Transactions per second.

Wichtig um das Verhalten der Instanz zu verstehen

Sollte mit dem Baseline Report verglichen werden

Zum Vergleich mit dem expected load auf der Maschine das Delta zur schlechten Performance Zeit

Load Profile Per Second Per Transaction --------------- ---------------

Redo size: 851,303.02 7,729.46

Logical reads: 146,512.51 1,330.27

Block changes: 5,413.90 49.16

Physical reads: 2,296.44 20.85

Physical writes: 141.63 1.29

User calls: 637.38 5.79

Parses: 403.32 3.66

Hard parses: 11.29 0.10

Sorts: 793.12 7.20

Logons: 3.15 0.03

Executes: 8,291.92 75.29

Transactions: 110.14

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 42 Mittwoch, 16. Dezember 2015

4)Instance Efficiency Percentages (Target 100%): dient als Indikator

buffer cache hit, library cache hit,parses etc.

diese Werte können hoch oder niedrig sein in Abhängigkeit der Datenbank Aktivität, muß kein Performance Problem darstellen

. % Blocks changed per Read: 3.70 Recursive Call %: 95.81

Rollback per transaction %: 0.73 Rows per Sort: 27.22

Instance Efficiency Percentages (Target 100%)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Buffer Nowait %: 99.87 Redo NoWait %: 99.98

Buffer Hit %: 98.49 In-memory Sort %: 100.00

Library Hit %: 99.65 Soft Parse %: 97.20

Execute to Parse %: 95.14 Latch Hit %: 99.16

Parse CPU to Parse Elapsd %: 3.59 % Non-Parse CPU: 99.85

Guter Wert

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 44 Mittwoch, 16. Dezember 2015

6) Top 5 Timed Events bis Statspack Oracle 12.1.0.2 :

Wichtigstes Kapitel, zeigt welches Wait Event zu wieviel % von der DB Zeit gesehen wurde

Top 5 Timed Events Avg %Total ~~~~~~~~~~~~~~~~~~ wait Call

Event Waits Time (s) (ms) Time Wait

Class

---------------------------------------- ----------- ------ ------ ----------

db file sequential read 226,973,391 1,086,316 5 35.6 User I/O

CPU time 680,549 22.3

db file scattered read 27,397,666 81,533 3 2.7 User I/O

read by other session 36,385,854 77,520 2 2.5 User I/O

latch: cache buffers chains 2,453,426 21,920 9 0.7 Concurrenc

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 46 Mittwoch, 16. Dezember 2015

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 47

Hier wird der I/O Durchsatz für die Datenbank gezeigt .Die Information im Load Profile Bereich des AWR Reports sind nicht nachvollziehbare Werte enthalten. Oder untersuchen Sie den Activity Stats Bereich mit der Sum Total für physical reads und writes (und redo).

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 48

2) Cache Sizes : Größe der SGA Region nachdem AMM sie geändert hat

Diese Information kann mit den original init.ora Parametern am Ende des AWR Reports vgl werden. Wird mehr shared pool verwendet als buffer cache

Prüfe Bind Variablen ja oder nein

Cache Sizes

Begin End ---------- ----------

Buffer Cache: 10,000M 10,000M

Std Block Size: 16K

Shared Pool Size: 3,008M 3,008

Log Buffer: 276,464K

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 49 Mittwoch, 16. Dezember 2015

Memory sizes wie DB cache size and shared pool size können auf Probleme hinweisen

Zum Beispiel

◦ shared pool > DB cache size

◦ => Weist auf fehlende Bind Variablen hin

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 50 Mittwoch, 16. Dezember 2015

5) Shared Pool Statistics:

Wie ändert sich der shared pool während der snapshot Periode., 91-93% des Memory wird vom Shared Pool benutzt.

% SQL with executions>1:Wieviel % der SQL werden mehr als 1 Mal benutzt

Shared Pool Statistics Begin End ------ ------

Memory Usage %: 93.75 91.61

% SQL with executions>1: 98.17 78.35

% Memory for SQL w/exec>1: 95.95 85.08

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 51 Mittwoch, 16. Dezember 2015

1. OLTP

• Viele kleine Transaktionen, oft hat 1 Query nur 1 Zeile als

• Ergebnis deshalb Effiziente SQL Abfragen

• Read to Write 5:1 bis 10:1 Häufige Benutzung selektiver Indexe => Augenmerk auf Redo/Undo und sequential read waits

2. Batch oder Data Warehouse

• Viele Reads DISK I/O Lastig Wenig Writes (außer Temp wegen Sorts) Wenig große Transactions => Augenmerk auf sort/workarea und scattered read

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 52 Mittwoch, 16. Dezember 2015

Event Maßnahme

------------------------------------------------------

db file scattered read v$sqlarea, v$filestat full table scans

db file sequential read v$sqlarea, v$filestat , Indexhints

buffer busy waits block contention v$session

free buffer waits write time os statistik prüfen

log buffer space redo buffer allocation retries in v$sysstat

log file sync number of transactions(commit+rollbacks) v$sysstat

enqueue waits v$enqueue_stat locks prüfen

library cache,pin,lock v$sqlarea sql statements mit hoher anzahl von parse calls child cursors(version_count)

Angelika Gallwitz

Statistische Auswertungen in Oracle mit Statspack und AWR 53

Mittwoch, 16. Dezember 2015

db file sequential read

Der Server Prozess wartet auf diesen Event nach einer

singleblock I/O Operation

Tritt auf während index unique oder range scans, table access by rowid , etc

Dieser Event muß nicht unbedingt ein Bottleneck sein, Indexe werden gelesen ebenso table blocks

Jedoch als Maßnahme kann man die SQL Statements prüfen , ob z.B. unnötige „INDEX“ Hints vergeben wurden

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 55 Mittwoch, 16. Dezember 2015

db file scattered read

Wartezeiten im Multiblock Bereich entstehen bei Full table

scan operationen auf Tabellen oder Fast Full Scan Zugriffen auf Indices

( init.ora Parameter db_file_multiblock_read_count reduziert I/O Operationen) kann aber auch full tablescans erzwingen

Bsp. db block ist 8k db_file_multiblock_read_count =8 daraus folgt ein single multiblock I/O ist 64K groß dieser Wert ist abhängig vom Operating System und Storage

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 56 Mittwoch, 16. Dezember 2015

Read By Other Session Wait Event [ID 732891.1]

War früher buffer busy wait

Versuchter Zugriff auf einen buffer im buffer cache , aber der buffer wird gerade von disk von einem anderen user gelesen, es muß gewartet werden bis der Lesezugriff beendet ist, bis man wieder darauf zugreifen kann

SELECT p1 "file#", p2 "block#", p3 "class#" FROM v$session_wait WHERE event = 'read by other session';

Wird hier derselbe block wiederholt angezeigt , so haben wir vermutlich

Einen "hot" block oder object. SELECT relative_fno, owner, segment_name, segment_type FROM dba_extents WHERE file_id = &file AND &block BETWEEN block_id AND block_id + blocks - 1;

Siehe auch NOTE:34405.1 - WAITEVENT: "buffer busy waits" Reference Note

Angelika Gallwitz

Statistische Auswertungen in Oracle mit Statspack und AWR 57

Mittwoch, 16. Dezember 2015

Könnte auf einen Hot block hinweisen

Grund für diesen Latch kann sein

1. Sequence Number Generation Code um eine Zeile in einer Tabelle upzudaten

2. Index Leaf Chasing = Viele Prozesse suchen denselben Index - Applikationsproblem?

Metalink ID 163424.1 how to find the hot block

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 58 Mittwoch, 16. Dezember 2015

9) Wait Class Welche wait class weist auf Contention hin. Welcher Bereich sollte untersucht werden network, concurrency, cluster, i/o Application, configuration etc.

Wait Class DB/Inst: OLTP/OLTP Snaps: 13694-13753

-> s - second

-> cs - centisecond - 100th of a second

-> ms - millisecond - 1000th of a second

-> us - microsecond - 1000000th of a second

-> ordered by wait time desc, waits desc

Avg

%Time Total Wait wait Waits

Wait Class Waits -outs Time (s) (ms) /txn

-------------------- ---------------- ------ ---------------- ------- ---------

User I/O 301,011,884 .0 1,259,029 4 12.9

Concurrency 8,384,040 5.2 51,800 6 0.4

System I/O 16,813,457 .0 45,012 3 0.7

Configuration 326,248 11.7 17,891 55 0.0

Administrative 2,028,810 .0 9,351 5 0.1

Commit 1,541,707 .0 8,518 6 0.1

Application 523,352 .3 7,745 15 0.0

Other 4,374,811 3.3 6,482 1 0.2

Network 137,115,426 .0 2,030 0 5.9

-------------------------------------------------------------

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 59 Mittwoch, 16. Dezember 2015

Haupt wait events in der Datenbank. foreground and background database wait events as well as time model, operating system, service, and wait classes statistics. > s - second -> cs - centisecond - 100th of a second-> ms - millisecond - 1000th of a second

-> us - microsecond - 1000000th of a second-> ordered by wait time desc, waits desc (idle events last)

Avg

%Time Total Wait wait Waits

Event Waits -outs Time (s) (ms) /txn

---------------------------- -------------- ------ ----------- ------- ---------

db file sequential read 226,973,391 .0 1,086,316 5 9.7

db file scattered read 27,397,666 .0 81,533 3 1.2

read by other session 36,385,854 .0 77,520 2 1.6

latch: cache buffers chains 2,453,426 .0 21,920 9 0.1

log file parallel write 12,792,937 .0 21,448 2 0.5

log file switch (checkpoint 44,546 19.5 16,044 360 0.0

RMAN backup & recovery I/O 317,245 .0 13,387 42 0.0

buffer busy waits 3,959,062 .1 12,573 3 0.2

Backup: sbtwrite2 2,026,139 .0 8,996 4 0.1

log file sync 1,541,707 .0 8,518 6 0.1

direct path write temp 1,377,867 .0 2,708 2 0.1

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 60 Mittwoch, 16. Dezember 2015

Statspack AWR Beispiel

Reads und Writes beinhalten den größten Teil der Total

database time

Erhöhe RAM: durch Erhöhung der db_cache_size eine

Reduktion des disk I/O

Tune SQL to reduce disk I/O

Faster disk I/O sub-system

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 61 Mittwoch, 16. Dezember 2015

• SQL Statistics: SQL ordered by Elapsed Time

SQL ordered by CPU Time

SQL ordered by Gets

SQL ordered by Reads

SQL ordered by Executions

SQL ordered by Parse Calls

SQL ordered by Sharable Memory

SQL ordered by Version Count

Complete List of SQL Text kommen dieselben Statements im Top Bereich vor, prüfen ob

Statement Tuning nötig ist.

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 62 Mittwoch, 16. Dezember 2015

Um die Kalibrierung mit dem Database Resource Manager nutzen zu können, müssen verschiedene Vorrausetzungen eingehalten werden:

1. eingesetzte Datenbankversion >=11.1

2. aufrufender Benutzer hat SYSDBA-Privileg

3. asynchrones I/O ist aktiviert (DISC_ASYNCH_IO=TRUE und

4. FILESYSTEMIO_OPTIONS=SETALL)

5. zum Zeitpunkt der Calibration geringe Last auf der Datenbank

Die Datenbank muss zumindest um eine 10er Potenz größer sein wie der CACHE im Storage bzw. Infrastruktur (zB: IBM SVC,...)

SAS Disken: 150-250 IOPS, 100-200 MBPS, 4-6ms Latency

SATA Disken: 50-150 IOPS, 70-150 MBPS, 8-12ms Latency

SSD: 30.000 - 150.000 IOPS, 250-1200 MBPS, <1ms Latency

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 63

Seit Oracle 11g gibt es im Database Resource Manager die I/O Calibration Utility.

Damit können die Höchstwerte für IOPS und MB/sec ermittelt werden.

DBMS_RESOURCE_MANAGER.CALIBRATE_IO procedure

SET SERVEROUTPUT ON

DECLARE

lat INTEGER;

iops INTEGER;

mbps INTEGER;

BEGIN

-- DBMS_RESOURCE_MANAGER.CALIBRATE_IO (<DISKS>, <MAX_LATENCY>, iops, mbps, lat);

DBMS_RESOURCE_MANAGER.CALIBRATE_IO (60, 20, iops, mbps, lat); DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops); DBMS_OUTPUT.PUT_LINE ('latency = ' || lat); dbms_output.put_line('max_mbps = ' || mbps);

end; /

select * from V$IO_CALIBRATION_STATUS ;

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 64

START_TIME END_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY

DISKS

---------------------------- ---------------------------- ---------- ---------- ---------- ---------- ----------

10-DEZ-015 12:55:13 10-DEZ-015 13:23:28 2445 125 134 21 60

START_TIME END_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY

DISKS

---------------------------- ---------------------------- ---------- ---------- ---------- ---------- ----------

10-DEZ-015 13:52:41 10-DEZ-015 14:23:14 837 319 181 11 60

START_TIME END_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY

DISKS

---------------------------- ---------------------------- ---------- ---------- ---------- ---------- ----------

10-DEZ-015 14:30:19 10-DEZ-015 14:57:18 3498 343 136 19 60

START_TIME END_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY

DISKS

---------------------------- ---------------------------- ---------- ---------- ---------- ---------- ----------

10-DEZ-015 15:22:38 10-DEZ-015 15:36:43 1714 760 152 18 1

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 65

Metalink

Segment Statistiks id 762526,1

AWR Performance Statisics ID 1359094.1

Der Oracle DBA Hanser Verlag

OCP 11G Oracle Pub

Mittwoch, 16. Dezember 2015

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 66

68

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR Mittwoch, 16. Dezember 2015

Telefon: +49 172 205 8483

angelika@gallwitz-it.de

www.gallwitz-it.de

Angelika Gallwitz Statistische Auswertungen in

Oracle mit Statspack und AWR 69 Mittwoch, 16. Dezember 2015