oracle dbf文件压缩

请叫我旋转哥 2019-06-21 05:11:52
我有一个表空间“ZJSZYJC”,因为单个文件32G的限制,附加了多个dbf文件
最近服务器磁盘容量紧张,所以我删除了这个表空间的许多表,用的drop table XX purge命令。目前通过网上找的一段SQL查出来该表空间空闲空间非常多,如图
但是我查找该表空间对应的数据文件时,竟然发现没有一个该表空间的dbf是可以来resize来调整大小的

明明这个表空间空闲了这么多,这是为什么。用的drop table XX purge命令是不是删除表的同时没有清除高水位,那么为什么表空间提示空闲了这么多?希望大佬们帮忙
...全文
299 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2019-06-21
  • 打赏
  • 举报
回复
这个服务器,是否可以停机,或者说可以接受的停机时间是多长。

如果时间允许,可以把这个表空间下的数据,都导出来(exp 或 expdp 都可以),再删除这些对象,再收缩文件,再导入(imp 或 impdp)。

move 表可以短暂的锁表,对停机时间短的服务器,可以分批处理这些表,就是操作上略麻烦一些,还要处理索引这些对象。
minsic78 2019-06-21
  • 打赏
  • 举报
回复
降低表段的高水位是不够的,重要的是要降低数据文件中的“高位水”,要将数据文件resize下来的代价确实太高了,你可以试着将在这个表空间下的表都move一下试试,但不确定这种move法,能否将你的数据往数据文件的前端移动,如果不能,这个方法也不行。 比较好的方法是新建表空间再move过去,然后drop掉原来的表空间,但鉴于你的文件系统上已经没有太多剩余空间,另外可以使用的方法是:先将现在的数据导出,然后重建表空间并导入数据。如果可以提供另外的文件系统(临时的也可以),那么可以先将表空间建到其他可用的文件系统上,将原表空间上的表move过去,将原表空间重建后,再move回来,只是操作起来也相当繁琐。

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧