Oracle: SQL Statements optimieren

Mit der Hilfe des folgenden Oracle SQL Befehles können Sie für alle SQL Befehle im SQL Cache herausfinden, wie häufig diese ausgeführt wurden und wieviele Blockzugriffe für die Verarbeitung notwenig waren.

select to_char(executions,'999G999G990') "executions", to_char(buffer_gets,'999G999G990') "gets", to_char(buffer_gets/greatest(nvl(executions,1),1),'999G999G990') "gets je exec", to_char(round(100*(1-(disk_reads/greatest(nvl(buffer_gets,1),1))),2),'990D00') Trefferquote, sql_text
from v$sql
where buffer_gets > 1000
order by buffer_gets desc;

Zusätzlich wird Ihnen die "Trefferquote" des jeweiligen Befehls im Datencache angezeigt.

Durch diese Abfrage können Sie sehr schnell schlecht optimierte SQL-Befehle herausfinden.

Eine Trefferquote < 70% deutet meist darauf hin, dass in dem Fall eine Tabelle komplett ohne Index-Zugriffe gelesen wurde. Zur Optimierung sollten Sie dann einen weiteren (oder überhaupt einen) Index hinzuzufügen. Der Befehl kann danach die Daten schneller lesen.

Diese Statistik zeigt nur die Befehle, welche sich aktuell im SQL-Cache befinden. Um ein umfassendes Bild der auffälligen SQL Befehle zu erhalten sollten Sie den o.a. SQL Befehl also mehrfach täglich ausführen. Das Intervall hängt dabei stark von der Nutzung Ihrer Oracle Datenbank ab. Auch ein Aufruf zu unterschiedlichen Zeiten gibt aufschlußreiche Informationen an Sie weiter.

Die Einschränkung "buffer_gets > 1000" hilft, die Ergebnismenge zu reduzieren. Durch diese Auswahl werden nur die relevanten Befehle angezeigt. Natürlich können Sie auch diesen Parameter frei anpassen.


Dieser Artikel hat Dir geholfen ?
.. und Dir nerviges Ausprobieren, Suchen und Zeit erspart ?

Dann würde ich mich sehr freuen, wenn Du diese werbefreie Hilfeseite mit einer kleinen Anerkennung unterstützen würdest.
Vielen Dank !
PayPal Donate QR Code

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

20 + 8 =