在Oracle 19c中如何安全收缩TEMP临时表空间?

落枫同学_6584

落枫同学_6584

2026-11-01

901人浏览

原创

唯一安全、彻底释放磁盘空间的方法是重建临时表空间:新建temp2、切换默认、确认旧TEMP无活跃会话、DROP INCLUDING CONTENTS AND DATAFILES;SHRINK SPACE和RESIZE在19c中对TEMP无效,因底层不支持段级收缩且高位extent残留导致ORA-03297或静默失败。

在oracle 19c中如何安全收缩temp临时表空间?

别用 ALTER DATABASE TEMPFILE ... RESIZE,也别信 SHRINK SPACE 能自动生效——19c 中对 TEMP 表空间执行 SHRINK SPACE 会静默失败,RESIZE 大概率报 ORA-03297;唯一安全、彻底释放磁盘空间的方法是重建临时表空间。

为什么 SHRINK SPACE 在 19c 中看似成功实则无效

Oracle 文档明确限定:SHRINK SPACE 只适用于永久表空间中的段(segment),而临时表空间使用的是临时文件(tempfile),其空间管理不走段级逻辑。即使命令执行无报错,DBA_TEMP_FILES.BYTES 和磁盘实际占用都不会变。这不是权限或语法问题,是底层设计限制。

常见误判点:

  • 看到 v$version 显示 11.1.0.0 或更高,就以为支持 TEMP SHRINK —— 实际上该功能在 11g 是“伪支持”,仅对极简场景(如刚建完空 TEMP)有效;19c 已彻底移除逻辑有效性
  • 查 DBA_FREE_SPACE 或 DBA_TEMP_FILES 判断空间是否“真满” —— 这两个视图根本不反映临时段实时可分配状态
  • 执行 ALTER TABLESPACE temp SHRINK SPACE 后立刻查 df -h —— 磁盘空间纹丝不动,因为没真正删文件

怎么确认 TEMP 真的“假满”而不是磁盘真爆了

临时文件扩展后高位区(high watermark)残留已分配但空闲的 extent,控制文件仍标记为“已用”,导致 RESIZE 必然失败。真实可用空间必须看 v$temp_space_header:

QuantOracle
QuantOracle

63个确定性量化金融计算器 + 10个通过MCP的复合工作流。期权定价、Greeks、奇异衍生品、风险指标、投资组合优化……

下载
  • FREE_BLOCKS 字段才是当前可立即重用的块数,不是估算值
  • 计算真实空闲 MB:SELECT tablespace_name, ROUND((free_blocks * block_size) / 1024 / 1024) free_mb FROM v$temp_space_header;
  • 如果 free_mb 接近 0,哪怕 DBA_TEMP_FILES.BYTES 显示还有 30G,也会立刻触发 ORA-01652

生产库安全重建 TEMP 表空间的最小必要步骤

整个过程数据库在线,但必须避开大排序、建索引、ETL 等高峰期,否则新 TEMP 尚未接管时可能因资源争抢失败。

  • 新建中转 TEMP 表空间:CREATE TEMPORARY TABLESPACE temp2 TEMPFILE '/u01/oradata/ORCL/temp02.dbf' SIZE 2G AUTOEXTEND ON NEXT 100M MAXSIZE 8G;(路径、大小按 ASM 或文件系统实际规划)
  • 切换全局默认:ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;(注意:只影响新登录会话,老会话仍用旧 TEMP)
  • 确认旧 TEMP 无活跃使用:SELECT sid, serial#, username, program FROM v$session WHERE tempseg_used > 0 AND tablespace = 'TEMP'; —— 结果必须为空;若有残留,等它自然结束或联系业务方中止长事务,不要硬杀
  • 删除旧表空间:DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;(INCLUDING CONTENTS 不可省,否则物理文件留底)

重建后必须做的三件事,否则等于白干

很多人删完旧 TEMP 就以为结束,结果很快发现空间又涨回来、用户报错、甚至备库失效:

  • 重建后的 TEMP 表空间名若与原名不同(比如叫 temp2),需重设回标准名:CREATE TEMPORARY TABLESPACE temp TEMPFILE ... + ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
  • 逐个修正用户级绑定:ALTER USER scott TEMPORARY TABLESPACE temp; —— DBA_USERS.TEMPORARY_TABLESPACE 不随数据库默认值自动更新
  • ADG 备库必须手动补临时文件:ALTER TABLESPACE temp ADD TEMPFILE '/u01/oradata/CDB1/PDB1/temp01.dbf' SIZE 100M;,否则 switchover 后立刻 ORA-25153

真正麻烦的从来不是命令敲错,而是没盯住 v$session 和 v$sort_usage 的实时状态;哪怕一个长事务里藏着一次 ORDER BY,都可能让整个切换卡在最后一步。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

oracle

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

2023.10.12

4663

8

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.27

971

4

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

2024.02.23

1229

5

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

6661

10

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

3403

4

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

2024.04.07

6640

11

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

2024.04.29

9141

6

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1230

5

sql中删除一列的命令是什么
sql中删除一列的命令是什么

在sql中,使用alter table语句可以删除一列,语法为:alter table table_name drop column column_name。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1092

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程