不能直接删除默认临时表空间,因为Oracle内核强制保护正在使用的TEMP表空间,只要存在活跃或残留临时段(v$sort_segment中仍有记录),DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES就会失败并报ORA-01652或ORA-60100;必须先创建新临时表空间、切换默认设置、确认无任何会话或残留段占用后,再执行带INCLUDING CONTENTS AND DATAFILES的删除命令才能彻底释放磁盘空间。

为什么不能直接 DROP TABLESPACE temp?
因为 Oracle 会拒绝删除正在被使用的默认临时表空间,强行执行 DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES 会卡住或报 ORA-60100(sort segment 阻塞)或 ORA-01652(无法扩展临时段)。这不是权限问题,而是数据库内核强制保护机制——只要还有任意一个会话的 tempseg_used > 0,就禁止删掉它。
怎么确认旧 TEMP 还有没有活跃使用?
别只看 v$sort_usage 是否为空。这个视图只显示当前正在写入临时段的会话,但有些已断开连接却未释放临时段的“僵尸段”仍留在 v$sort_segment 中。
- 查实时活跃排序:
SELECT sid, serial#, username, sql_id, blocks * 8 / 1024 AS mb_used FROM v$session s, v$sort_usage u WHERE s.saddr = u.session_addr; - 查残留临时段(即使会话已断):
SELECT segment_name, session_addr FROM v$sort_segment WHERE tablespace_name = 'TEMP'; - 再用
SELECT sid, serial#, username FROM v$session WHERE saddr IN (SELECT session_addr FROM v$sort_segment WHERE tablespace_name = 'TEMP');确认这些段是否还绑着活会话
如果第二条有结果但第三条没返回,说明是残留段——此时不需 kill,等业务低峰或重启实例更稳妥;若第三条有结果,必须 kill 或等其自然结束。
重建流程中哪些命令必须加 INCLUDING CONTENTS AND DATAFILES?
只有 DROP TABLESPACE 命令必须带 INCLUDING CONTENTS AND DATAFILES。漏掉 INCLUDING CONTENTS,只删字典元数据,物理 tempfile 文件还在磁盘上;漏掉 AND DATAFILES,Oracle 不会删操作系统文件,磁盘空间不释放。
其他关键点:
-
CREATE TEMPORARY TABLESPACE时路径要确保有足够空间、权限可写,建议用新路径(如/u02/...),避免和原 tempfile 路径冲突导致ORA-25153 -
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE后,DBA_USERS里用户字段TEMPORARY_TABLESPACE不会自动更新,得手动执行ALTER USER xxx TEMPORARY TABLESPACE temp_new; - 应用连接池(如 Tomcat JDBC Pool、Spring Boot HikariCP)会复用旧连接,这些连接仍指向旧 TEMP,必须重启应用或清空连接池,否则照样报
ORA-01652
resize tempfile 为什么总是失败?
ALTER DATABASE TEMPFILE '/path/to/temp01.dbf' RESIZE 512M 几乎必然报 ORA-03297:文件包含超出请求大小的已用数据。这不是磁盘真满,而是 Oracle 控制文件仍标记高位 extent 为“已分配”,哪怕里面全是空闲块。
真实空闲空间只能从 v$temp_space_header 查:SELECT tablespace_name, round((free_blocks * block_size) / 1024 / 1024) free_mb FROM v$temp_space_header; —— 别信 DBA_FREE_SPACE,它对临时表空间无效。
临时文件不支持 SHRINK SPACE,也不参与 RMAN 备份恢复,ALTER DATABASE TEMPFILE ... OFFLINE DROP 只能清理控制文件记录,不能回收空间。唯一干净解法:建新、切默认、删旧。


















