查看: 51543|回复: 74

[精华] 关于block中数据的存储和重组的探究

[复制链接]
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
发表于 2003-4-14 12:49 | 显示全部楼层 |阅读模式
前言: 在block内部oracle的数据到底是怎么存储的,通过rowid方式的时候又是怎样的,insert/delete/update发生的时候又是怎样的,想仔细探讨一下

先交代block里面数据的基本结构:

SQL> create table tn(a number, b varchar2(1000));

Table created.

SQL> insert into tn select rownum, 'wwweeerrrttt' from all_tables where rownum < 11;

10 rows created.

SQL> commit;

Commit complete.

SQL> exec show_space('tn');
Free Blocks.............................1
Total Blocks............................16
Total Bytes.............................131072
Unused Blocks...........................14
Unused Bytes............................114688
Last Used Ext FileId....................3
Last Used Ext BlockId...................1954
Last Used Block.........................2
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2003-4-14 12:54 | 显示全部楼层
SQL> alter system dump datafile 3 block  1955;

System altered.


Block header dump:  0x00c007a3
Object id on Block? Y
seg/obj: 0x66b7  csc: 0x00.1891b8a  itc: 1  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0001.011.000000e8    uba: 0x00803494.0147.07  --U-   10  fsc 0x0000.01891b8c

data_block_dump
===============
tsiz: 0x1fb8
hsiz: 0x26
pbl: 0x0ba76c44
bdba: 0x00c007a3
flag=-----------
ntab=1
nrow=10
frre=-1
fsbo=0x26
fseo=0x1efa
avsp=0x1ed4
tosp=0x1ed4
0xeti[0]        nrow=10        offs=0    本块存在10条记录
0x12: pri[0]        offs=0x1efa  ----  记录的起始物理位置[/COLOR]
0x14: pri[1]        offs=0x1f0d
0x16: pri[2]        offs=0x1f20
0x18: pri[3]        offs=0x1f33
0x1a: pri[4]        offs=0x1f46
0x1c: pri[5]        offs=0x1f59
0x1e: pri[6]        offs=0x1f6c
0x20: pri[7]        offs=0x1f7f
0x22: pri[8]        offs=0x1f92
0x24: pri[9]        offs=0x1fa5
block_row_dump:
tab 0, row 0, @0x1efa tl: 19 fb: --H-FL-- lb: 0x1 cc: 2 --- --  lb: 表示属于XID 0x1,cc 表示有2个字段
col  0: [ 2]  c1 02   ----   字段1 长度为2,数据为 c1  02
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74  ---- 字段而长度 12[/COLOR]
tab 0, row 1, @0x1f0d
tl: 19 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 03
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 2, @0x1f20
tl: 19 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 04
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 3, @0x1f33
tl: 19 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 05
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 4, @0x1f46
tl: 19 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 06
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 5, @0x1f59
tl: 19 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 07
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 6, @0x1f6c
tl: 19 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 08
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 7, @0x1f7f
tl: 19 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 09
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 8, @0x1f92
tl: 19 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 0a
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 9, @0x1fa5
tl: 19 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 0b
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
end_of_block_dump
End dump data blocks tsn: 2 file#: 3 minblk 1954 maxblk 1955

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2003-4-14 12:58 | 显示全部楼层

2

SQL> delete from tn where a =8 or  a = 7;

2 rows deleted.

SQL> commit;

Commit complete.

SQL>  alter system dump datafile 3 block 1955;

System altered.

删除2条记录后我们来看block中的变化

Block header dump:  0x00c007a3
Object id on Block? Y
seg/obj: 0x66b7  csc: 0x00.1891b8d  itc: 1  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0002.01a.000000e9    uba: 0x00800314.00d0.24  --U-    2  fsc 0x0022.01891b8f

data_block_dump
===============
tsiz: 0x1fb8
hsiz: 0x26
pbl: 0x0ba76c44
bdba: 0x00c007a3
flag=-----------
ntab=1
nrow=10
frre=-1
fsbo=0x26
fseo=0x1efa
avsp=0x1ed4
tosp=0x1efa
0xe: pti[0]        nrow=10        offs=0
0x12: pti[0]        offs=0x1efa
0x14: pti[1]        offs=0x1f0d
0x16: pti[2]        offs=0x1f20
0x18: pti[3]        offs=0x1f33
0x1a: pti[4]        offs=0x1f46
0x1c: pti[5]        offs=0x1f59
0x1e: pti[6]        offs=0x1f6c  --- 这里暂时没有发生变化
0x20: pti[7]        offs=0x1f7f  --- 这里暂时没有发生变化[/COLOR]
0x22: pti[8]        offs=0x1f92
0x24: pti[9]        offs=0x1fa5
block_row_dump:
tab 0, row 0, @0x1efa
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 02
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 1, @0x1f0d
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 03
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 2, @0x1f20
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 04
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 3, @0x1f33
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 05
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 4, @0x1f46
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 06
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 5, @0x1f59
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 07
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 6, @0x1f6c
tl: 2 fb: --HDFL-- lb: 0x1  ----记录已经被删除
tab 0, row 7, @0x1f7f
tl: 2 fb: --HDFL-- lb: 0x1  ----记录已经被删除[/COLOR]
tab 0, row 8, @0x1f92
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0a
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 9, @0x1fa5
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0b
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
end_of_block_dump
End dump data blocks tsn: 2 file#: 3 minblk 1955 maxblk 1955

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2003-4-14 13:07 | 显示全部楼层

3

SQL>  insert into tn values(19,'q');

1 row created.

SQL> commit;

Commit complete.

SQL>  alter system dump datafile 3 block 1955;

System altered.

插入一条记录,我们再看
Block header dump:  0x00c007a3
Object id on Block? Y
seg/obj: 0x66b7  csc: 0x00.1891b90  itc: 1  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0003.054.000000e8    uba: 0x00800da8.00d9.19  --U-    1  fsc 0x0000.01891b91

data_block_dump
===============
tsiz: 0x1fb8
hsiz: 0x28
pbl: 0x0ba76c44
bdba: 0x00c007a3
flag=-----------
ntab=1
nrow=11
frre=6
fsbo=0x28
fseo=0x1ef2
avsp=0x1eef
tosp=0x1eef
0xe: pti[0]        nrow=11        offs=0
0x12: pti[0]        offs=0x1efa
0x14: pti[1]        offs=0x1f0d
0x16: pti[2]        offs=0x1f20
0x18: pti[3]        offs=0x1f33
0x1a: pti[4]        offs=0x1f46
0x1c: pti[5]        offs=0x1f59
0x1e: pti[6]        sfll=7            ----被删除
0x20: pti[7]        sfll=-1           ------被删除
0x22: pti[8]        offs=0x1f92
0x24: pti[9]        offs=0x1fa5
0x26: pti[10]        offs=0x1ef2       --------新插入记录

block_row_dump:
tab 0, row 0, @0x1efa
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 02
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 1, @0x1f0d
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 03
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 2, @0x1f20
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 04
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 3, @0x1f33
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 05
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 4, @0x1f46
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 06
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 5, @0x1f59
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 07
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74  ----  row 6,7 已经被清除

tab 0, row 8, @0x1f92
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0a
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 9, @0x1fa5
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0b
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 10, @0x1ef2    ----------------------------新插入记录
tl: 8 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 14
col  1: [ 1]  71

end_of_block_dump
End dump data blocks tsn: 2 file#: 3 minblk 1955 maxblk 1955

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2003-4-14 13:13 | 显示全部楼层

4

SQL>  insert into tn values(19,'qqq');

1 row created.

SQL> commit;

Commit complete.

SQL> alter system dump datafile 3 block 1955;

System altered.

再插入记录我们来看

Block header dump:  0x00c007a3
Object id on Block? Y
seg/obj: 0x66b7  csc: 0x00.1891b92  itc: 1  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0004.02e.000000e7    uba: 0x00800617.00df.1c  --U-    1  fsc 0x0000.01891b94

data_block_dump
===============
tsiz: 0x1fb8
hsiz: 0x28
pbl: 0x0ba76c44
bdba: 0x00c007a3
flag=-----------
ntab=1
nrow=11
frre=7
fsbo=0x28
fseo=0x1ee8
avsp=0x1ee5
tosp=0x1ee5
0xe: pti[0]        nrow=11        offs=0
0x12: pti[0]        offs=0x1efa
0x14: pti[1]        offs=0x1f0d
0x16: pti[2]        offs=0x1f20
0x18: pti[3]        offs=0x1f33
0x1a: pti[4]        offs=0x1f46
0x1c: pti[5]        offs=0x1f59
0x1e: pti[6]        offs=0x1ee8  ------  新插入记录使用了新的空间,注意 offs 表示物理位置
0x20: pti[7]        sfll=-1

0x22: pti[8]        offs=0x1f92
0x24: pti[9]        offs=0x1fa5
0x26: pti[10]        offs=0x1ef2
block_row_dump:
tab 0, row 0, @0x1efa
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 02
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 1, @0x1f0d
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 03
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 2, @0x1f20
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 04
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 3, @0x1f33
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 05
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 4, @0x1f46
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 06
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 5, @0x1f59
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 07
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 6, @0x1ee8        ------------------------新插入记录

tl: 10 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 14
col  1: [ 3]  71 71 71
tab 0, row 8, @0x1f92
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0a
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 9, @0x1fa5
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0b
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 10, @0x1ef2
tl: 8 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 14
col  1: [ 1]  71
end_of_block_dump
End dump data blocks tsn: 2 file#: 3 minblk 1955 maxblk 1955

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2003-4-14 13:16 | 显示全部楼层

5

SQL> update tn set b = 'qqqqqq' where a = 19;

2 rows updated.

SQL> commit;

Commit complete.

SQL>  alter system dump datafile 3 block 1955;

System altered.

更新新插入的两条记录
Block header dump:  0x00c007a3
Object id on Block? Y
seg/obj: 0x66b7  csc: 0x00.1891b95  itc: 1  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0005.047.000000e7    uba: 0x00803819.0154.04  --U-    2  fsc 0x0000.01891b97

data_block_dump
===============
tsiz: 0x1fb8
hsiz: 0x28
pbl: 0x0ba76c44
bdba: 0x00c007a3
flag=-----------
ntab=1
nrow=11
frre=7
fsbo=0x28
fseo=0x1ece
avsp=0x1ede
tosp=0x1ede
0xe: pti[0]        nrow=11        offs=0
0x12: pti[0]        offs=0x1efa
0x14: pti[1]        offs=0x1f0d
0x16: pti[2]        offs=0x1f20
0x18: pti[3]        offs=0x1f33
0x1a: pti[4]        offs=0x1f46
0x1c: pti[5]        offs=0x1f59
0x1e: pti[6]        offs=0x1edb  --------首先更新这条, 更新后由于原来地方空间不足,被挪到了0x26: pti[10]        offs=0x1ef2 之上
0x20: pti[7]        sfll=-1
0x22: pti[8]        offs=0x1f92
0x24: pti[9]        offs=0x1fa5
0x26: pti[10]        offs=0x1ece  -------  更新后又由于先更新了0x1e: pti[6],位置不足,又挪到了0x1ece

block_row_dump:
tab 0, row 0, @0x1efa
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 02
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 1, @0x1f0d
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 03
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 2, @0x1f20
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 04
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 3, @0x1f33
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 05
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 4, @0x1f46
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 06
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 5, @0x1f59
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 07
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 6, @0x1edb
tl: 13 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 14
col  1: [ 6]  71 71 71 71 71 71
tab 0, row 8, @0x1f92
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0a
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 9, @0x1fa5
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0b
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 10, @0x1ece
tl: 13 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 14
col  1: [ 6]  71 71 71 71 71 71
end_of_block_dump
End dump data blocks tsn: 2 file#: 3 minblk 1955 maxblk 1955

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2003-4-14 13:19 | 显示全部楼层

6

SQL>  update tn set b = 'qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq' where a = 19;

2 rows updated.

SQL> commit;

Commit complete.

SQL>  alter system dump datafile 3 block 1955;

System altered.

继续更新一次看看,又重复了上面的步骤,提升了 物理位置

Block header dump:  0x00c007a3
Object id on Block? Y
seg/obj: 0x66b7  csc: 0x00.1891b98  itc: 1  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0006.044.000000f2    uba: 0x00801660.00da.0f  --U-    2  fsc 0x0000.01891b99

data_block_dump
===============
tsiz: 0x1fb8
hsiz: 0x28
pbl: 0x0ba76c44
bdba: 0x00c007a3
flag=-----------
ntab=1
nrow=11
frre=7
fsbo=0x28
fseo=0x1de0
avsp=0x1e0a
tosp=0x1e0a
0xe: pti[0]        nrow=11        offs=0
0x12: pti[0]        offs=0x1efa
0x14: pti[1]        offs=0x1f0d
0x16: pti[2]        offs=0x1f20
0x18: pti[3]        offs=0x1f33
0x1a: pti[4]        offs=0x1f46
0x1c: pti[5]        offs=0x1f59
0x1e: pti[6]        offs=0x1e57  -------发生变化

0x20: pti[7]        sfll=-1
0x22: pti[8]        offs=0x1f92
0x24: pti[9]        offs=0x1fa5
0x26: pti[10]        offs=0x1de0   ------  发生变化

block_row_dump:
tab 0, row 0, @0x1efa
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 02
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 1, @0x1f0d
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 03
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 2, @0x1f20
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 04
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 3, @0x1f33
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 05
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 4, @0x1f46
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 06
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 5, @0x1f59
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 07
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 6, @0x1e57
tl: 119 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 14
col  1: [112]  ---------------数据长度大大增加
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71

tab 0, row 8, @0x1f92
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0a
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 9, @0x1fa5
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0b
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 10, @0x1de0
tl: 119 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 14
col  1: [112]  ---------------数据长度大大增加
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71

end_of_block_dump
End dump data blocks tsn: 2 file#: 3 minblk 1955 maxblk 1955

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2003-4-14 13:23 | 显示全部楼层

7

SQL> alter table tn  add ( c varchar2(30));

Table altered.

SQL>  alter system dump datafile 3 block 1955;

System altered.

给表增加一个字段,我们发现数据没有变化

Block header dump:  0x00c007a3
Object id on Block? Y
seg/obj: 0x66b7  csc: 0x00.1891b98  itc: 1  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0006.044.000000f2    uba: 0x00801660.00da.0f  --U-    2  fsc 0x0000.01891b99

data_block_dump
===============
tsiz: 0x1fb8
hsiz: 0x28
pbl: 0x0ba76c44
bdba: 0x00c007a3
flag=-----------
ntab=1
nrow=11
frre=7
fsbo=0x28
fseo=0x1de0
avsp=0x1e0a
tosp=0x1e0a
0xe: pti[0]        nrow=11        offs=0
0x12: pti[0]        offs=0x1efa
0x14: pti[1]        offs=0x1f0d
0x16: pti[2]        offs=0x1f20
0x18: pti[3]        offs=0x1f33
0x1a: pti[4]        offs=0x1f46
0x1c: pti[5]        offs=0x1f59
0x1e: pti[6]        offs=0x1e57
0x20: pti[7]        sfll=-1
0x22: pti[8]        offs=0x1f92
0x24: pti[9]        offs=0x1fa5
0x26: pti[10]        offs=0x1de0
block_row_dump:
tab 0, row 0, @0x1efa
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 02
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 1, @0x1f0d
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 03
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 2, @0x1f20
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 04
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 3, @0x1f33
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 05
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 4, @0x1f46
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 06
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 5, @0x1f59
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 07
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 6, @0x1e57
tl: 119 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 14
col  1: [112]
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71
tab 0, row 8, @0x1f92
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0a
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 9, @0x1fa5
tl: 19 fb: --H-FL-- lb: 0x0 cc: 2
col  0: [ 2]  c1 0b
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
tab 0, row 10, @0x1de0
tl: 119 fb: --H-FL-- lb: 0x1 cc: 2
col  0: [ 2]  c1 14
col  1: [112]
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71
end_of_block_dump
End dump data blocks tsn: 2 file#: 3 minblk 1955 maxblk 1955

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2003-4-14 13:24 | 显示全部楼层

8

SQL> update tn set c = 'p';

10 rows updated.

SQL> commit;

Commit complete.

SQL>  alter system dump datafile 3 block 1955;

System altered.

更新增加的字段,我们发现所有的行都被提升了物理位置

Block header dump:  0x00c007a3
Object id on Block? Y
seg/obj: 0x66b7  csc: 0x00.1891b9c  itc: 1  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0001.00a.000000e8    uba: 0x00803494.0147.11  --U-   10  fsc 0x0000.01891b9e

data_block_dump
===============
tsiz: 0x1fb8
hsiz: 0x28
pbl: 0x0ba76c44
bdba: 0x00c007a3
flag=-----------
ntab=1
nrow=11
frre=7
fsbo=0x28
fseo=0x1c46
avsp=0x1df6
tosp=0x1df6
0xe: pti[0]        nrow=11        offs=0
0x12: pti[0]        offs=0x1dcb  ---------所有行的物理位置都发生了变化,因为原来的位置装不下多出来的数据了
0x14: pti[1]        offs=0x1db6
0x16: pti[2]        offs=0x1da1
0x18: pti[3]        offs=0x1d8c
0x1a: pti[4]        offs=0x1d77
0x1c: pti[5]        offs=0x1d62
0x1e: pti[6]        offs=0x1ce9
0x20: pti[7]        sfll=-1
0x22: pti[8]        offs=0x1cd4
0x24: pti[9]        offs=0x1cbf
0x26: pti[10]        offs=0x1c46

block_row_dump:
tab 0, row 0, @0x1dcb
tl: 21 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 02
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
col  2: [ 1]  70
tab 0, row 1, @0x1db6
tl: 21 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 03
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
col  2: [ 1]  70
tab 0, row 2, @0x1da1
tl: 21 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 04
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
col  2: [ 1]  70
tab 0, row 3, @0x1d8c
tl: 21 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 05
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
col  2: [ 1]  70
tab 0, row 4, @0x1d77
tl: 21 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 06
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
col  2: [ 1]  70
tab 0, row 5, @0x1d62
tl: 21 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 07
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
col  2: [ 1]  70
tab 0, row 6, @0x1ce9
tl: 121 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 14
col  1: [112]
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71
col  2: [ 1]  70
tab 0, row 8, @0x1cd4
tl: 21 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 0a
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
col  2: [ 1]  70
tab 0, row 9, @0x1cbf
tl: 21 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 0b
col  1: [12]  77 77 77 65 65 65 72 72 72 74 74 74
col  2: [ 1]  70
tab 0, row 10, @0x1c46
tl: 121 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 14
col  1: [112]
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71
71 71 71 71 71 71 71 71 71 71 71 71
col  2: [ 1]  70
end_of_block_dump
End dump data blocks tsn: 2 file#: 3 minblk 1955 maxblk 1955

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2003-4-14 13:25 | 显示全部楼层

9

SQL>  update tn set b = lpad('sd',999);

10 rows updated.

SQL> commit;

Commit complete.

SQL>  alter system dump datafile 3 block 1955;

System altered.

SQL>   update tn set b ='qqqqqqq';

10 rows updated.

SQL> commit;

Commit complete.

SQL>  alter system dump datafile 3 block 1955;

System altered.

首先更新到让记录发生了行迁移,然后再更新回来,因为这时数据太大,就不把发生迁移后的数据全部贴出来,给个再更新回来的结果

Block header dump:  0x00c007a3
Object id on Block? Y
seg/obj: 0x66b7  csc: 0x00.1891ba5  itc: 1  flg: O  typ: 1 - DATA
     fsl: 1  fnx: 0x0 ver: 0x01

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   xid:  0x0004.047.000000e7    uba: 0x00800618.00df.08  --U-   11  fsc 0x1b2e.01891ba7

data_block_dump
===============
tsiz: 0x1fb8
hsiz: 0x28
pbl: 0x0ba76c44
bdba: 0x00c007a3
flag=-----------
ntab=1
nrow=11
frre=7
fsbo=0x28
fseo=0x2f6
avsp=0x3d0
tosp=0x1efe
0xe: pti[0]        nrow=11        offs=0
0x12: pti[0]        offs=0x35c -------位置都发生了变化
0x14: pti[1]        offs=0x34b
0x16: pti[2]        offs=0x33a
0x18: pti[3]        offs=0x329
0x1a: pti[4]        offs=0x318
0x1c: pti[5]        offs=0x307
0x1e: pti[6]        offs=0x2f6
0x20: pti[7]        sfll=-1
0x22: pti[8]        offs=0x7f0
0x24: pti[9]        offs=0x7da
0x26: pti[10]        offs=0x760

block_row_dump:
tab 0, row 0, @0x35c
tl: 17 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 02
col  1: [ 7]  71 71 71 71 71 71 71
col  2: [ 2]  70 70
tab 0, row 1, @0x34b
tl: 17 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 03
col  1: [ 7]  71 71 71 71 71 71 71
col  2: [ 2]  70 70
tab 0, row 2, @0x33a
tl: 17 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 04
col  1: [ 7]  71 71 71 71 71 71 71
col  2: [ 2]  70 70
tab 0, row 3, @0x329
tl: 17 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 05
col  1: [ 7]  71 71 71 71 71 71 71
col  2: [ 2]  70 70
tab 0, row 4, @0x318
tl: 17 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 06
col  1: [ 7]  71 71 71 71 71 71 71
col  2: [ 2]  70 70
tab 0, row 5, @0x307
tl: 17 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 07
col  1: [ 7]  71 71 71 71 71 71 71
col  2: [ 2]  70 70
tab 0, row 6, @0x2f6
tl: 17 fb: --H-FL-- lb: 0x1 cc: 3
col  0: [ 2]  c1 14
col  1: [ 7]  71 71 71 71 71 71 71
col  2: [ 2]  70 70
tab 0, row 8, @0x7f0   -------------- 从row  8  ---  row 10  的记录已经迁移到新的block中,这里保留的是新块的物理位置
tl: 9 fb: --H----- lb: 0x1 cc: 0
nrid:  0x00c007a4.0   ------------ 迁移到了 block编号为 0x00c007a4 的块中的 row 0 (本块为 0x00c007a3)
tab 0, row 9, @0x7da
tl: 9 fb: --H----- lb: 0x1 cc: 0
nrid:  0x00c007a4.1  迁移到了 block编号为 0x00c007a4 的块中的 row 1  (本块为 0x00c007a3)
tab 0, row 10, @0x760
tl: 9 fb: --H----- lb: 0x1 cc: 0
nrid:  0x00c007a4.2   迁移到了 block编号为 0x00c007a4 的块中的 row 2 (本块为 0x00c007a3)

end_of_block_dump
End dump data blocks tsn: 2 file#: 3 minblk 1955 maxblk 1955

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表