数据文件resize回收空间

Posted lvcha001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据文件resize回收空间相关的知识,希望对你有一定的参考价值。

场景说明:

客户 ASM磁盘组,data磁盘组空闲空间90G,空间不足,因此强烈建议回收空间

空间回收方案:

1.数据文件resize,回收部分可用性空间(好处就是能够将ASM磁盘组free大小增加);

2.大的无用对象清理,释放空闲空间(好处就是释放空间所在的表空间,新增数据能够使用删除的大对象原空间,而无需对表空间进行扩容);

 

 

1.回收数据文件,对数据文件进行resize

SQL>select a.file#,a.name,c.tablespace_name,round(a.bytes/1024/1024) CurrentMB,ceil(HWM*a.block_size)/1024/1024 ResizeTo,
(a.bytes-HWM*a.block_size)/1024/1024 ReleaseMB,alter database datafile ||a.FILE#|| resize ||round(ceil(HWM*a.block_size)/1024/1024+5)|| M; ResizeCmd
 from v$datafile a,(SELECT file_id,MAX(block_id+blocks-1) HWM FROM DBA_EXTENTS GROUP BY file_id) b,dba_data_files c where a.file#=b.file_id(+)
 And (a.bytes-HWM*a.block_size)>0 and a.FILE#=c.file_id and c.tablespace_name not in(SYSTEM,SYSAUX) and c.tablespace_name not like%UNDO% order by 6 desc;

SQL> select group_number,name,total_mb/1024 TOTAL_GB,free_mb/1024 FREE_GB,free_mb/total_mb*100 free_percent,state,TYPE,(case when free_mb/total_mb*100 < 15 then ‘*‘ else ‘‘ end ) care from v$ASM_DISKGROUP;


SQL思路,查询每个数据文件中max_block_id *表空间的block_size,进行计算+5m(保守),是数据文件最大的大小,进行resize回收,排除undo,system,sysaux,temp表空间

 

2.大的无用对象清理,释放空闲空间(好处就是释放空间所在的表空间,新增数据能够使用删除的大对象原空间,而无需对表空间进行扩容);

查询数据库中大于2G的对象并列举出来, or ,将数据库中指定的users表空间,top 50对象列举出来
SQL> select * from (select owner,segment_name,segment_type,tablespace_name,round(sum(bytes)/1024/1024/1024,2) "Gbytes" 

from dba_segments where bytes>1024*1024*50 group by owner,segment_name,segment_type,tablespace_name) C1 where C1."Gbytes">2;

or
SQL> select rownum,C1.* from (select owner,segment_name,segment_type,tablespace_name,round(sum(bytes)/1024/1024/1024,2) "Gbytes"
from dba_segments where bytes>1024*1024*50 and tablespace_name=‘USERS‘ group by owner,segment_name,segment_type,tablespace_name order by 4,5) C1 where rownum<50;

 

以上是关于数据文件resize回收空间的主要内容,如果未能解决你的问题,请参考以下文章

oracle 碎片管理和数据文件resize释放表空间和磁盘空间(以及sys.wri$_optstat_histgrm_history过大处理)

回收站视图未显示在片段中

Python图像resize前后颜色不一致问题

是否可以在 OnStop() 回收所有数据并使用保留片段?

是否可以在OnStop()上回收所有数据并使用保留片段?

一旦单击带有 in 片段的回收器列表项,如何将片段意向活动,以及如何获取回收器项目值?