SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG

 
WEITER LESEN
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
SQLTXplain
Helfer zur Performance Analyse

Präsentiert von Stefan Seck
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
Logicalis Deutschland

                        Niederlassungen in          Über

                        Berlin, Düsseldorf,
                        Frankfurt, Köln,            330
                        München & Stuttgart         Mitarbeiter

                                                    ISO 27001
                        Über

                        930                         Zertifizierung
                        Kunden aus allen Branchen

2    © Logicalis GmbH
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
Partnerschaft Logicalis & Oracle

                                       • Seit über 20 Jahren Oracle Partner
                                       • Umsatzstärkster Partner bei Oracle in Deutschland
                                       • Zertifizierter Oracle Exadata und ZDLRA
                                         Installation & Configuration Partner
                                       • Exadata-Testmaschine für Exadata und ZDLRA
                                         POCs, auch im Kunden-RZ möglich
                                       • Eigene Cloud-Credits für Oracle IaaS & PaaS
                                         POCs
                                       • Managed Services Provider für Oracle Database &
                                         Oracle Engineered Systems sowie Oracle IaaS und
                                         PaaS Cloud-Umgebungen
                                       • Lizenzberatung durch unser zertifiziertes LMS Team

3
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
Agenda

    1. Vorgehensmodell
    2. SQLTXPLAIN
    3. Fazit

4      © Logicalis GmbH
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
Vorgehensmodell
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
Vorgehensmodell

6    © Logicalis GmbH
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
Problem definieren

                         Und sag ja nicht
                                                       Was ist das
                        "Die Datenbank ist
                            langsam!"                  Problem?

                             Ja nee,         "Die Datenbank ist langsam!"
                            is' klar…

7    © Logicalis GmbH
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
Problem definieren

    • WAS ist SEIT WANN WIE langsam?

    •   WAS: Welcher Prozess oder welche Statements?
    •   SEIT WANN: Gab es Änderungen am System?
    •   WIE: Klare Angaben in Sekunden, Minuten oder Stunden?
    • Gegenfragen stellen!

                                                   Problem       Ziele       Daten      Daten       Problem
                                                  definieren   definieren   sammeln   analysieren    lösen

8       © Logicalis GmbH
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
Problem definieren
                                   Client-Hardware                Netzwerk

                                     Webserver / App-Server

                                                                               Interconnect
                        Client-Konfiguration
                                                     Firewall
                        Client-Anwendung

                                                         Internet-Verbindung                  I/O

9    © Logicalis GmbH
SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
Ziele definieren

     Was soll erreicht werden?
     § So schnell wie vorher

      §    Wie schnell war es denn vorher und wann war vorher?

     Wie kann das Ziel erreicht werden?
     § Ist das Problem reproduzierbar?

     § Gibt es eine Test-Umgebung?

     § Kann man die Datenbank durchstarten?

     § Parameter ändern?                                          Problem       Ziele       Daten      Daten       Problem
                                                                 definieren   definieren   sammeln   analysieren    lösen
     § Welche Tools sind vorhanden?

     § Können die Statements geändert werden?

10        © Logicalis GmbH
Daten sammeln
           Die Datenbank ist langsam   Ein Prozess / SQL ist langsam

           Server-Auslastung           Statements

           I/O-Last                    Objekte

           Netzwerk-Belastung          Statistiken

           Server-Parameter            Ausführungspläne

           Datenbank-Parameter

           Architektur

11    © Logicalis GmbH
Daten sammeln

     •       Statspack Reports
         •      Benötigt keine Diagnostic Pack Lizenz
         •      Muss schon vorher installiert sein und Daten sammeln

     •       AWR-Reports
         •      Benötigt Diagnostic Pack Lizenz
         •      Sammelt automatisch Daten

     •       SQL-Trace / tkprof
                                                                   Problem       Ziele       Daten      Daten       Problem
                                                                  definieren   definieren   sammeln   analysieren    lösen
     •       3rd Party Tools
     •       SQLDB360
     •       SQLT

12           © Logicalis GmbH
Problem lösen – der falsche Ansatz

     • Ungefragt Underscore-Parameter verwenden

     • Immer mehr Indices erstellen (à v$object_usage!)

     • Indices permanent reorganisieren

     • Neue Feature ungetestet implementieren

     • Intensive Nutzung von Hints

     • Alle Maßnahmen auf einmal …

13     © Logicalis GmbH
Problem lösen

     • Ruhe bewahren!

     • Eventuelle Änderungen zurücknehmen

     • Statement umschreiben / Prozess ändern

     • Speicherzuteilung ändern (SGA / PGA / Log-Buffer)

     • Statistiken anpassen, Histogramme gezielt einsetzen

     • Batchläufe verschieben
                                                  Problem       Ziele       Daten      Daten       Problem
     • Index anlegen, ändern oder löschen        definieren   definieren   sammeln   analysieren    lösen
     • Optimizer-Parameter anpassen

14     © Logicalis GmbH
Problem vermeiden

     1. Datenbank kennen

     2. Datenbank beobachten

     3. Housekeeping

15     © Logicalis GmbH
Tuning Ziel erreicht?

     • Problem wurde definiert

     • Ziel wurde definiert

     • Ursache wurde gefunden

     • Wurde das Ziel erreicht?
      •      Ja:             Feierabend
      •      Nein:           Die nächsten Folien weiter betrachten

16        © Logicalis GmbH
SQLTXplain
SQLT – was ist das?

     • Entwickelt von Carlos Sierra

     • MOS 215187.1

     • Kostenlos für alle Editionen

     • Besteht aus 2 Bereichen
      •      Clientdateien
      •      DB-Repository

     • Geschrieben in PL/SQL nutzt ein SQL Statement und produziert ein ZIP File

19        © Logicalis GmbH
SQLT Installation - v12.2.180725

     • Installation mit ausschließlich mit sys
                  SQL> @sqcreate.sql

                  BEGIN

                  *

                  ERROR at line 1:

                  ORA-20100: SQLT packages creation failed. Connect as SYS, not as STEFAN

                  ORA-06512: at line 3

     •   sys wird anschließend nicht mehr benötigt
     • Aufruf von SQLTXPLAIN idealerweise mit Application User

20       © Logicalis GmbH
SQLT Installation - v12.2.180725

     Ein Aufruf: sqcreate.sql
        SQL> @sqcreate.sql
        Optional Connect Identifier (ie: @PROD): @SSE18D
        Password for user SQLTXPLAIN:
        Default tablespace [UNKNOWN]: SQLTXPLAIN
        Temporary tablespace [UNKNOWN]: TEMP
        Main application user of SQLT: QTUNE
        Oracle Pack license [T]:
        ...

        SQCREATE completed. Installation completed successfully.

21      © Logicalis GmbH
SQLT Installation - v12.2.180725
                         Objekte SQLTXPLAIN        Anzahl
                         TABLE                      215
                         INDEX                      242
                         LOB                        110
                         SYNONYM                    17
                         SEQUENCE                   12
                         Table Partition            32
                         Procedure                   1
                         Objekte SQLTXADMIN        Anzahl
                         SYNONYM                    247
                         VIEW                       105
                         PACKAGE u. Package Body    17
                         TYPE                        6

22    © Logicalis GmbH
SQLT – Zusätzliche User

     Weitere User einrichten

        grant SQLT_USER_ROLE to ;
     Rechte

        SELECT_CATALOG_ROLE
     Verzeichnisse (DB-Server und/oder Client)

23      © Logicalis GmbH
SQLT - Lizenzfragen

     • Diagnostic / Tuning-Pack-Auswahl (auch nachträglich)
         "T" if you have license for Diagnostic and Tuning
         "D" if you have license only for Oracle Diagnostic
         "N" if you do not have these two licenses

     •   select sqltxplain.sqlt$a.get_pack_access from dual;

24       © Logicalis GmbH
SQLT - Lizenzfragen

     • Ändern

       exec sqltxadmin.sqlt$a.enable_tuning_pack_access;

       exec sqltxadmin.sqlt$a.enable_diagnostic_pack_access;

       exec sqltxadmin.sqlt$a.set_param('sql_tuning_advisor', 'N');

       exec sqltxadmin.sqlt$a.set_param('sql_monitoring', 'N');

       exec sqltxadmin.sqlt$a.set_param('sql_tuning_set', 'N');

       exec sqltxadmin.sqlt$a.set_param('automatic_workload_repository', 'N');

25     © Logicalis GmbH
SQLT - Methoden

     • sqltxtract.sql
      •      wird mit SQL_ID oder HASH_VALUE ausgeführt
      •      Informationen aus Memory oder AWR
      •      @run/sqltxtract f995z9antmhxn

     • sqltexecute.sql
      •      führt ein übergebenes SQL aus
      •      @run/sqltxecute.sql input/sample/script2.sql

     • sqltxtrxec.sql
      •      Kombination aus den beiden o. g.

26        © Logicalis GmbH
SQLT - Methoden

     • sqltxplain.sql
      •      führt ein übergebenes SQL aus
      •      entspricht explain plan
      •      @run/sqltxplain.sql input/sample/script2.sql

     • sqltxtrsby.sql
      •      wird auf Primärdb ausgeführt mit db_link zur Standby
      •      Information aus Memory oder AWR auf Standby
      •      @run/sqltxtrsby f995z9antmhxn

     • sqltcompare.sql
      •      Vergleich zweier Ausführungspläne aus schon analysierten statement_ids
      •      @run/sqltcompare.sql 37826 58469

27        © Logicalis GmbH
SQLT - Extract

28    © Logicalis GmbH
SQLT - Readme Output

29    © Logicalis GmbH
SQLT Testcase

     Wird bei jeder Auführung automatisch erstellt
     Zip File auf ein Testsystem kopieren.
     xpress.sh / xpress.sql aufrufen
     Testen:
     § Optimizer parameters

     § SQL hints

     § Optimizer versions

     § Structure of the SQL

     § Adding or removing indexes

     § System statistics

     § Object Statistics

30      © Logicalis GmbH
SQLT - Testcase

31    © Logicalis GmbH
SQLT - Main Report

32    © Logicalis GmbH
SQLT – Health Check

     • Läuft ohne Installation in der DB

     • Bei SQTXPLAIN mitgeliefert oder von MOS

     • Funktioniert ab Oracle 10g (Oracle 9i wird nicht unterstützt)

     • SQLHC nutzt ausschließlich Daten aus dem Memory
       der Instanz
     • SQLHC kann als SYS, DBA oder als User, der Zugriff auf Data Dictionary Views hat,
       ausgeführt werden.
     • @sqlthc.sql        D|T|N 7p1u57bknwpwy

33     © Logicalis GmbH
SQLT – Health Check

34    © Logicalis GmbH
SQLT Health Check Report

35    © Logicalis GmbH
SQLT Health Check Report

36    © Logicalis GmbH
SQLT - Aufräumen

     cat sqlt_s62565_purge.sql
     REM Purges statement_id 62565 from local SQLT repository. Just execute
     "@sqlt_s62565_purge.sql" from sqlplus.
     SPO sqlt_s62565_purge.log;
     SET SERVEROUT ON;
     EXEC SQLTXADMIN.sqlt$a.purge_repository(62565, 62565);
     SET SERVEROUT OFF;
     SPO OFF;

37     © Logicalis GmbH
Fazit
Are there any robust silver bullets for SQL Tuning?

     • Null

     • Nil

     • Zero

     • No

     • Nope

     • Nada!

                Quelle: Carlos Sierra,
                          Using SQLTXPLAIN to Diagnose SQL Statements Performing Poorly

39     © Logicalis GmbH
Fazit

     • Tool zur Analyse von SQL Statements

     • Liefert wertvolle Statistiken

     • Ermöglicht verschiedene Szenarien und Parameter zu testen

     • Ersetzt nicht das eigenständige Denken

     • Es lohnt sich ein Blick auf SQLDB360 von Mauro Pagano
      •     https://mauro-pagano.com/2018/06/11/introducing-sqldb360-merging-edb360-and-sqld360-while-rising-the-bar-to-
            community-engagement/

40        © Logicalis GmbH
MOS Notes

     All About the SQLT Diagnostic Tool (Doc ID 215187.1)
     FAQ: SQLT (SQLTXPLAIN) Frequently Asked Questions (Doc ID 1454160.1)
     SQLT Usage Instructions (Doc ID 1614107.1)
     SQLT Main Report: Usage Suggestions (Doc ID 1922234.1)

41      © Logicalis GmbH
Vielen Dank!

Kontakt:

Stefan Seck
Senior Solution Engineer

Mobil: +49 151 52 64 35 76
E-Mail: stefan.seck@logicalis.de
Sie können auch lesen