Als PDF Downloaden!

Werbung
Tipps & Tricks: August 2016
Bereich:
DBA, Tuning
Erstellung:
08/2016 KW
Versionsinfo:
9.2, 10.1, 10.2, 11.1, 11.2, 12.1
Letzte Überarbeitung:
08/2016 KW
Wir finden einen Schatz - SQLT, Teil 1
Schon seit Ewigkeiten gibt es ein Tool zur Performance-Analyse von SQL-Statements: ständig weiterentwickelt
und auch intern eingesetzt von Oracle, kostenlos, auch ohne Diagnostic- und Tuning-Pack nutzbar und - in weiten
Kreisen - unbekannt. Gründe genug, das Tool an dieser Stelle vorzustellen und einen
"Performance-Tuning-Schatz" einem größeren Publikum zugänglich zu machen.
Teil 1 beinhaltet die Vorstellung des Tools und erläutert die Installation. In Teil 2 werden die
Analyse-Möglichkeiten mit SQLT beleuchtet.
Die Suche beginnt - Einführung und Installation
Was ist SQLT?
SQLT ist der Kurzname für das Tool SQLTXPLAIN. Dieses Tool gibt es bereits seit 1999. Es wird intern vom
Oracle Support genutzt und ebenfalls den Kunden zur Verfügung gestellt. Neben der ständigen
Weiterentwicklung und dem Bugfixing kann der Anwender auf einiges an Dokumentation zurückgreifen. Diese
umfasst sowohl viele Seiten im "My Oracle Support" und Diskussionen der Community als auch gut
dokumentierte Installations- und Performance-Analyse-Skripts. Allein schon deren Lektüre gibt dem
tuning-interessierten Datenbankadministrator oder Entwickler so manchen frischen Impuls für künftige
SQL-Tuning-Tipps-und-Tricks.
SQLT ist kostenfrei. Es kann sowohl auf der Oracle Standard Edition also auch der Enterprise Edition verwendet
werden. Der Informationsgehalt ist noch größer, wenn das Diagnostic- oder Tuning- und Diagnostic-Pack
lizenziert sind - in diesem Fall kann SQLT nämlich auch diese Daten bei der Analyse mit einbeziehen.
Hauptzweck von SQLT ist die Performance-Analyse von SQL-Statements. Das Kernstück von SQLT ist ein
Repository, in das alle Details zur Performance eines oder mehrerer SQL-Statements oder PL/SQL-Codes
geschrieben werden. Hieraus erfolgt dann die Analyse sowie der Export der Daten in mehrere Outputfiles. Diese
werden anschließend gezippt. Diese Schritte erfolgen automatisiert. Das Repository ist die Basis für Vergleiche
von SQL-Statements und deren Ausführungsdetails. Es gehört dem User SQLTXPLAIN.
Für die Analyse von SQL-Statements mit SQLT gibt es verschiedene Parameter - in der SQLT-Dokumentation
auch "Methoden" genannt. Der Anwender kann wählen:
Soll das zu analysierende SQL-Statement aus dem Memory oder - wenn verfügbar - dem AWR
herausgelesen und analysiert werden?
Oder soll das Statement per Textfile übergeben und analysiert werden?
Sollen "nur" vorhandene Performance-Details analysiert werden?
Oder nur Ausführungspläne angezeigt werden?
Oder soll das Statement zu Analysezwecken extra auf der Datenbank ausgeführt und die
Performance-Daten dabei live gesammelt werden?
Wie sieht es mit Bindevariablen aus - liegen sie im Memory vor und stehen zur weiteren Analyse zur
Verfügung oder soll ein spezieller Wert berücksichtigt werden?
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 1 von 4
Je nach Einsatzzweck muss also die geeignete Methode gewählt werden. Aber darauf gehen wir im nächsten
Monatstipp ein.
Installation
Die Voraussetzung für den Download von SQLT von den Oracle Seiten ist ein Account bei "My Oracle Support".
Nach dem Einloggen kann die Software hier herunter geladen werden. Das zip-File enthält neben den
Installations-Source auch die Skripte, die später für die Performance-Analysen eingesetzt werden. Es sollte an
gut zugänglicher Stelle auf dem Datenbankserver entpackt werden. Im Folgenden wird dieses Verzeichnis als
<SQLT_ROOT> bezeichnet.
Bei der Installation von SQLT werden zwei Schemata (SQLTXADMIN, SQLTXPLAIN) auf der Datenbank
angelegt. Es ist empfohlen zur Analyse der Statements die Applikations-User zu verwenden, diese erhalten die
Rolle SQLT_USER_ROLE. Dieser Rolle sind folgende höhere Rechte zugewiesen: SELECT_CATALOG_ROLE,
ADVISOR sowie EXECUTE auf SYS.DBMS_METADATA und Lese-/Schreibrechte auf das Directory, in das die
Tracefiles geschrieben werden. Ist Oracle Text installiert, so wird an die SQLT_USER_ROLE auch der Zugriff auf
das Package CTXSYS.CTX_REPORT vergeben. So können also auch Oracle Text Indizes in die
Performance-Analyse einbezogen werden.
Die Installation wird wie folgt gestartet:
cd <SQLT_ROOT>/install
sqlplus sys as sysdba
start sqcreate.sql
Während der Installation wird nach dem Connect Identifier (wichtig für Pluggable Databases), dem Passwort für
den Repository-User SQLTXPLAIN sowie dem Tablespace für die Schemaobjekte gefragt. Optional ist die
Angabe eines Applikations-Users, dessen Statements zu einem späteren Zeitpunkt analysiert werden sollen.
Dieser Schritt kann auch später wiederholt und so mehrere User, deren Statements analysiert werden,
hinzugefügt werden. Im letzten Schritt muss angegeben werden ob und welche Oracle-Packs SQLT für die
Analysen nutzen darf. Der Default ist das Tuning- und Diagnostic-Pack, dies sollte also umgesetzt werden, wenn
es auf der aktuellen Umgebung nicht lizenziert ist ("D" für "Diagnostic-Pack oder "N" für "None"). Vergisst man
diese Eingabe, kann man die Verwendung von Packs wie folgt nachträglich konfigurieren:
exec sqltxadmin.sqlt$a.disable_tuning_pack_access;
exec sqltxadmin.sqlt$a.disable_diagnostic_pack_access;
Nun beginnt das Skript mit der Installation. Während der Installation wird zum Beispiel geprüft, ob bestimmte
Directories vorhanden und beschreibbar sind. Dementsprechend dauert die Installation selbst auf
Testdatenbanken ein paar Minuten, also nicht ungeduldig werden.
In 12c müssen unter bestimmten Umständen noch weitere Rechte vergeben werden. So auch, wenn
beispielsweise der SYS- oder andere DBA-User anstelle des Applikations-Users zur Analyse genutzt werden
sollen:
GRANT INHERIT PRIVILEGES ON USER SYS TO SQLTXADMIN;
GRANT INHERIT PRIVILEGES ON USER SYSTEM TO SQLTXADMIN;
Wird mit concurrent statistics gearbeitet, benötigen die beiden SQLT-User zusätzlich folgende Rechte, damit sie
Statistiksammlungen starten können:
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 2 von 4
GRANT CREATE JOB, MANAGE SCHEDULER, MANAGE ANY QUEUE to SQLTXPLAIN, SQLTXADMIN;
Damit ist die Installation beendet. Soll SQLT auf vielen Datenbanken ausgerollt werden, empfiehlt sich eine Silent
Installation mit Parameterfile. Im RAC-Umfeld sollte SQLT immer von demselben Knoten aus installiert und für die
Performance-Analyse gestartet werden.
Zum Spielen mit den Möglichkeiten von SQLT kann mit Hilfe der Skripts unter
<SQLT_ROOT>/input/sample/minidb ein Test-User mit Datenbank-Objekten installiert werden. Im selben
Verzeichnis finden sich auch drei Testfallskripte mit vorbereiteten SQL-Statements, SQL_IDs und Befehlen zur
Auswertung. Diese sollten aber nur mit Vorsicht genutzt bzw. angepasst werden, damit nicht versehentlich das
Diagnostic- oder das Tuning- und Diagnostic-Pack genutzt wird.
cd <SQLT_ROOT>/input/sample/minidb
sqlplus sys as sysdba
-- Erstellung Testschema qtune
start create_user.sql
-- Befüllung Testschema qtune:
conn qtune/qtune
start create_order_entry_db.sql
Soll SQLT deinstalliert werden, so droppt man die Schemata SQLTXPLAIN und SQLTADMIN mit dem folgenden
Skript:
cd <SQLT_ROOT>/install
sqlplus sys as sysdba
start sqdrop.sql
Anschließend kann das SQLT-Verzeichnis entfernt werden und die Deinstallation ist abgeschlossen.
Alternativen zu SQLT
Scheut man sich, für die Analyse von SQL-Statements zwei separate Schemata zu installieren oder sind die
Möglichkeiten von SQLT zu umfangreich, kann man den "kleinen Bruder" SQLHC (SQL Tuning Health Check)
ausprobieren. Die Funktionalität von SQLHC ist ebenfalls in SQLT enthalten. SQLHC greift jedoch nur auf
Statistiken, Standard-APIs sowie - wenn gewünscht - auf AWR-Informationen zu und generiert daraus einen
HTML-Report mit Performance-Informationen zu diesem Statement.
Ebenfalls interessant ist das Tool SQLd360. Es wurde von Mauro Pagano entwickelt, der ebenfalls ein paar Jahre
in die Weiterentwicklung von SQLT involviert war. sqld360 ist ebenfalls ein "Leichtgewicht" für die schnelle
Analyse von SQL-Statements.
Unser Monatstipp soll vorerst hier enden. Im nächsten Monat lesen Sie, welche Analyse-Möglichkeiten SQLT
bietet. Für mehr Information stehen wir gern zur Verfügung - zum Beispiel im Rahmen einer SQL Tuning
Schulung. Ebenso gern unterstützen Sie unsere erfahrenen Consultants bei Ihnen vor Ort oder per
Remote-Support.
Quellen bzw. zum Weiterlesen:
Installation und Verwendung, SQLT Usage Instructions - MOS-Note 1614107.1
SQLT (SQLTXPLAIN) Frequently Asked Questions - MOS-Note 1454160.1
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 3 von 4
All About the SQLT Diagnostic Tool - MOS-Note 215187.1
SQLT in 12c Can't Gather Stats - Blog von Brian Peasland
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 4 von 4
Herunterladen