重建TEMP表空间是最稳妥解法,因其不自动回收已分配临时段;需新建temp2、切换默认、确认无会话使用旧TEMP、再drop tablespace including contents and datafiles。temp 表空间不释放空间,不是因为没清理,而是因为 oracle 默认不自动回收已分配的临时段------直接重建 temp 是最稳妥的解法。TEMP 表空间使用率长期 100% 却查不到活跃排序这是典型现象:dba_temp_free_space 显示已用 100%,但 vsort_usage 或 vsession 找不到大排序会话。原因在于临时文件(tempfile)一旦扩展,Oracle 不会自动收缩,即使所有排序结束,空间仍被标记为"已分配但空闲"。别信 alter database tempfile ... resize 能直接缩容------若高位有未释放的区(extent),会报错 ORA-03297: file contains used data beyond requested RESIZE value检查真实空闲空间用:select tablespace_name, round((free_blocks*block_size)/1024/1024) free_mb from vtemp_space_header;(注意是 vtemp_space_header,不是 dba_free_space)临时表空间不支持 shrink space,任何试图对 tempfile 做 shrink 的操作都会失败重建 TEMP 表空间的最小安全步骤必须在数据库 open 状态下完成,无需停机,但需确保无应用正在执行大规模排序或建索引(否则新 TEMP 尚未就绪时会报错 ORA-01652: unable to extend temp segment)。新建临时表空间:create temporary tablespace temp2 tempfile '/u01/oradata/ORCL/temp02.dbf' size 1024m autoextend on next 100m maxsize 8g;切换默认临时表空间:alter database default temporary tablespace temp2;确认无会话还在用旧 TEMP:select sid, serial#, username, program from v$session where tempseg_used > 0 and tablespace = 'TEMP';(结果应为空)删除旧 TEMP:drop tablespace temp including contents and datafiles;(加 including contents 才能删掉里面的临时段)为什么不能只删 tempfile、保留表空间?临时表空间可以没有 tempfile,但此时任何需要排序的操作都会立即失败------Oracle 不允许 tempfile 全部 offline 或全部被 rm 掉后还维持表空间存在。 MacsMind 电商AI超级智能客服
相关推荐
WL_Aurora12 小时前
【每日一题】贪心IT策士13 小时前
Python 中间件系列:redis 深入浅出todoitbo13 小时前
WHERE 子句中的函数执行顺序与副作用风险分析jiayong2313 小时前
MySQL 8.0 Root 用户远程登录配置完整指南数智化管理手记13 小时前
设备总停机?找准根源+TPM核心逻辑,筑牢零故障基础Dxy123931021613 小时前
Python Pillow库:`img.format`与`img.mode`的区别详解zhangshuang-peta13 小时前
MCP + OpenClaw:执行框架如何被“约束成系统”java1234_小锋13 小时前
说一下Spring的事务传播行为?苏三说技术13 小时前
美团二面:高并发下如何保证接口幂等性?༒࿈南林࿈༒13 小时前
刺猬猫小说下载