ITPub博客

首页 > 应用开发 > IT综合 > 磁盘空间占用的一次调整

磁盘空间占用的一次调整

原创 IT综合 作者:wilson2006 时间:2019-06-23 18:12:06 0 删除 编辑

管辖内的一台监控系统机器空间不大够用,很久就想解决这个问题了,因为是生产库,担心大规模的调整空间会不小心撞到某个BUG上,造成系统宕机,一直没有下手,经过反复试验,终于拟定了一个调整方案,昨天作了实施。

[@more@]问题的发生是这样的,按照原来的监控系统数据采集方案,数据的采集量非常巨大,经过几个月的使用后,磁盘空间越来越紧张,被迫将原来的数据保留策略从7天改为2天,同时将数据导出备份挪至别的机器,将RMAN备份停掉后(同时将系统改为非归档方式),又勉强支持了一段时间,直到今年2月份通过和开发人员的反复讨论,对数据采集方案作了一次较大的调整,同时改动了业务统计规则,空间问题得以大大缓解,现在每天的数据存储量不到原来的10%,但是由于原来的存储方式下,空间分配和占用巨大,表空间仍然无法回缩空间。
查询DBA_FREE_SPACE视图,
select tablespace_name,sum(bytes) from dba_free_space group by tablespace_name ;
发现空闲空间达到了90%,
但是执行alter database datafile resize 又无法改变数据文件的大小,因为在高位上有已经分配空间的object,
原因是ASSM表空间的新空间分配只会使用后续的未使用空间,直到没有可用空间后,才从头进行分配。
使用exp/imp的方式应该是可以的,但是生产库的停机时间会比较长,难以接受。
使用Shrink segment的方法,对这种情况无效。
于是最后想到了用下面的方法来作数据搬迁,然后将原来的表空间drop掉的方法来回收磁盘空间。
下面是操作过程,
1.
-- 分离零散的存储位置不对的表或者索引
-- 检查
select * from user_tables where tablespace_name != 'EGAOMTEST_NEW' ;
select * from user_indexes where tablespace_name != 'EGAOMTEST_IDX' ;
-- 挪动表
select 'alter table ' || table_name || ' move tablespace egaomtest_new ;'
from user_tables where tablespace_name != 'EGAOMTEST_NEW' ;
-- 挪动索引
select 'alter index '||index_name||' rebuild tablespace egaomtest_idx ;'
from user_indexes where tablespace_name not in ('EGAOMTEST_IDX') ;
分别执行上面获得的调整语句

2.
-- 再次检查
select * from user_tables where tablespace_name='EGAOMTEST_NEW' ;

select * from user_indexes where tablespace_name='EGAOMTEST_IDX' ;

select * from user_indexes where status!='VALID';

select * from user_indexes where status='VALID';

select file#,ts#,name,bytes from v$datafile
order by name ;

select * from dba_segments where tablespace_name='EGAOMTEST' ;
select * from dba_extents where tablespace_name='EGAOMTEST' ;

-- 确认没有在旧的tablespace上残留的表,将其删除,
drop tablespace egaomtest including contents and datafiles ;
-- 在操作系统上确认数据文件已经删除掉(有些操作系统上数据文件不能自动删除,手工执行删除操作将其删除掉),
-- 确认数据字典中已经删除正常
select * from v$datafile order by name ;

-- 查看系统磁盘空间占用,从原来的74%降至45%,效果还是很明显的(省了公司买硬盘的钱了呢,呵呵)。
-- 保险起见,执行一次关闭和重新启动,查看日志,确认系统状态完全正常。
-- 同时将系统改为归档模式,空间确认足够的情况,将RMAN增量备份恢复。
-- 至此,系统结束长达数月的非归档模式状态,重归安全状态。
参见这个帖子,
http://www.itpub.net/viewthread.php?tid=948094&highlight=%2Bwilson2006

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/768134/viewspace-1002996/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 关于ORA-3136 Warning
请登录后发表评论 登录
全部评论

注册时间:2018-11-04

  • 博文量
    35
  • 访问量
    32339