ITPub博客

首页 > Linux操作系统 > Linux操作系统 > rowid会不会改变(2) 发生行迁移

rowid会不会改变(2) 发生行迁移

原创 Linux操作系统 作者:ylw66 时间:2009-08-28 15:31:10 0 删除 编辑

SQL> drop table t;

表已丢弃。

SQL> create table t (x int,y varchar2(2000));

表已创建。

SQL> insert into t select rownum,lpad('a',1000)

  2  from dba_objects where rownum<9;

已创建8行。

SQL> commit;

提交完成。

 

从字段所占长度分析,每块估计能容纳t表的7条记录左右

SQL> @table_blocks

输入 table 的值:  t

原值    4:  from &table) group by f,b

新值    4:  from t) group by f,b

         F          B   COUNT(*)

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

         1      51418          7

         1      51419          1

发现块51418已经满了

记录下此时的rowid

SQL> select rowid,x from t;

ROWID                       X

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

AAAHrlAABAAAMjaAAA          1

AAAHrlAABAAAMjaAAB          2

AAAHrlAABAAAMjaAAC          3

AAAHrlAABAAAMjaAAD          4

AAAHrlAABAAAMjaAAE          5

AAAHrlAABAAAMjaAAF          6

AAAHrlAABAAAMjaAAG          7

AAAHrlAABAAAMjbAAA          8

 

已选择8行。

 

SQL> update t set y=lpad('a',1999) where x=1;

已更新 1 行。

SQL> commit;

提交完成。

x=1的行增大占用空间

dump 51418块,发现row 0上的数据还在,估计可能是使用了pctfree的容量

 

考虑将x=2的行增大占用空间

SQL> update t set y=lpad('a',1999) where x=2;

已更新 1 行。

SQL> commit;

提交完成。

dump 51418块,row 1上没有数据了,取而代之的是个指针,指向容纳数据的新块

tab 0, row 1, @0x1baf

tl: 9 fb: --H----- lb: 0x1  cc: 0

nrid:  0x0040c8db.1

迁移到了 block 编号为 0x0040c8db的块中的 row 1

  1  select dbms_utility.DATA_BLOCK_ADDRESS_FILE(to_number('40c8db','xxxxxxxxxx')) file#

2  ,dbms_utility.DATA_BLOCK_ADDRESS_BLOCK(to_number('40c8db', 'xxxxxxxxxx')) block#

  3 from dual

SQL> /

     FILE#     BLOCK#

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

         1      51419

果然是迁移到了51419块上

此时我们再看看x=2rowid

ROWID                       X

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

AAAHrlAABAAAMjaAAA          1

AAAHrlAABAAAMjaAAC          3

AAAHrlAABAAAMjaAAD          4

AAAHrlAABAAAMjaAAE          5

AAAHrlAABAAAMjaAAF          6

AAAHrlAABAAAMjaAAG          7

AAAHrlAABAAAMjbAAA          8

AAAHrlAABAAAMjaAAB          2

 

当行迁移时,虽然数据的物理位置发生了变化,但rowid不会变

但在一些特殊的操作时,数据的rowid是可能变化的

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

请登录后发表评论 登录
全部评论

注册时间:2009-07-29

  • 博文量
    57
  • 访问量
    94733