SQLTXplain Helfer zur Performance Analyse - Präsentiert von Stefan Seck - DOAG
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
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 GmbHPartnerschaft 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
3Problem definieren
Und sag ja nicht
Was ist das
"Die Datenbank ist
langsam!" Problem?
Ja nee, "Die Datenbank ist langsam!"
is' klar…
7 © Logicalis GmbHProblem 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 GmbHProblem definieren
Client-Hardware Netzwerk
Webserver / App-Server
Interconnect
Client-Konfiguration
Firewall
Client-Anwendung
Internet-Verbindung I/O
9 © Logicalis GmbHZiele 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 GmbHDaten 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 GmbHDaten 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 GmbHProblem 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 GmbHProblem 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 GmbHProblem vermeiden
1. Datenbank kennen
2. Datenbank beobachten
3. Housekeeping
15 © Logicalis GmbHTuning 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 GmbHSQLTXplain
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 GmbHSQLT 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 GmbHSQLT 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 GmbHSQLT 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 GmbHSQLT – Zusätzliche User
Weitere User einrichten
grant SQLT_USER_ROLE to ;
Rechte
SELECT_CATALOG_ROLE
Verzeichnisse (DB-Server und/oder Client)
23 © Logicalis GmbHSQLT - 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 GmbHSQLT - 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 GmbHSQLT - 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 GmbHSQLT - 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 GmbHSQLT - 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 GmbHSQLT - 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 GmbHSQLT – 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 GmbHFazit
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 GmbHFazit
• 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 GmbHMOS 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 GmbHVielen 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