Aktuelle Transaktionen mit Benutzer und SQL-Statements
Sie möchten ermitteln, welche Transaktionen aktuell in der Datenbank Undo-Records erzeugen und Undo-Blöcke allokieren? Zusätzlich wäre noch der Name des ausführenden Datenbankbenutzers sowie das zugehörige SQL-Statement für Sie interessant?
SELECT used_ublk, used_urec, s.osuser, s.username, s.sid, s.serial#, s.program, s.machine, a.sql_text, t.start_time FROM v$transaction t, v$session s, v$sqlarea a WHERE ( ( s.SQL_ADDRESS = a.ADDRESS AND s.sql_hash_value = a.HASH_VALUE ) OR ( s.PREV_SQL_ADDR = a.ADDRESS AND s.PREV_hash_value = a.HASH_VALUE ) ) AND t.ses_addr = s.saddr;
Wird eine Transaktion gerade ausgeführt, so erhöht sich die Anzahl genutzer Undo-Sätze (used_urec) und Undo-Blöcke (used_ublk). Wird die Transaktion aktuell zurückgerollt, nehmen die Werte ab.
Bei einem shutdown immediate beispielsweise kann auf diese Weise gemonitort werden, welche Menge an Undo-Informationen zurückzurollen sind, bevor die Datafiles geschlossen werden können.
Lutz Fröhlich
held-informatik
de
info