oracle安装磁盘过小

今天在测试一个数据导入的时候,悲惨的发现硬盘又被数据文件占满了,最大的一个表空间有34G,其他的都有好几个G。我的用户所关联的表都删除了,但是表空 间不能自己释放。找到了下面一条SQL语句,它的作用是查询(拼接)出缩小表空间文件(datafile)的语句,默认是计算所有的表空间文件,给出可以 释放的大小。根据它给出的结果,执行类似“ alter database datafile 'E:\ORACLE\TEST_DATA03.DBF' resize 1208M;”的语句,就可以立竿见影的看到压缩表空间的效果了。

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        group by file_id) b where a.file# = b.file_id(+) and (a.bytes - HWM *block_size)>0 order by 5

 执行完sql执行,将RISECMD拷贝出来进行执行即可