Meine Anwendung, die eine Oracle-Datenbank verwendet, ist langsam oder scheint vollständig gestoppt zu sein.
Wie kann ich herausfinden, welche Abfragen am teuersten sind, damit ich weitere Nachforschungen anstellen kann?
Dieser zeigt SQL, das derzeit "AKTIV" ist: -
select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
from v$sqltext_with_newlines t,V$SESSION s
where t.address =s.sql_address
and t.hash_value = s.sql_hash_value
and s.status = 'ACTIVE'
and s.username <> 'SYSTEM'
order by s.sid,t.piece
/
Dies zeigt Schlösser. Manchmal geht es langsam voran, aber es liegt daran, dass es blockiert ist und auf ein Schloss wartet:
select
object_name,
object_type,
session_id,
type, -- Type or system/user lock
lmode, -- lock mode in which session holds lock
request,
block,
ctime -- Time since current mode was granted
from
v$locked_object, all_objects, v$lock
where
v$locked_object.object_id = all_objects.object_id AND
v$lock.id1 = all_objects.object_id AND
v$lock.sid = v$locked_object.session_id
order by
session_id, ctime desc, object_name
/
Dies ist gut geeignet, um lange Vorgänge zu finden (z. B. vollständige Tabellenscans). Wenn es sich um viele kurze Operationen handelt, wird nichts angezeigt.
COLUMN percent FORMAT 999.99
SELECT sid, to_char(start_time,'hh24:mi:ss') stime,
message,( sofar/totalwork)* 100 percent
FROM v$session_longops
WHERE sofar/totalwork < 1
/
alter system kill session
wie hier beschrieben verwenden: docs.oracle.com/cd/B28359_01/server.111/b28310/…Versuchen Sie dies, es werden Abfragen angezeigt, die derzeit länger als 60 Sekunden ausgeführt werden. Beachten Sie, dass pro laufender Abfrage mehrere Zeilen gedruckt werden, wenn SQL mehrere Zeilen enthält. Schauen Sie sich die Seriennummer an, um zu sehen, was zusammen gehört.
quelle
v $ session_longops
Wenn Sie nach sofar! = Totalwork suchen, werden Sie diejenigen sehen, die noch nicht abgeschlossen sind, aber die Einträge werden nicht entfernt, wenn der Vorgang abgeschlossen ist, sodass Sie dort auch viel Verlauf sehen können.
quelle
quelle
Sie können einen AWR-Bericht (Automatic Workload Repository) aus der Datenbank generieren.
Führen Sie die SQL * Plus-Befehlszeile aus:
Lesen Sie das Dokument zum Erstellen und Verstehen eines AWR-Berichts. Es bietet einen vollständigen Überblick über die Datenbankleistung und Ressourcenprobleme. Sobald wir mit dem AWR-Bericht vertraut sind, ist es hilfreich, Top SQL zu finden, das Ressourcen verbraucht.
Außerdem können wir in der 12C EM Express-Benutzeroberfläche einen AWR generieren.
quelle
Mit der folgenden Abfrage können Sie die Details zu lang laufenden Abfragen wie% abgeschlossen und verbleibende Zeit überprüfen:
Die vollständige Liste der Schritte zur Fehlerbehebung finden Sie hier: Fehlerbehebung bei Sitzungen mit langer Laufzeit
quelle
quelle