Oracle的UNDO表空间使用率100%,是真的满了吗

2025-04-27 22:19:29
推荐回答(1个)
回答1:

UNDO表空间使用率100%了,Oracle数据库的I、U、D、S操作仍然没有问题。Why?

 

先用SQL查一下:
SELECT   tablespace_name, status, SUM (bytes) / 1024 / 1024 "Bytes(M)"
FROM   dba_undo_extents
GROUP BY   tablespace_name, status;
结果为:

上图看出,Undo表空间的状态(STATUS)有三种取值------- ACTIVE, EXPIRED, UNEXPIRED,  他们的含义是:

ACTIVE:  正在使用的undo表空间区域, 例如: 正在执行的没有commit的dml涉及的数据所占用的区域.   状态为ACTIVE的区域不可以被新数据覆盖

EXPIRED: 过期数据,  这个状态说明该区域的数据可以被新数据覆盖,可以理解为空闲区域

UNEXPIRED: 是介于前两者的中间状态, 如果undo表空间的空闲区域和EXPIRED区域都已经消耗光了,则oracle会将新数据覆盖到这个区域, 但是有可能引起某些sql错误,例如快照过旧

上图中的EXPIRED空间有7个多G,所以表空间没有真的“满”。