Ich möchte die neuesten ausgeführten Anweisungen zusammen mit Leistungsindikatoren in meine Datenbank aufnehmen.
Als solches möchte ich wissen, welche SQL-Anweisungen am meisten CPU / DISK-intensiv waren.
oracle
monitoring
Sebastian Roth
quelle
quelle
Antworten:
Hier ist die SQL, um die Arbeit zu erledigen. Zur Prüfung offen.
Schritt 1: Bestimmen Sie die Installations- und Benutzer-IDs.
Schritt 2:
Möglicherweise werden mehrere IDs und Instanz-IDs zurückgegeben. Es liegt also an den Benutzern, wie sie diese Daten in einer Weboberfläche usw. verwenden möchten.
quelle
in
Operator mit Tupeln, also aus obigem Beispiel... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
Die Oracles Enterprise Monitor-Konsole zeigt eine Fülle von Informationen darüber an, welche SQL-Abfragen die maximale CPU-Auslastung, Engpässe, die höchste Aktivität in der Datenbank und das Blockieren von SQLs et al. Beanspruchen.
Für einen historischen Ansatz können Sie die AWR- Berichte von Oracle verwenden , um Bereiche zu identifizieren, die Sie betreffen.
quelle
Sie können auch verwenden
V$SQL
, es gibt mehrere interessante SpaltenRUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
usw.Auf diese Weise erhalten Sie die Top-10-Anweisungen beim Lesen von Datenträgern (Anmerkung: Dies ist für alle Ausführungen kumulativ):
Wenn die Anweisung noch vorhanden ist
V$SQL_PLAN
, können Sie einen tatsächlichen Erklärungsplan für die Abfrage abrufen:Ich benutze auch gerne,
V$SQL_PLAN
da es gute Infos enthält. Wennstatistics_level=ALL
du kannstV$SQL_PLAN_STATISTICS
.quelle
Für aktuelles SQL:
Für die Geschichte:
quelle