最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎样在Oracle 19c中安全地删除并重建临时表空间
时间:2026-07-03 11:06:46 编辑:袖梨 来源:一聚教程网
不能直接 RESIZE 临时文件是因为 Oracle 不自动回收高位空闲区,控制文件仍标记已分配块,导致 ORA-03297;真实空闲空间需查 v$temp_space_header,而非 dba_free_space。
为什么不能直接 ALTER DATABASE TEMPFILE ... RESIZE
临时文件一旦扩展,oracle 不会自动回收高位未使用的区(extent),resize 会直接报 ora-03297。这不是磁盘空间真满,而是控制文件里仍标记着那些“已分配但空闲”的块。查真实空闲空间要用:select tablespace_name, round((free_blocks*block_size)/1024/1024) free_mb from v$temp_space_header,不是 dba_free_space。
删除旧 TEMP 表空间前必须绕过活跃会话
执行 DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES 报 ORA-60100(sort segment 阻塞)是 Oracle 19c 常见现象,说明仍有会话在用旧临时段。此时不能硬杀,而应先切换默认表空间:
- 新建中转表空间:
CREATE TEMPORARY TABLESPACE temp2 TEMPFILE '+DATADG01' SIZE 1G AUTOEXTEND OFF - 切全局默认:
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2 - 确认无残留使用:
SELECT sid, serial#, username FROM v$session WHERE tempseg_used > 0 AND tablespace = 'TEMP'—— 结果必须为空
重建后要清理中转表空间和用户级设置
新 TEMP 表空间建好后,别忘了收尾动作,否则中转表空间长期占用资源,且部分用户可能仍绑定旧名:
- 重建主表空间:
CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '+DATADG01' SIZE 20G AUTOEXTEND OFF - 重设默认:
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP - 删中转:
DROP TABLESPACE temp2 INCLUDING CONTENTS AND DATAFILES - 逐个修正用户:
ALTER USER scott TEMPORARY TABLESPACE TEMP(DBA_USERS中TEMPORARY_TABLESPACE列值不随数据库默认值自动更新)
损坏 tempfile 时别碰 RMAN
ORA-01157 出现时,RMAN 对临时文件完全无效——RESTORE、RECOVER、DELETE 全部报错,因为 tempfile 不写归档、不参与一致性检查。唯一合法操作是:ALTER DATABASE TEMPFILE '/path/to/broken.dbf' OFFLINE DROP,它只清理控制文件元数据,不碰磁盘文件。之后再走新建表空间流程。
ORA-01652。真正麻烦的从来不是命令敲错,而是没盯住 v$session 和 v$sort_usage 的实时状态。
相关文章
- 刀剑缭乱2026公测兑换码大全一览 07-05
- 崩坏星穹铁道4.0卡池7个新角色一览 07-05
- 明日方舟终末地开服工业蓝图一览 工业蓝图作用与使用思路解析 07-05
- 原神梦之树怎么开启 梦之树开启条件 07-05
- 帕瓦勇者传说持续伤害阵容搭配推荐 07-05
- 明日方舟:终末地全新玩法 蚀像寻遗怎么玩介绍 07-05