阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Aix下删除Oracle表空间以及对应的数据文件后空间不释放

242次阅读
没有评论

共计 974 个字符,预计需要花费 3 分钟才能阅读完成。

今天例行 Oracle 数据库维护时,因为一个文件系统已经达到 82%,而且又要创建新的分区表空间,所以删掉了该分区表最前面两个分区,然后删掉对应的表空间及数据文件(约 15G),用下面语句:

alter table tm_bus_site_his drop partition p_site200806_a;

DROP TABLESPACE  tm_index200805_a INCLUDING CONTENTS and datafiles  cascade constraints; 

删掉以后 发现该文件系统仍然是 82%,占用的存储空间仍旧没有释放,是什么原因呢?

从网上搜索到下面的解释:

一般说来不会出现 rm 掉不释放空间的情况
出现这样的情况一般是由于有进程在向文件中写数据或有进程正在访问文件
而此时 rm 文件则会出现不释放空间的情况。

理解这样的问题需要理解 rm 的操作内含
一个文件的存放有数据部分和指针部分,而指针位于文件系统的头
删除操作系统的一个文件与 oracle drop 表的实质有些相似
处理掉指针,文件数据部分占用的空间就可以写入新内容了
之所以出现 rm 不释放即为有进程在用这个文件而引起操作系统认为这个文件未实质释放,从而 df 或 bdf 空间统计不正确

这一类问题的解决方法一般说来可以重启操作系统,重新 umount 及 mount 那个文件系统
这并不是一个好方法

建议的操作方法如下:
1、下载一个 lsof 软件装上,google 上可以搜到
2、找到正在用被删文件的进程
  lsof | grep deleted
3、kill 掉相应的进程空间就释放了

其它建议:
1、清理 alert.log listerner.log 这些日志文件时最好用 ”> 文件 ” 这样的操作方式,不要用 rm。
2、清理归档日志最好用 backup … delete input 这样的方式。
3、如果你的操作系统总出现 rm 不释放空间的问题, 该请 sa 好好查查系统问题了, 同时可以在 rm 前用 lsof 看一下有无进程在用这个文件。
4、解决问题的方法很多,最好不要用重启数据库或重启操作系统这样的方法。

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130312.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计974字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中