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 GmbH
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
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
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
Problem definieren Client-Hardware Netzwerk Webserver / App-Server Interconnect Client-Konfiguration Firewall Client-Anwendung Internet-Verbindung I/O 9 © Logicalis GmbH
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