UNDO 行为

-- 回滚表空间各区使用状况

select status, sum (blocks) as blocks, sum (bytes/ 1024 ) as Size_Kb
from dba_undo_extents
where tablespace_name = 'UNDOTBS01'
group by status

每个undo extent 可以有三种状态:

active: 有活动事务在此extent

expired: 已结束的事务,undo 信息超过undo_retention 时间限制

unexpired: 已经结束的事务,undo 信息未达到undo_retention 时间限制

当一个事务开始它将会去寻找可用的undo block 来存放undo 信息,它将按照以下顺序请求undo space.

1. 先去搜索拥有非active extentundo segment ,如果没有发现,那么会去创建新的undo segment, 如果空间不够不能创建,将返回错误

2. 如果有一个undo segment 被选中,但是其中freeundo block 并不足以存储该事务的undo 信息,那么它将尝试创建extent ,如果没有空间,那么将会进入下一步。

3. 如果创建新extent 失败,它将会搜索其他undo segmentexpired extent 并重用。

4. 如果其他undo segment 中没有expired extent 可使用,那么它会继续搜索其他undo segmentunexpired extent 并重用。

5. 如果经过以上尝试还没有可用空间,将会返回错误。

V$undostat

EXPSTEALCNT: 尝试请求 expired extent 的次数
EXPBLKREUCNT:
实际使用 expired block
UNXPSTEALCNT:
尝试请求 unexpired extent 的次数
UNXPBLKREUCNT:
实际使用 unexpired block

V$ROLLSTAT 中的常用列
? USN
:回滚段标识
? RSSIZE
:回滚段默认大小
? XACTS
:活动事务数

在一段时间内增量用到的列
? WRITES
:回滚段写入数 ( 单位 :bytes)
? SHRINKS
:回滚段收缩次数
? EXTENDS
:回滚段扩展次数
? WRAPS
:回滚段翻转 (wrap) 次数
? GETS
:获取回滚段头次数
? WAITS
:回滚段头等待次数

你可能感兴趣的:(活动)