虽将过时的记录删除了,但表的high water 还是没有变的。
1、你可以用exp/imp把表重新整理一下。
2、把索引重建一下
3、把数据分区或分表。

解决方案 »

  1.   

    同意hrb_qiuyb,另补充如下:
    表删除大量记录后,要回收high water  以下的自由空间,可以运行以下语句:
    sql>alter table table_name deallocate unused;
    这样可以增加表空间的自由空间.
    要增加磁盘的自由空间,在表空间有自由空间的情况下,将数据库文件缩小.例如:
    sql>alter tablespace datafile 'full_path_file_name' resize xxxM;
      

  2.   

    delete 删除并不释放空间,truncate才释放空间,但truncate是整表清空,同意2楼的说法。
      

  3.   

    (alter table deallocate unused keep xM)
    回收高水位标志以上的空间. 
    以下的空间只要移到表。
    select 'alter table '||segment_name||' move tablespace '||tablespace_name||';' from dba_segments 
    where segment_name='&tablename' 
    and segment_type='TABLE'; select 'alter index '||index_name||' rebuild;' from dba_indexes 
    where table_name='&table_name';如果你不信用
    dbms_unused_space查出高水位标志