====== Die aktuellen SQL Statements in der DB auswerten ======
Der einfachste Ansatz zum finden von "problematischen" SQL Statements ist die Auswertung der in der SGA gecachten Statements nach den evlt. Problemfällen.\\
Dabei werden die Statements gesucht, die oft aufgerufen werden UND viele Resourcen (CPU und Lesevorgänge) verbrauchen.\\
=== Aktuell von Benutzern ausgeführte Statements finden, die den TEMP Tablespace verwenden ===
SELECT DISTINCT
s.inst_id
, s.username
, u."USER"
, u.tablespace
, u.contents
, u.extents
, u.blocks
, u.segtype
, s.client_info
, sq.sql_text
, sq.DISK_READS
, sq.BUFFER_GETS
, sq.FETCHES
, sq.EXECUTIONS
FROM sys.gv$session s
, sys.gv$sort_usage u
, sys.gv$sql sq
WHERE s.saddr = u.session_addr
AND s.inst_id = u.inst_id
AND sq.ADDRESS = s.SQL_ADDRESS
AND sq.HASH_VALUE = s.SQL_HASH_VALUE
AND sq.inst_id = s.inst_id
AND u.SQLADDR = sq.ADDRESS
AND u.SQLHASH = sq.HASH_VALUE
AND u.inst_id = sq.inst_id
ORDER BY u.blocks DESC
=== Aktuell von einem Benutzer ausgeführtes Statement finden ===
Mit etwas Glück können Sie mit dieser Abfrage finden, die ein Anwender zuletzt ausgeführt hat.
Parameter:\\
INST_ID : aktuelle Instance auf der der Anwender angemeldet ist (immer 1 wenn es nur eine Instance gibt)\\
SID : Sid des Anwenders
select inst_id,sid from gv$session where username='
SELECT
s.sid
,s.CLIENT_INFO
,s.MACHINE
,s.PROGRAM
,s.type
,s.logon_time
,s.osuser
,sq.sorts
,sq.DISK_READS
,sq.BUFFER_GETS
,sq.ROWS_PROCESSED
,sq.SQLTYPE
,sq.SQL_TEXT
FROM gv$session s
, gv$sql sq
WHERE s.SQL_HASH_VALUE = sq.HASH_VALUE
AND s.inst_id=:id
AND s.sid = :sid
AND sq.inst_id= s.inst_id
{{tag>sql script performance}}