概述
今天主要简单介绍一下怎么去回收表空间大小,下面一起了解一下~这块忘记放到ORACLE dba实战脚本总结里面了,大家有空也可以放到一起..
1、确定高水位,这个决定你的文件能缩小到多少
select /*+ ordered use_hash(a,b,c) */ a.file_id, a.file_name, a.filesize, b.freesize, (a.filesize - b.freesize) usedsize, c.hwmsize, c.hwmsize - (a.filesize - b.freesize) unsedsize_belowhwm, a.filesize - c.hwmsize canshrinksize from (select file_id, file_name, round(bytes / 1024 / 1024) filesize from dba_data_files) a, (select file_id, round(sum(dfs.bytes) / 1024 / 1024) freesize from dba_free_space dfs group by file_id) b, (select file_id, round(max(block_id) * 8 / 1024) HWMsize from dba_extents group by file_id) c where a.file_id = b.file_id and a.file_id = c.file_id and a.file_name like '%lob3%' order by unsedsize_belowhwm desc
说明:
- File_id : 文件编号
- File_name: 文件名称
- File_size: 数据文件占用磁盘空间大小
- Freesize:文件中被标记为free的空间大小
- Usedsize: 使用的空间大小。
- Hwmsize: 已经分配出去的空间大小,如果希望通过alter database datafile … resize integerM回收空间,将需要这个值作为参考,不能回收到这个值之下,否则会报错。
- unsedsize_belowhwm: 在HWM(高水位标记线之下的空闲空间数),这个是理论上的可以回收的空间大小。
- canshrinksize: 这个是实际大小与HWM标记之间的差,就是还没有分配出去的空间大小。
![7e913b90b8cdc29cf7b2c1861804483d.png](https://img-blog.csdnimg.cn/img_convert/7e913b90b8cdc29cf7b2c1861804483d.png)
2、计算datafile可以resize收缩的空间,也就是必须剩余部分其他对象正在使用的空间
select a.file#, a.name, 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.name || ''' resize ' || ceil(HWM * a.block_size / 1024 / 1024) || 'M;' ResizeCMD from v$datafile a, (select file_id, max(block_id + blocks - 1) HWM from dba_extents where file_id in (select b.file# From v$tablespace a, v$datafile b where a.ts# = b.ts# and a.name = 'LOB3') group by file_id) b where a.file# = b.file_id(+) and (a.bytes - HWM * block_size) > 0 order by 5
![2962e42f213e391c46b392c5420c357c.png](https://img-blog.csdnimg.cn/img_convert/2962e42f213e391c46b392c5420c357c.png)
3、开始收缩数据文件
alter database datafile '+DATA/otmdb/datafile/lob307.dbf' resize 10866M;alter database datafile '+DATA/otmdb/datafile/lob305.dbf' resize 10871M;alter database datafile '+DATA/otmdb/datafile/lob306.dbf' resize 10871M;alter database datafile '+DATA/otmdb/datafile/lob308.dbf' resize 10861M;alter database datafile '+DATA/otmdb/datafile/lob303.dbf' resize 18531M;alter database datafile '+DATA/otmdb/datafile/lob304.dbf' resize 15266M;alter database datafile '+DATA/otmdb/datafile/lob301.dbf' resize 11371M;
![4c1153692aa0bef5454711727bf90ec5.png](https://img-blog.csdnimg.cn/img_convert/4c1153692aa0bef5454711727bf90ec5.png)
4、检查
1、查看表空间大小
![7769e6412c9eb49c47cc0d596ecd3520.png](https://img-blog.csdnimg.cn/img_convert/7769e6412c9eb49c47cc0d596ecd3520.png)
2、查看ASM磁盘空间大小
![e94ac9aa627b5ad39aec87a17f90c5ed.png](https://img-blog.csdnimg.cn/img_convert/e94ac9aa627b5ad39aec87a17f90c5ed.png)
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
![b41c0b72bc8b9d6f037689a16008f0d3.gif](https://img-blog.csdnimg.cn/img_convert/b41c0b72bc8b9d6f037689a16008f0d3.gif)