首页 > 数据库 >Oracle 19c安全删除与重建临时表空间

Oracle 19c安全删除与重建临时表空间

来源:互联网 2026-07-04 08:53:17

在Oracle运维中,临时表空间的操作看似简单,实则暗藏诸多陷阱。当需要缩小TEMP文件时,直接执行ALTER DATABASE TEMPFILE … RESIZE通常会导致ORA-03297错误。该错误并非磁盘空间真正不足,而是Oracle对临时文件的高位未使用区不会自动回收。控制文件中这些块的标

在Oracle运维中,临时表空间的操作看似简单,实则暗藏诸多陷阱。当需要缩小TEMP文件时,直接执行ALTER DATABASE TEMPFILE … RESIZE通常会导致ORA-03297错误。该错误并非磁盘空间真正不足,而是Oracle对临时文件的高位未使用区不会自动回收。控制文件中这些块的标记仍为“已分配”,尽管实际未被使用。若要查询临时表空间的真实空闲空间,应使用v$temp_space_header,而非dba_free_space——后者对临时表空间而言具有误导性。

Oracle 19c安全删除与重建临时表空间

长期稳定更新的攒劲资源: >>>点此立即查看<<<

为什么不能直接使用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 TEMPDBA_USERSTEMPORARY_TABLESPACE列的值不会随数据库默认值自动更新)

损坏tempfile时不要使用RMAN

当出现ORA-01157错误时,RMAN对临时文件完全无效——RESTORERECOVERDELETE均会报错,因为临时文件不写入归档日志,也不参与一致性检查。唯一合法的操作是:ALTER DATABASE TEMPFILE '/path/to/broken.dbf' OFFLINE DROP,该命令仅清理控制文件中的元数据,不会操作磁盘文件。随后再走新建表空间的流程。

重建过程本身不需要重启数据库,但整个流程依赖应用侧没有大规模排序或建索引操作。即使只遗漏一个长事务中的排序,也可能在切换瞬间触发ORA-01652。真正的难点从来不是敲错命令,而是未能实时监控v$sessionv$sort_usage的当前状态。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。