oracle缩小表空间

数据库用久了难免会出现没有回收的空间,如果空间太大可使用以下方法进行回收。


查询用个表所占用的空间:

  1. SELECT  
  2. tablespace_name,  
  3. 100*(sum_max-sum_alloc+nvl(sum_free,0))/sum_max AS capa_per,  
  4. (sum_max-sum_alloc+nvl(sum_free,0))/1024/1024  AS capa_free,  
  5. (sum_alloc - nvl(sum_free,0))/1024/1024 as capa_used,  
  6. sum_max/1024/1024 as capa_max,  
  7. 100*nvl(sum_free,0)/sum_alloc As per,  
  8. nvl(sum_free,0)/1024/1024 as free,  
  9. (sum_alloc - nvl(sum_free,0))/1024/1024 as used,  
  10. sum_alloc/1024/1024 as max  
  11. FROM ( SELECT tablespace_name  
  12. sum(bytes) AS sum_alloc  
  13. sum(decode(maxbytes,0,bytes,maxbytes)) AS sum_max  
  14. FROM dba_data_files  
  15. GROUP BY tablespace_name  
  16. )  
  17. ,( SELECT tablespace_name AS fs_ts_name  
  18. sum(bytes) AS sum_free  
  19. FROM dba_free_space  
  20. GROUP BY tablespace_name )  
  21. WHERE tablespace_name = fs_ts_name(+)  
  22. order by 2,3;  

其中MAX为当前占用磁盘空间(单位MB),USED为数据实际所需空间,FREE是可被回收的空间。

假设SYSTEM表MAX为10240M,USED为600M,数据存放于D:\ORADATA\DBA目录下,用以下命令将SYSTEM表空间缩小到610M:

  1. alter database datafile  'D:\ORADATA\DBA\SYSTEM01.DBF' resize 610m;  
其他表空间(如UNDOTBS1、INDX等)方法一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值