一 前言
最近发现磁盘空间有3T的性能机器出现了磁盘空间不足的现象,该机器主要部署ORACLE数据库,所以,猜测很可能是表空间数据文件变更导致的。接下来,就需要一步步的排查问题了,最终确认是ORACLE BLOCK_ID惹的祸。
二 定位磁盘空间占用情况
首先需要确定是哪些文件占用空间,使用du -sh * ,果不其然,有个表空间增加了20个数据文件,而且每个数据文件设置30G,Word天,谁这么狠,居然找不到元凶,好吧,那我就任意处置了,不能影响后面的性能测试。
三 删除数据文件
既然发现这么多数据文件,当然想直接drop掉,于是,不以为然的执行alter tablespace TEST drop datafile '/oradata/dat20.dbf';先把最后一个干掉,结果执行报错“ORA-03262: THE FILE IS NON-EMPTY”,呵,居然有数据,直接删不掉。于是,就想查询这个表空间的表,把数据TRUNCATE掉,但又考虑到该表空间TABLE就有上千张,而且不能确定哪张表可删,不能太鲁莽,事实证明,真和数据无关。
四 退而求其次-RESIZE 数据文件释放空间
既然不能drop 数据文件,那就resize它,就不信拿不回空间。于是,先查下可以释放多少空间出来,先执行如下命令:
select d.file_name,d.file_id,d.bytes/1024/1024 as d_byte,sum(f.bytes/1024/1024) as free
因篇幅问题不能全部显示,请点此查看更多更全内容