Kostenlos aber effektiv: Performanceanalyse mit Statspack und SQL* Benedikt Nahlovsky. Performing Databases GmbH Mitterteich



Ähnliche Dokumente
Kostenlos aber effektiv: Performanceanalyse mit Statspack und SQL* Benedikt Nahlovsky. Performing Databases GmbH Mitterteich

Performance Tools. für alle Editionen

Oracle AWR und ASH Analyse und Interpretation

IT-Symposium Ralf Durben. Business Unit Datenbank. ORACLE Deutschland GmbH. 1


TOOLGESTÜTZTE ORACLE PERFORMANCEANALYSE AUS CONSULTANT-SICHT

Oracle Core für Einsteiger: Datenbank I/O

Oracle 9i Einführung Performance Tuning

Memory-Drilldown von der SGA über die PGA zum Database Buffer Advisor

Johannes Ahrends CarajanDB GmbH CarajanDB GmbH

Datenbanken Konsistenz und Mehrnutzerbetrieb III

Ein reales Testumfeld bereitstellen - basierend auf einer Produktionsdatenbank (ohne eine neue Kopie zu erstellen)

Dynamic Ressource Management

DOAG Demo Kino: Advisors, Monitoring Werkzeuge in der Datenbank Ulrike Schwinn Business Unit Database Oracle Deutschland B.V.

Oracle 10g Einführung

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Fragen zur GridVis MSSQL-Server

Skalierbarkeit von Oracle RAC

Entwicklung einer Informix- Administrationsdatenbank mit ERwin

Grid Control 10g im Praxiseinsatz

Oracle Core für Einsteiger: InMemory Column Store

Naxtron GmbH Schlosstalstrasse Winterthur. Subject. New Features Oracle 9i Architecture

Oracle GridControl Tuning Pack. best Open Systems Day April Unterföhring. Marco Kühn best Systeme GmbH

Oracle Datenbank Architektur nicht nur für Einsteiger. Martin Klier Klug GmbH integrierte Systeme, Teunz


MySQL Cluster und MySQL Proxy

Speicheroptimierung und DBMS Tuning. Daniel Nelle

MSSQL Server Fragen GridVis

Im Kapitel Resourc Manager werden die verschiedenen Möglichkeiten der Überwachung von Messwerten eines Server oder Benutzers erläutert.

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

Praktische Erfahrungen mit SPARC S7-2 Server

die wichtigsten Caches (SGA) sind on-the-fly änderbar.

Datenbanken und Oracle, Teil 2


IT-Symposium

Prozessarchitektur einer Oracle-Instanz

MySQL Replikation. Erkan Yanar linsenraum.de linsenraum.de

Ora Education GmbH. Lehrgang: Oracle Application Server 10g R3: Administration

Tuning einer CAD Datenbank Vorgehensweise und (Miss-) Erfolge

Well-Balanced. Performance Tuning

Hardware- und Softwareanforderungen für die Installation von California.pro

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

Darüber hinaus wird das Training dazu beitragen, das Verständnis für die neuen Möglichkeiten zu erlangen.

Oracle Datenbank Architektur - nicht nur für Einsteiger

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

ANALYSE UND VISUALISIERUNG VON STATSPACK UND AWR DATEN

Oracle 10g Einführung

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Kurs. Teil 7 UNDO-Management. Universität Hannover. Agenda. Einführung. Nutzung RBS Oracle 9i Einführung Performance Tuning.

Hardware- und Softwareanforderungen für die Installation von California.pro

HP IT-Symposium

Bei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren

Einleitung. SPFILE und INIT.ORA. Umgang mit SPFILE und INIT.ORA. Petra Knöbl


Datensicherheit und Hochverfügbarkeit

PostgreSQL Wartungsstrategien

Oracle Datenbank Tuning richtig gemacht und dabei viel Geld gespart

Ablösung von Control-M durch JobScheduler

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Datenbanken: Backup und Recovery

Oracle Real Application Clusters: Requirements

SQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL

SAP Memory Tuning. Erfahrungsbericht Fritz Egger GmbH & Co OG. Datenbanken sind unsere Welt

Oracle Multitenant Verwaltung von Pluggable Databases Handling und Besonderheiten

Oracle APEX Installer

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

Betroffene Produkte: Alle Versionen von Oracle Forms (3.0-10g, C/S und Web), Oracle Clinical, Oracle Developer Suite

ORA.LogMiner. Nach Bestelleingang erhalten Sie eine Rechnung mit ausgewiesener Mehrwertsteuer und Informationen über die Zahlungsweise.

Schnapp die Session Sessionhistorie mit Bordmitteln. DOAG Konferenz 2013 Jan Krüger TUI Infotec GmbH

Oracle Standard Edition Performance Tuning. Webinar Dierk Lenz 8. Februar 2013

1 Einführung Ziele und Zielgruppen Was erwartet Sie in diesem Buch Skripte und Test-Cases Danksagung...

MySQL Performance Tuning für Entwickler

IDS Lizenzierung für IDS und HDR. Primärserver IDS Lizenz HDR Lizenz

Oracle Enterprise Manager Cloud Control 12c: Installation von Ralf Durben, ORACLE Deutschland B.V. & Co. KG

Installation MySQL Replikationsserver

Hadoop Demo HDFS, Pig & Hive in Action. Oracle DWH Konferenz 2014 Carsten Herbe

Hochverfügbarkeit - wie geht das?

SolidQ Flex Services Walkthrough Part I

Agenda. Begrüßung und Einführung. ACT! 2011 Highlights und Features. Live-Demo. Systemvoraussetzungen / Gut zu wissen. Fragen und Antworten

IT-Symposium Oracle Grid Control. Grenzenloses Monitoring. Page

SEMINAR Modifikation für die Nutzung des Community Builders

1 Application Compatibility Toolkit (ACT) 5.6

FME Desktop. Data in Motion

Oracle Datenbank - Recovery

Windows Server 2012 R2 Essentials & Hyper-V

Technische Background Info und Trivadis Scripts

Oracle 9i Einführung Performance Tuning

TOP 10 Monitoring SQL Befehle

Standardsoftware. Prozessarchitektur. Prof. Dr. Bernhard Schiefer 3-1

Installation SQL- Server 2012 Single Node

105.3 SQL-Datenverwaltung

Oracle 11g Release 2: Änderungen unter der Haube. Dierk Lenz DOAG 2011 Konferenz und Ausstellung 16. November 2011

MySQL 101 Wie man einen MySQL-Server am besten absichert

Performance Tuning

Datenbanksystem. System Global Area. Hintergrundprozesse. Dr. Frank Haney 1

Housekeeping -2

Die Idee der Recovery Area: Sie enthält bei Beschädiging der Database Area alles, was für ein erfolgreiches Recovery gebraucht wird

Transkript:

Kostenlos aber effektiv: Performanceanalyse mit Statspack und SQL* Benedikt Nahlovsky Performing Databases GmbH Mitterteich 2

Referent Benedikt Nahlovsky Troubleshooter, Database integrator, Performance Firefighter Fachliche Schwerpunkte - Performanceoptimierung / Tuning - hochverfügbare Systeme - Cluster und Replikation Kontakt: benedikt.nahlovsky@performing-db.com Weblog: http://oradbn.wordpress.com 3

Unternehmen Spezialisten für Datenbanktechnik - Konzeptberatung und Vergabekompetenz - Architektur- und Systemplanung - Lizenzierung - Realisierung und Troubleshooting Kontakt - Performing Databases GmbH Wiesauer Straße 27 95666 Mitterteich - Web: http://www.performing-databases.com - Mail: info@performing-db.com - Twitter: @PerformingDB 4

Was ist Performance? Performance = Leistungserlebnis des Users Die Bewertung hängt von dem zu bewertenden System oder der einzelnen Komponente ab Performance ist mess- und vergleichbar 5

Oracle Statspack Kostenloses Tool zur Sammlung und Auswertung von Datenbankinformationen (seit Oracle 8i) (Performance-)Informationen werden über viele Bereiche der Oracle DB gesammelt Snapshots der V$VIEWS Auswertung über verschiedene Zeitintervalle möglich Seit Oracle 10g: AWR (Automatic Workload Repository) > kostenpflichtig (Enterprise Edition) 6

Statspack Kompatibilität nicht abwärtskompatibel Dokumentation: $ORACLE_HOME/rdbms/admin/spdoc.txt Database ---- Statspack Release ---- Release 12.1 11.1 10.2 10.1 9.2 9.0 8.1.7 8.1.6 -------- ---- ---- ---- ---- ---- ----- ----- ----- 12.1 Y - - - - - - - 11.1 - Y - - - - - - 10.2 - - Y - - - - - 10.1 - - - Y - - - - 9.2 - - - - Y - - - 9.0 - - - - - Y - - 8.1.7 - - - - - - Y - 8.1.6 - - - - - - - Y 7

Statspack Historie 8.1.6 > 8.1.7 Load Profile (executions / transactions per second) Execute to Parse % sppurge.sql > Purgen alter Snapshots 8

8.1.7 > 9.0 Lachtes und wait_time (cumulative spent waiting for the latch) Snap Level 6 keine Installation von Statspack in SYSTEM Tablespace 9

9.0 > 9.2 Summary Page Instance Report Module Information bei SQL s Top 5 Wait Events > Top 5 Timed Events 10

9.2 > 10.1 Report Intervall (Tage) Error Handling bei Reporterstellung SQL ordered by Cluster Wait Time (RAC - DB) SQL_ID in stats$sql* hinzugefügt 11

10.1 > 10.2 Host CPU + Memory Configuration Avg Waits für Top 5 Timed Events Cache / Shared Pool Größen (Anfang / Ende) - wobei das Ende nur gefüllt wird, wenn eine Änderung im Report Intervall statt fand 12

10.2 > 11.1 Platform Name DB Time, DB CPU Physical Memory wird in GB angezeigt DB Time, DB CPU in Load Profile hinzugefügt PGA Memory Advisor zeigt erwartete Zeit für die Verarbeitung der Daten 13

11.1 > 12.1 Idle Events SQL*Net Statspack Installation für Pluggable Databases Installation und Reporting im Root Container nicht supported (CDB$ROOT) 14

Statspack Installation Anlegen eines separaten PERFSTAT Tablespace Installation von Oracle Statspack SQL> @?/rdbms/admin/spcreate.sql > Passwort für PERFSTAT User eingeben > Default Tablespace > Temporary Tablespace 15

Snapshot Verbunden mit PERFSTAT Generieren eines Statspack Snapshot SQL> execute statspack.snap; PL/SQL procedure successfully completed. Elapsed: 00:00:01.18 Snapshot Level ändern (Default: 5) SQL> execute statspack.snap(i_snap_level=>7); 16

Snapshot Level 0: Ausführungsstatistiken, grundlegende Events, SGA-Daten 5: Top SQL 6: SQL Pläne und Plan-Nutzungsstatistiken 7: Segmentstatistiken, Locks, Buffer Busy Waits 10: Erweiterte Latching Statistiken (Child Latches) SQL> select * from stats$level_description; 17

Snapshot Job erstellen Datenbank Scheduler Job um Snapshot alle 10 Minuten zu erzeugen SQL> conn / as sysdba Connected. SQL> BEGIN sys.dbms_scheduler.create_job( job_name => '"PERFSTAT"."PERFSTAT_SNAP"', job_type => 'PLSQL_BLOCK', job_action => ' begin execute immediate (''Alter session set "_cursor_plan_unparse_enabled" = false''); statspack.snap(i_snap_level => 7, i_modify_parameter => ''false''); end;, repeat_interval => 'FREQ=MINUTELY; INTERVAL=10;', start_date => systimestamp at time zone 'Europe/Berlin', job_class => 'DEFAULT_JOB_CLASS', comments => 'Perfstat snapshot job', auto_drop => FALSE, enabled => TRUE); END; / 18

Useful Queries SQL> select name,snap_id,to_char(snap_time,'dd.mm.yyyy HH24:MI:SS')"Date/Time" from stats$snapshot,v$database where snap_time > sysdate -1 order by 3 desc; NAME SNAP_ID Date/Time --------- ---------- ------------------- ORAVM11 174 11.11.2014 21:26:12 ORAVM11 173 11.11.2014 21:16:12 ORAVM11 172 11.11.2014 21:06:12 ORAVM11 171 11.11.2014 20:56:12 ORAVM11 170 11.11.2014 20:46:12 ORAVM11 169 11.11.2014 20:36:12 ORAVM11 168 11.11.2014 20:26:12 ORAVM11 167 11.11.2014 20:16:12 19

Useful Queries SQL> select dbid,to_char(startup_time,'dd.mm.yyyy HH24:MI:SS')"Startup Time, instance_name, host_name from stats$database_instance where startup_time > sysdate - 5 order by startup_time; DBID Startup Time INSTANCE_NAME HOST_NAME ---- ------------------- ----------- ---------- 3111692151 10.11.2014 20:24:08 ORAVM11 oravm11gr2 3111692151 11.11.2014 10:03:15 ORAVM11 oravm11gr2 3111692151 11.11.2014 17:38:34 ORAVM11 oravm11gr2 20

Statspack Report Statspack Report generieren SQL> @?/rdbms/admin/spreport.sql Report Intervall wählen Listing all Completed Snapshots Instance DB Name Snap Id Snap Started Snap Level Comment ------------ ------------ --------- ----------------- ----- ORAVM11 ORAVM11 1 04 Nov 2014 18:06 5 2 04 Nov 2014 18:16 5 3 04 Nov 2014 18:26 5 Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enter value for begin_snap: 1 Begin Snapshot Id specified: 1 Enter value for end_snap: 3 21

Report STATSPACK report for Database DB Id Instance Inst Num Startup Time Release RAC ~~~~~~~~ ----------- ------------ -------- --------------- ----------- --- 3342991817 PERFDB 1 28-Oct-14 15:21 11.2.0.3.0 NO Host Name Platform CPUs Cores Sockets Memory (G) ~~~~ ---------------- ---------------------- ----- ----- ------- ------------ perfdbvm Linux x86 64-bit 12 6 1 31.5 22

Report Load Profile Per Second Per Transaction Per Exec Per Call ~~~~~~~~~~~~ ------------------ ----------------- ----------- ----------- DB time(s): 0.2 0.0 0.00 0.00 DB CPU(s): 0.2 0.0 0.00 0.00 Redo size: 152,213.9 9,602.6 Logical reads: 15,600.0 984.1 Block changes: 914.2 57.7 Physical reads: 0.7 0.0 Physical writes: 10.6 0.7 User calls: 549.4 34.7 Parses: 1.4 0.1 Hard parses: 0.0 0.0 W/A MB processed: 29.8 1.9 Logons: 0.1 0.0 Executes: 219.0 13.8 Rollbacks: 8.2 0.5 Transactions: 15.9 23

Report Instance Efficiency Indicators ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Buffer Nowait %: 100.00 Redo NoWait %: 100.00 Buffer Hit %: 100.00 Optimal W/A Exec %: 100.00 Library Hit %: 100.00 Soft Parse %: 100.00 Execute to Parse %: 99.35 Latch Hit %: 99.74 Parse CPU to Parse Elapsd %: 25.74 % Non-Parse CPU: 99.39 24

Report Top 5 Timed Events Avg %Total ~~~~~~~~~~~~~~~~~~ wait Call Event Waits Time (s) (ms) Time ----------------------------------------- ------------ ----------- ------ ------ CPU time 457 75.4 log file sync 27,728 53 2 8.7 log file parallel write 28,104 51 2 8.5 db file parallel write 4,240 13 3 2.2 control file sequential read 10,512 10 1 1.7 ------------------------------------------------------------- Host CPU (CPUs: 12 Cores: 6 Sockets: 1) ~~~~~~~~ Load Average Begin End User System Idle WIO WCPU ------- ------- ------- ------- ------- ------- -------- 0.14 0.09 12.36 2.85 84.20 0.00 25

SQL ordered by CPU SQL ordered by CPU DB/Inst: PERFDB/PERFDB Snaps: 166632-166638 -> Total DB CPU (s): 678 -> Captured SQL accounts for 63.0% of Total DB CPU -> SQL reported below exceeded 1.0% of Total DB CPU CPU CPU per Elapsd Old Time (s) Executions Exec (s) %Total Time (s) Buffer Gets Hash Value ---------- ------------ ---------- ------ ---------- --------------- ---------- 312.91 25,894 0.01 46.2 325.03 47,815,839 2208385654 Module: oracle@perfdbvm (TNS V1-V3) SELECT "A1"."DESCRIPTION","A1"."ONBUFFER","A1"."ONTHEWAY" FROM (SELECT MIN("A2"."DESCRIPTION") "DESCRIPTION",SUM("A2"."ONBUFFER ") "ONBUFFER",SUM("A2"."ONTHEWAY") "ONTHEWAY" FROM ( (SELECT MI N("A6"."DESCRIPTION") "DESCRIPTION",COUNT(*) "ONBUFFER",0 "ONTHE 26

SQL ordered by SQL ordered by CPU SQL ordered by Elapsed Time SQL ordered by Gets SQL ordered by Reads SQL ordered by Executions SQL ordered by Parse Calls SQL ordered by Sharable Memory 27

Purge Job erstellen Datenbank Scheduler Job für Purgen der alten Snapshots SQL> BEGIN sys.dbms_scheduler.create_job( job_name => '"PERFSTAT"."PERFSTAT_CLEANUP"', job_type => 'PLSQL_BLOCK', job_action => 'begin execute immediate ''delete from stats$snapshot where snap_time < sysdate -7''; commit; end;, repeat_interval => 'FREQ=DAILY;BYHOUR=22;BYMINUTE=0;BYSECOND=0', start_date => systimestamp at time zone 'Europe/Berlin', job_class => 'DEFAULT_JOB_CLASS', comments => 'Perfstat cleanup 5 days history', auto_drop => FALSE, enabled => TRUE); END; / 28

0800 - DBA 29

5 W - Fragen Welches Projekt? Welche Beschwerden? Welcher Zeitraum? Welche Auswirkungen? Wer ist der Ansprechpartner für Rückfragen? 30

Analyse Host Name Platform CPUs Cores Sockets Memory (G) ~~~~ ---------------- ---------------------- ----- ----- ------- ------------ oravm11gr2 Linux x86 64-bit 2 2 1 3.9 Snapshot Snap Id Snap Time Sessions Curs/Sess Comment ~~~~~~~~ ---------- ------------------ -------- --------- ------------------ Begin Snap: 42 05-Nov-14 19:16:12 34 1.2 End Snap: 43 05-Nov-14 19:26:12 35 1.2 Elapsed: 10.00 (mins) Av Act Sess: 0.9 DB time: 9.08 (mins) DB CPU: 0.02 (mins) 31

Analyse Top 5 Timed Events Avg %Total ~~~~~~~~~~~~~~~~~~ wait Call Event Waits Time (s) (ms) Time ----------------------------------------- ------------ ----------- ------ ------ enq: TX - row lock contention 1 543 ###### 99.3 CPU time 2.3 control file sequential read 1,018 1 1.1 db file parallel write 414 0 1.1 os thread startup 8 0 42.1 32

Lock Analyse SQL> select s1.username '@' s1.machine ' ( SID=' s1.sid ' ) is blocking 2 ' s2.username '@' s2.machine ' ( SID=' s2.sid ' ) ' AS blocking_status 3 from v$lock l1, v$session s1, 4 v$lock l2, v$session s2 5 where s1.sid=l1.sid and s2.sid=l2.sid 6 and l1.block=1 and l2.request > 0 7 and l1.id1 = l2.id1 8 and l2.id2 = l2.id2 9 order by s1.sid, s2.sid 10 / BLOCKING_STATUS --------------------------------------------------------------------------------- HR@oravm11gR2 ( SID=10 ) is blocking HR@oravm11gR2 ( SID=20 ) alter system kill session (sid, serial#) immediate; 33

Locks Locks (Sperren) verhindern, dass mehrere Benutzer zur gleichen Zeit die gleiche Zeile einer Tabelle ändern Innerhalb einer Transaktion können X Zeilen, sowie ganze Tabellen gesperrt werden Jeder Benutzer kann auch manuell eine Sperre auf Tabellen Ebene setzen 34

Live Demo 35

info@performing-db.com 36