Ich arbeite mit SQL Server, aber ich muss zu einer Anwendung mit Oracle DB migrieren. Um meine Anwendungsabfragen zu verfolgen, verwende ich in SQL Server ein wunderbares Profiler-Tool. Gibt es etwas Äquivalentes für Oracle?
sql-server
oracle
profiler
stefano m
quelle
quelle
sql server profiler
? Was benutzt du jetzt?DBMS_PROFILER
(unverwässert und beschränkt, aber super-bequem) oderDBMS_HPROF
(genauer , aber erfordert mehr Setup). Ich kenne SQL Server jedoch nicht, daher ist es möglich, dass es ein anderes Konzept für die Profilerstellung hat als eines der Oracle-Pakete, und Sie möchten eher die Ablaufverfolgung in Oracle.Antworten:
Mit Oracle Enterprise Manager können Sie die aktiven Sitzungen mit der ausgeführten Abfrage, ihrem Ausführungsplan, Sperren, einigen Statistiken und sogar einem Fortschrittsbalken für die längeren Aufgaben überwachen.
Siehe: http://download.oracle.com/docs/cd/B10501_01/em.920/a96674/db_admin.htm#1013955
Gehen Sie zu Instanz -> Sitzungen und sehen Sie sich die Registerkarte SQL jeder Sitzung an.
Es gibt andere Möglichkeiten. Der Enterprise Manager zeigt nur in hübschen Farben an, was in speziellen Ansichten wie den hier dokumentierten bereits verfügbar ist: http://www.oracle.com/pls/db92/db92.catalog_views?remark=homepage
Natürlich können Sie auch Explain PLAN FOR, das TRACE-Tool und unzählige andere Instrumentalisierungsmethoden verwenden. Es gibt einige Berichte im Enterprise Manager für die teuersten SQL-Abfragen. Sie können auch die letzten im Cache gespeicherten Abfragen durchsuchen.
quelle
Ich habe eine einfache Lösung gefunden
Schritt 1. Stellen Sie mit einem Administrator eine Verbindung zur Datenbank her, indem Sie PLSQL oder sqldeveloper oder eine andere Abfrageoberfläche verwenden
Schritt 2. Führen Sie das folgende Skript aus. In der Spalte S.SQL_TEXT sehen Sie die ausgeführten Abfragen
Das einzige Problem dabei ist, dass ich keine Möglichkeit finde, die Werte der Eingabeparameter (für Funktionsaufrufe) anzuzeigen, aber zumindest können wir sehen, was in Oracle ausgeführt wird und in welcher Reihenfolge, ohne ein bestimmtes Tool zu verwenden.
quelle
--oder
- muss groß genug sein:
- Finden Sie die Seiten- und Seriennummer der Sitzung heraus, an der Sie interessiert sind:
- Sie können mit dem Ereignis 10046 mit der Ablaufverfolgung beginnen. Der vierte Parameter legt die Ablaufverfolgungsstufe fest (12 ist die größte):
- Deaktivieren Sie die Ablaufverfolgung mit der Einstellung Null:
/ * mögliche Pegel: 0 - ausgeschaltet 1 - minimaler Pegel. Ähnlich wie set sql_trace = true 4 - Bindungsvariablenwerte werden zur Tracedatei 8 hinzugefügt - Wartezeiten werden hinzugefügt 12 - sowohl Bindungsvariablenwerte als auch Warteereignisse werden hinzugefügt * /
--same, wenn Sie Ihre eigene Sitzung mit größerem Level verfolgen möchten:
--schalte aus:
--Datei mit rohen Trace-Informationen wird gefunden:
--name der Datei (*. trc) enthält spid:
- Sie können den Namen auch selbst festlegen:
--finieren Sie, um
TKPROF
die Ablaufverfolgungsdatei lesbarer zu machen:- Um den Status der Tracedatei anzuzeigen, verwenden Sie:
Nur irgendwie übersetzt http://www.sql.ru/faq/faq_topic.aspx?fid=389 Original ist voller, aber trotzdem ist dies besser als das, was andere meiner Meinung nach gepostet haben
quelle
GI Oracle Profiler v1.2
Es ist ein Tool für Oracle zum Erfassen von Abfragen, die ähnlich wie der SQL Server Profiler ausgeführt werden. Unverzichtbares Tool für die Wartung von Anwendungen, die diesen Datenbankserver verwenden.
Sie können es von der offiziellen Website iacosoft.com herunterladen
quelle
Versuchen Sie PL / SQL Developer, es hat eine schöne benutzerfreundliche GUI-Oberfläche zum Profiler. Es ist ziemlich schön, den Versuch zu versuchen. Ich schwöre auf dieses Tool, wenn ich an Oracle-Datenbanken arbeite.
http://www.allroundautomations.com/plsqldev.html?gclid=CM6pz8e04p0CFQjyDAodNXqPDw
quelle
Da ich gerade eine aktuelle Frage als Duplikat abgestimmt und in diese Richtung gezeigt habe. . .
Ein paar weitere - in SQL * Plus - SET AUTOTRACE ON - geben einen Erklärungsplan und Statistiken für jede ausgeführte Anweisung.
TOAD ermöglicht auch die clientseitige Profilerstellung.
Der Nachteil dieser beiden ist, dass sie Ihnen nur den Ausführungsplan für die Anweisung mitteilen, nicht jedoch, wie der Optimierer zu diesem Plan gelangt ist. Dazu benötigen Sie eine serverseitige Ablaufverfolgung auf niedrigerer Ebene.
Ein weiterer wichtiger Punkt, den Sie verstehen sollten, sind Statspack-Snapshots. Sie sind eine gute Möglichkeit, die Leistung der gesamten Datenbank zu betrachten. Erklären Sie, dass Plan usw. gut darin sind, einzelne SQL-Anweisungen zu finden, bei denen es sich um Engpässe handelt. Statspack kann gut erkennen, dass Ihr Problem darin besteht, dass eine einfache Anweisung mit einem guten Ausführungsplan 1 Million Mal pro Minute aufgerufen wird.
quelle
Der Catch ist Capture all SQL, das zwischen zwei Zeitpunkten ausgeführt wird. So wie es auch SQL Server tut.
Es gibt Situationen, in denen es nützlich ist, die SQL zu erfassen, die ein bestimmter Benutzer in der Datenbank ausführt. Normalerweise aktivieren Sie einfach die Sitzungsverfolgung für diesen Benutzer, aber bei diesem Ansatz gibt es zwei potenzielle Probleme.
Eine schnelle und schmutzige Lösung des Problems besteht darin, alle SQL-Anweisungen zu erfassen, die zwischen zwei Zeitpunkten ausgeführt werden.
Mit dem folgenden Verfahren werden zwei Tabellen erstellt, die jeweils einen Snapshot der Datenbank an einem bestimmten Punkt enthalten. Die Tabellen werden dann abgefragt, um eine Liste aller SQL-Ausführungen während dieses Zeitraums zu erstellen.
Wenn möglich, sollten Sie dies auf einem leisen Entwicklungssystem tun - andernfalls besteht die Gefahr, dass Sie viel zu viele Daten zurückerhalten.
Machen Sie den ersten Schnappschuss Führen Sie die folgende SQL aus, um den ersten Schnappschuss zu erstellen:
Lassen Sie den Benutzer seine Aufgabe in der Anwendung ausführen.
Machen Sie den zweiten Schnappschuss.
Überprüfen Sie die Ergebnisse Nachdem Sie die SQL erfasst haben, ist es Zeit, die Ergebnisse abzufragen.
Diese erste Abfrage listet alle ausgeführten Abfrage-Hashes auf:
Dieser zeigt den Hash und den SQL selbst an: setze Seiten 999 Zeilen 100 break auf hash_value
5. Aufräumen Vergessen Sie nicht, die Snapshot-Tabellen zu entfernen, wenn Sie fertig sind:
quelle
Oracle analysiert zusammen mit anderen Datenbanken eine bestimmte Abfrage, um einen Ausführungsplan zu erstellen. Dieser Plan ist die effizienteste Methode zum Abrufen der Daten.
Oracle stellt die
explain plan
Anweisung ' ' bereit, mit der die Abfrage analysiert, aber nicht ausgeführt wird. Stattdessen wird eine spezielle Tabelle ausgefüllt, die Sie abfragen können (die Plan-Tabelle).Die Syntax (einfache Version, es gibt andere Optionen, z. B. um die Zeilen in der Plan-Tabelle mit einer speziellen ID zu markieren oder eine andere Plan-Tabelle zu verwenden) lautet:
Die Analyse dieser Daten bleibt für eine andere Frage oder Ihre weitere Forschung.
quelle
Es gibt ein kommerzielles Tool FlexTracer, mit dem Oracle SQL-Abfragen verfolgt werden können
quelle
Dies ist ein Oracle-Dokument, in dem erläutert wird, wie SQL-Abfragen verfolgt werden, einschließlich einiger Tools (SQL Trace und tkprof).
Verknüpfung
quelle
Anscheinend gibt es kein kleines einfaches billiges Dienstprogramm, das bei der Ausführung dieser Aufgabe helfen würde. Es gibt jedoch 101 Möglichkeiten, dies auf komplizierte und unbequeme Weise zu tun.
Der folgende Artikel beschreibt mehrere. Es gibt wahrscheinlich Dutzende mehr ... http://www.petefinnigan.com/ramblings/how_to_set_trace.htm
quelle