UNDO表空间显示100%通常并非真无空间,而是UNEXPIRED区段堆积过多,根源多为自动调优将tuned_undoretention异常拉高导致已提交undo无法回收;应优先查dba_undo_extents中ACTIVE、UNEXPIRED、EXPIRED占比,并通过关闭_undo_autotune和重设undo_retention来治本。

UNDO表空间使用率显示100% ≠ 真的没空间了,绝大多数情况是 UNEXPIRED 区段堆积太多,而 Oracle 的自动调优机制把 tuned_undoretention 拉得远超业务实际需要,导致已提交事务的 undo 数据“卡”在未过期状态,无法被回收。
查 STATUS 分布比看总使用率重要十倍
别只盯着 dba_tablespace_usage_metrics 或简单除法算出来的“100%”。真正要盯的是 dba_undo_extents 里各 STATUS 的占比:
-
ACTIVE高 → 有长事务没提交,查v$transaction和对应v$session,重点关注start_time很老的会话 -
UNEXPIRED占比 >80%,EXPIRED极少 → 典型的自动调优失控,不是空间不够,是保留时间被 Oracle 自己设成了几万秒 -
EXPIRED已占多数但使用率还是100% → 检查数据文件是否禁用了AUTOEXTEND,或表空间被锁(比如误执行了ALTER TABLESPACE ... OFFLINE)
执行这个查询直接看分布:
SELECT status, COUNT(*) cnt, ROUND(SUM(bytes)/1024/1024, 2) mb FROM dba_undo_extents WHERE tablespace_name = (SELECT UPPER(value) FROM v$parameter WHERE name = 'undo_tablespace') GROUP BY status ORDER BY status;
验证 tuned_undoretention 是否异常膨胀
Oracle 10g+ 的自动调优会根据表空间大小反向推算保留时间,完全脱离业务真实需求。运行:
SELECT MAX(tuned_undoretention) max_tuned, MAX(maxquerylen) max_query_sec FROM v$undostat WHERE begin_time > SYSDATE - 1;
关键判断点:
-
max_tuned超过86400(24小时),甚至到几十万秒 → 基本可断定是自动调优 bug -
max_query_sec很小(比如300),但max_tuned却高达259200(72小时)→ 典型脱钩,尤其在非自动扩展的数据文件上高发 - RAC 环境下各节点值差异大 → 查
gv$undostat,说明某节点存在隐式长事务(如 DBLINK 查询卡住)
关掉 _undo_autotune 是最快最稳的止血操作
这不是临时 workaround,而是生产环境推荐的标准动作。前提确认两点:Oracle ≥ 10.2.0.4,且业务不强依赖超长闪回(比如要求保留 7 天以上历史数据)。
执行:
ALTER SYSTEM SET "_undo_autotune" = FALSE SCOPE=BOTH; ALTER SYSTEM SET undo_retention = 3600 SCOPE=BOTH;
注意:
- 改完不会立刻释放空间,现有
UNEXPIRED区段仍按旧tuned_undoretention计时;新设置只对后续事务生效 - 空间真正回落需要等待当前
UNEXPIRED区段自然过期(按新undo_retention倒计时) - 如果 RAC,加
SID='*'确保所有节点生效:ALTER SYSTEM SET "_undo_autotune" = FALSE SCOPE=BOTH SID='*';
切换 UNDO 表空间是兜底方案,但代价高
仅当关闭自动调优 + 重设 undo_retention 后仍不释放,或当前 UNDO 表空间数据文件已写满且无法扩容时才考虑。
核心风险点:
- 切换期间,原 UNDO 表空间的回滚段必须全部变为
OFFLINE,否则ALTER SYSTEM SET undo_tablespace=...会失败 -
v$rollstat中仍有ONLINE回滚段,说明有活跃事务或分布式事务(如 DBLINK)卡住,不能硬切 - 12c+ PDB 环境下,需先
ALTER SESSION SET CONTAINER=pdb_name再操作,否则改的是 CDB 级配置
切换后,原 UNDO 表空间不会自动清空,要等所有段 offline 后手动 DROP TABLESPACE ... INCLUDING CONTENTS AND DATAFILES。


















