Oturum bazlı undo segment kullanımının tespiti
Veritabanındaki bir oturumda kullanılan undo segment bilgisine aşağıdaki sorgu ile ulaşabilirsiniz. Geçmişe yönelik bilgiler de alınabilir.
Sorgudaki koşullar değiştirilerek , bir kullanıcı için ya da aktif oturumlarda kullanılan undo segment bilgilerine ulaşılabilir.
SELECT r.NAME "Undo Segment Name",
dba_seg.size_mb,
DECODE (TRUNC (SYSDATE - LOGON_TIME),
0, NULL,
TRUNC (SYSDATE - LOGON_TIME) || ' Days' || ' + ')
|| TO_CHAR (
TO_DATE (TRUNC (MOD (SYSDATE - LOGON_TIME, 1) * 86400), 'SSSSS'),
'HH24:MI:SS')
LOGON,
v$session.SID,
v$session.SERIAL#,
p.SPID,
v$session.process,
v$session.USERNAME,
v$session.STATUS,
v$session.OSUSER,
v$session.MACHINE,
v$session.PROGRAM,
v$session.module,
action
FROM v$lock l,
v$process p,
v$rollname r,
v$session,
( SELECT segment_name, ROUND (bytes / (1024 * 1024), 2) size_mb
FROM dba_segments
WHERE segment_type = 'TYPE2 UNDO'
ORDER BY bytes DESC) dba_seg
WHERE l.SID = p.pid(+)
AND v$session.SID = l.SID
AND TRUNC (l.id1(+) / 65536) = r.usn
AND l.TYPE(+) = 'TX'
AND l.lmode(+) = 6
AND r.NAME = dba_seg.segment_name
--AND v$session.username = 'ADURUOZ'
--AND status = 'ACTIVE'
ORDER BY size_mb DESC;
Aşağıdaki sorgu ile de özet bilgi edinilebilir.
SELECT u.tablespace_name tablespace,
s.username,
u.status,
SUM (u.bytes) / 1024 / 1024 sum_in_mb,
COUNT (u.segment_name) seg_cnts
FROM dba_undo_extents u
LEFT JOIN v$transaction t
ON u.segment_name = '_SYSSMU' || t.xidusn || '$'
LEFT JOIN v$session s
ON t.addr = s.taddr
GROUP BY u.tablespace_name, s.username, u.status
ORDER BY 1, 2, 3;
![]()
