Top 5 zeitaufwendige SQL-Abfragen in Oracle
Wie kann ich das schlecht ausführen von SQL-Abfragen in Oracle?
Oracle verwaltet Statistiken über die shared SQL-Bereich und enthält eine Zeile pro SQL-string(v$sqlarea).
Aber wie können wir identifizieren, welche von Ihnen sind schlecht durchführen?
InformationsquelleAutor der Frage Kamal Joshi | 2008-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich dieses SQL-statement zu sein, ein nützlicher Ort, um zu starten (sorry, ich kann nicht führen dies auf den original-Autor; ich fand es irgendwo im internet):
Findet das top-SQL-Anweisungen, die momentan gespeichert in der SQL-cache-bestellt durch die vergangene Zeit. Aussagen verschwinden aus dem cache im Laufe der Zeit, so könnte es keine gute versuchen, zu diagnostizieren, die Letzte Nacht batch-job, wenn Sie Rollen in der Arbeit mittags.
Sie können auch versuchen Bestellung von disk_reads und Hinrichtungen. Hinrichtungen ist sinnvoll, da einige schlechte Programme senden einer SQL-Anweisung Weg zu viele Male. Diese SQL-vorausgesetzt, Sie verwenden Sie bind-Variablen korrekt.
Dann können Sie mit der
sql_id
undchild_number
einer Anweisung und füttern Sie Sie in das baby:-Dies zeigt der eigentliche plan aus dem SQL-cache und den vollständigen text der SQL.
InformationsquelleAutor der Antwort WW.
Den Sie finden konnten, Festplatten-intensive full-table-scans mit so etwas wie dies:
InformationsquelleAutor der Antwort Leigh Riffel
Können Sie die Durchschnittliche Puffer bekommt pro Hinrichtung während eines Zeitraums von Aktivität der Instanz:
InformationsquelleAutor der Antwort Guille
Gibt es eine Reihe von Möglichkeiten, dies zu tun, aber haben Sie eine google für tkprof
Gibt es keine GUI... es ist ganz Befehlszeile und eventuell einen touch einschüchternd für Oracle-Anfänger; aber es ist sehr mächtig.
Dieser link sieht wie ein guter Anfang:
http://www.oracleutilities.com/OSUtil/tkprof.html
InformationsquelleAutor der Antwort cagcowboy
Es hängt davon ab, welche version von oracle, die Sie haben, für 9i und unten Statspack ist, was Sie sind nach, 10g und vor, Sie wollen awr , diese beiden tools geben Ihnen die top-sql und viele andere Sachen.
InformationsquelleAutor der Antwort Matthew Watson
die vollständige information eine, die bekam ich von askTom-Oracle. Ich hoffe es hilft dir
InformationsquelleAutor der Antwort Ras Rass
Gibt die folgende Abfrage die SQL-Anweisungen, die eine große Anzahl der Lesevorgänge von der Festplatte (umfasst auch den betreffenden Benutzer und die Anzahl, wie oft die Abfrage ausgeführt wurde):
Führen Sie die Abfrage als SYS und passen Sie die Anzahl der Lesevorgänge von der Festplatte abhängig davon, was du als zu hoch (100.000 arbeiten für mich).
Ich habe diese Abfrage vor kurzem auf die Spur zu Benutzern, die sich weigern zu nutzen
Explain Plans
vor der Ausführung Ihrer Anweisungen.Fand ich diese Abfrage in einem alten Oracle-SQL-tuning-Buch (die ich leider nicht mehr), also entschuldige bitte, aber keine Namensnennung.
InformationsquelleAutor der Antwort Steven Wolfe
Während der Suche bekam ich folgende Abfrage, die nicht den job mit einer Annahme(query execution time >6 Sekunden)
WÄHLEN Sie Benutzername, sql_text, sofar, totalwork, Einheiten
AUS v$sql,v$session_longops
WO sql_address = Adresse UND sql_hash_value = hash_value
ORDER BY Adresse, hash_value, child_number;
Ich denke, obige Abfrage listet die details für den aktuellen Benutzer.
Kommentare sind herzlich willkommen!!
InformationsquelleAutor der Antwort Kamal Joshi