深入探讨Oracle数据库10g的Shrink机制(2)

来源:未知 责任编辑:责任编辑 发表时间:2015-09-17 09:42 点击:


PL/SQL 过程已成功完成。

 

 

这里,table my_objects的HWM下有679个block,其中,free space为25-50%的block有205个,free space为50-75%的block有180个,free space为75-100%的block有229个,full space的block只有45个,这种情况下,我们需要对这个table的现有数据行进行重组。


要使用assm上的shink,首先我们需要使该表支持行移动,可以用这样的命令来完成:


alter table my_objects enable row movement;


现在,就可以来降低my_objects的HWM,回收空间了,使用命令:


alter table bookings shrink space;


我们具体的看一下实验的结果:


SQL> alter table my_objects enable row movement;


表已更改。

 


SQL> alter table my_objects shrink space;


表已更改。

 


SQL> exec show_space(MY_OBJECTS,DLINGER);


Total Blocks............................265


Total Bytes.............................2170880


Unused Blocks...........................2


Unused Bytes............................16384


Last Used Ext FileId....................6


Last Used Ext BlockId...................308


Last Used Block.........................3

 


PL/SQL 过程已成功完成。

 


SQL> exec show_space_assm(MY_OBJECTS,DLINGER);


free space 0-25% Blocks:................0


free space 25-50% Blocks:...............1


free space 50-75% Blocks:...............0


free space 75-100% Blocks:..............0


Full Blocks:............................249


Unformatted blocks:.....................0

 


PL/SQL 过程已成功完成。

 

 

在执行玩shrink命令后,我们可以看到,table my_objects的HWM现在降到了264的位置,而且HWM下的block的空间使用状况,full space的block有249个,free space 为25-50% Block只有1个。

 


我们接下来讨论一下shrink的实现机制,我们同样使用讨论move机制的那个实验来观察。


SQL> create table TEST_HWM (id int ,name char(2000)) tablespace ASSM;

 


Table created

 

 

往table test_hwm中插入如下的数据:


insert into TEST_HWM values (1,aa);


insert into TEST_HWM values (2,bb);


insert into TEST_HWM values (2,cc);


insert into TEST_HWM values (3,dd);


insert into TEST_HWM values (4,ds);


insert into TEST_HWM values (5,dss);


insert into TEST_HWM values (6,dss);


insert into TEST_HWM values (7,ess);


insert into TEST_HWM values (8,es);


insert into TEST_HWM values (9,es);


insert into TEST_HWM values (10,es);

 


我们来看看这个table的rowid和block的ID和信息:


SQL> select rowid , id,name from TEST_HWM;

 


ROWID ID NAME


------------------ ---------- ----- ---------


AAANhqAAGAAAAFHAAA 1 aa


AAANhqAAGAAAAFHAAB 2 bb

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 在oracle数据库下使用iSQL*Plus DBA访问数据库
  • oracle 让sys用户可以使用isqlplus
  • Oracle数据库Constraint约束的常用操作及异常处理
  • ORACLE10gr2数据导入MySQL方案
  • OCP043第十五讲 Database Security
  • export/import的使用
  • Oracle行列转换小结
  • Table函数使用简介
  • Bulk Collect性能分析(zz)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1