dba:sql_monitoring_sga
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='<mein gesuchter Anwender';
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
dba/sql_monitoring_sga.txt · Zuletzt geändert: 2010/07/06 10:57 von gpipperr