各位大侠,最近再研究alter table move,有一些不明白的地方,请指教!创建测试表ttt1
create table t_ttt1 as 
select * from dba_objects创建测试表ttt2
create table t_ttt2 as 
select * from dba_objects
分析两个测试表:
analyze table..查看高水位:
SELECT  table_name,blocks, empty_blocks, num_rows  FROM user_tables 
WHERE table_name like  'T_TTT%'
 
查看段分配:
select segment_name,segment_subtype,bytes,blocks,extents from user_segments where segment_name like  'T_TTT%'
 
查看域分配:select segment_name,extent_id,file_id,bytes,blocks from dba_extents where segment_name like 'T_TTT%' order by 4 desc 
两边中分别删除数据:
delete from t_ttt1 where rownum<10000;delete from t_ttt2 where rownum<10000;ttt1表做MOVE,ttt2 表做shrink
alter table t_ttt1 movealter table t_ttt2  enable row movement;alter table t_ttt2 shrink space************************************************ 
重新查看高水位:
SELECT  table_name,blocks, empty_blocks, num_rows  FROM user_tables 
WHERE table_name like  'T_TTT%'
 
重新查看段分配:
select segment_name,segment_subtype,bytes,blocks,extents from user_segments where segment_name like  'T_TTT%'
 
重新查看域分配:
select segment_name,extent_id,file_id,bytes,blocks from dba_extents where segment_name like 'T_TTT%' order by 4 desc
 网站上有这个说法:
“Move会移动高水位,但不会释放申请的空间,是在高水位以下(below HWM)的操作。而shrink space 同样会移动高水位,但也会释放申请的空间,是在高水位上下(below and above HWM)都有的操作。”
首先我的数据库是11.2的;
从我的测试结果看,无论是move还是shrink,处理完之后的结果都不是16个extents和96个blocks了,它们均剩下15个extents了,而且块的数量也是一个大一个小,move后的表有64个块,shrink后的表是18个块!
有点迷茫了,看着好像move也能释放空间呀……和网上的论述不一样
请高人指点,谢谢!