第一步:
-----------------查询大于50M的数据库的数据文件
with v as (select file_id,max(block_id+blocks) keep(dense_rank last order by block_id+blocks) blk
from dba_extents group by file_id)
select a.file_name,a.tablespace_name,a.bytes,a.blocks,v.blk,
ceil(v.blk*8/1024) shk2m,round((a.blocks-v.blk)*8/1024) canshk
from dba_data_files a,v 
where a.file_id = v.file_id and (a.blocks-v.blk)*8/1024 > 50---在管理员用于下执行以上语句得出以下结果。
-----------------------------------------------------------------------------------------------------------------------------(注:参数说明, BYTES为数据文件大小,SHK2M为可以缩小到得最小值,CANSHK为可以缩小多少,FILE_NAME为路径,TABLESPACE_NAME为表空间名字)第二步:
-----------------执行以下语句压缩
(以下为例句:)
alter database datafile '/opt/oracle/oradb/oradata/t/t_data' resize 14M;
----语句意思:将dtafile文件cust_data的大小调整为14(注意,这个14M时上步执行出来的结果,允许表压缩到14M)。