Oracle 查看 使用 UNDO 段的事务 脚本


Undo 表空间管理的说明,参考:Oracle undo 表空间管理

我们可以使用如下脚本查看Oracle undo segment段的信息:

  1. /* Formatted on 2012/6/18 18:10:55 (QP5 v5.185.11230.41888) */  
  2. SELECT T1.USN,  
  3.        T2.NAME,  
  4.        T1.STATUS,  
  5.        T1.LATCH,  
  6.        T1.EXTENTS,  
  7.        T1.WRAPS,  
  8.        T1.EXTENDS  
  9.   FROM V$ROLLSTAT T1, V$ROLLNAME T2  
  10.  WHERE T1.USN = T2.USN;  

 

当Undo 表空间出现故障的时候,我们就会需要注意这些undo segment 信息:

Currentonline Redo 和 Undo 损坏的处理方法

结合v$session 和v$transaction 视图就可以确认每个事务使用使用undo segment的情况,当undo 表空间使用异常的时候,就可以使用如下的脚本来检查事务使用undo segment的情况:

  1. /* Formatted on 2012/6/18 13:28:55 (QP5 v5.185.11230.41888) */  
  2.   SELECT S.SID,  
  3.          S.USERNAME,  
  4.          U.NAME,  
  5.          Q.SQL_TEXT,  
  6.          Q.HASH_VALUE,  
  7.          T.UBABLK  
  8.     FROM V$TRANSACTION T,  
  9.          V$ROLLSTAT R,  
  10.          V$ROLLNAME U,  
  11.          V$SESSION S,  
  12.          V$SQL Q  
  13.    WHERE     S.TADDR = T.ADDR  
  14.          AND T.XIDUSN = R.USN  
  15.          AND R.USN = U.USN  
  16.          AND Q.HASH_VALUE =  
  17.                 DECODE(S.SQL_HASH_VALUE,  
  18.                         NULL, S.PREV_HASH_VALUE,  
  19.                         S.SQL_HASH_VALUE)  
  20. ORDER BY S.USERNAME;  

 

相关内容