重建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超级智能客服
相关推荐
宸津-代码粉碎机3 小时前
Spring AI 高危CVE漏洞深度复盘|生产禁跑版本汇总+临时防御+修复方案Roadinforest3 小时前
NoSQL的最终一致性:真的可靠吗?敲代码的嘎仔4 小时前
用 Redis 合并写 + DelayQueue 延迟检测,把视频播放进度写库频率降到 1/60承渊政道4 小时前
Python IDLE鸿蒙PC适配全记录:用 ArkUI 重建编辑、运行、Shell 与基础调试闭环zjh9005304 小时前
Kotlin黑科技:空安全与Java兼容性深度解析码农哈丁4 小时前
从 JVM 到 Cargo:把整个 Kotlin 项目移植到 Rust 的踩坑实录黄昏恋慕黎明4 小时前
博客论坛技术迭代我叫汪枫4 小时前
RAG 进阶:切分、检索、重排序,以及它和 Agent、微调、MCP 都是什么关系承渊政道4 小时前
PostgreSQL 鸿蒙 PC 适配全记录:从原生交叉编译到 HNP 数据库服务闭环冰芒芒4 小时前
构建你的第一个 Agent 项目