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

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

首先减少HWM的方法上次提到了moveshrink

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;此时还对索引进行了维护。如果tableindex数量较多,维护起来也需要消耗成本,在业务不繁忙时shrink space

收缩表时一起收缩索引:

Alte table test09 shrink space cascade

还有一些降低HWM的方法:

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

2 导出,truncate,导入

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

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

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

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

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

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

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

[@more@]

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

转载于:http://blog.itpub.net/25362835/viewspace-1055213/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值