已索引
该文章已被其它文章引用。

set lines 200
set pages 100
col username for a10
col program for a10
col event for a10
col machine for a20
col object_name for a15
SELECT substr(vs.username,1,10) "USERNAME",
   vs.sid "SID",
   vs.serial# "SERIAL#",
   vs.sql_id "SQL_ID",
   vs.prev_sql_id "PREV_SQL_ID",
   vs.machine,
   vs.program,
   vs.blocking_session,
   vs.event,
   vt.XID "Transaction_XID",
   vt.used_urec "RECORDS",
   vt.used_ublk*p.VALUE/1024/1024 "SIZE(M)",
   do.object_name,
   vl.locked_mode  -- 3 means row-X
FROM   v$transaction vt,
       v$session vs,
       v$rollname vrn,
   v$rollstat vrb,
   v$parameter p,
   v$locked_object vl,
   dba_objects do
   WHERE vrn.usn = vrb.usn
     AND vrb.usn = vt.xidusn
     AND vs.taddr = vt.addr
     AND p.NAME = 'db_block_size'
     AND vt.XIDSQN = vl.XIDSQN
     AND vl.object_id = do.object_id
ORDER BY "SIZE(M)" desc;

建议周期性(如每5分钟)对 undo 的使用情况进行监控,将使用 undo 最多 sql_id 和 undo 量打印出来,如此,当需要查询过去某时间谁消耗了最多的 undo 时,就可以通过 zabbix 迅速找到。

-- By 许望(RHCA、OCM、VCP)
最后修改:2023 年 12 月 01 日 10 : 12 PM
如果觉得我的文章对你有用,请随意赞赏