ITPub博客

首页 > 数据库 > Oracle > move和shrink的原理和redo的产生 ,利用rowid的含义实用block个数

move和shrink的原理和redo的产生 ,利用rowid的含义实用block个数

原创 Oracle 作者:dotaddjj 时间:2011-09-20 17:06:43 0 删除 编辑

前几篇blog中整理了关于HWM和delete drop truncate的一些关系。补充一下HWM的另外一些东东。

首先减少HWM的方法上次提到了move和shrink

Alter table test09 move

通过move移动对象,但是move之后,需要重建索引,而且move的过程中会影响在线使用

Alter index indexName rebuild

Move原理是创建一个新表,所以需要两倍的空间,然后将原表的数据插入新的表中,然后在删除原来的表和数据,释放空间。可以看出move的过程中数据行的rowid改变了,所以需要重构索引。

利用shrink在线收缩表内的HWM

Alter table test09 enable row movement

Alter table test09 shrink space

因为使用在线收缩空间shrink space是利用了一系列的dML操作来实现,主要是把HWM最后的块放在HWM最前端。

需要说明的是shrink space需要在表空间自动段空间管理,所以system等表空间无法shrink。

降低HWM shrink需要行迁移:

刚开始不清楚shrink的具体细节,主要是移动数据所在的block,要改变数据行所在的block地址,所以肯定需要行迁移来完成。

闪回也需要行迁移

同样在10g中闪回表也需要开启行迁移,闪回也是利用回滚段进行一系列的dml操作,可能改变rowid地址,此时也需要行迁移来保证rowid不会改变。

Move需要重建index shrink不需要:

Alter table test09 shrink space;此时还对索引进行了维护。如果table的index数量较多,维护起来也需要消耗成本,在业务不繁忙时shrink space。

收缩表时一起收缩索引:

Alte table test09 shrink space cascade;

还有一些降低HWM的方法:

1 rename需要回收表,创建test09同名表然后insert进去

2 导出,truncate,导入

上述方法都是利用重建新段时HWM为0然后插入数据来回收的,适用性有限。

查看数据行实际使用了多少数据块,eygle的提供的sql:

Select count(distinct(substr(rowid,1,15))) from test04

来分析下rowid的东东:rowid由4部分组成。

数据对象编号 文件编号 块编号 行编号

OOOOOO FFF BBBBBB RRR

所以rowid的前15位就可以唯一决定数据行是属于某个数据块,上述sql就可以查看表中数据行实际占用的数据块个数。

测试下shrink space生成的redo

SQL> select name,value from v$statname a,v$mystat b

2 where a.statistic#=b.statistic# and a.name='redo size';

NAME VALUE

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

redo size 42568

SQL> alter table test09 shrink space;

Table altered

SQL>

SQL> select name,value from v$statname a,v$mystat b

2 where a.statistic#=b.statistic# and a.name='redo size';

NAME VALUE

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

redo size 150236

在测试过程中发现

alter table test09 enable row movement

analyze table test09 compute statistics

开启行迁移和分析表也会产生少量redo。

这两天开始接触了ASM和RAC,本本买了性能不错装个虚拟机,然后装下linux系统来实现下rac和ASM。有心得了跟大家分享!要学习linux了!

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1055213/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    220
  • 访问量
    1662975