不知道这是什么意思?我刚刚试过,但是没有发现有什么功能!偶比较笨!
SQL> select * from a;DATEA
---------
02-FEB-00
01-FEB-01
01-JAN-02
02-FEB-03SQL> alter table a deallocate unused ;Table altered.SQL> commit;Commit complete.SQL> select * from a;DATEA
---------
02-FEB-00
01-FEB-01
01-JAN-02
02-FEB-03

解决方案 »

  1.   

    A trial :1. create table ta ( a number , b number)
    2. begin
        for i in 1..400 loop
          insert into ta values ( 1, 1);
          commit;
        end loop;
       end;3. select * from user_segments where segment_name = 'TA'
    bytes   blocks Extents
    71680   35     4 4. delete from ta ;
       commit;              
    select * from user_segments where segment_name = 'TA'
                            
    bytes   blocks Extents
    71680   35     4 --> the hwm is not reset 5. alter  table  ta deallocate  unused  
    bytes   blocks Extents
    61440   30     4   To be very surprised , although I delete all the records then issue deallocate command , only 5 blocks space has been withdrawed . what happen to the left 30 blocks ? I guess it's a bug of oracle7.3 . ( To be frankly , I tried it on my personal oracle7.3 , I was wrong in my previous statement , it is not the new feature in oracle 8i , in fact , it is available since oracle 7.3 at least )
      

  2.   

    Sorry , What I describled above is not so perfect .Please don't expect it would be a magic function . Oracle frees only unused space above the high water  (that is, the point beyond which database blocks have not yet been formatted to receive data). Oracle deallocates unused space beginning from the end of the object and moving toward the beginning of the object to the high water .