楼主: biti_rainy

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

[复制链接]
论坛徽章:
151
2014年新春福章
日期:2014-04-17 11:38:13奥运会纪念徽章:皮划艇静水
日期:2012-07-31 15:42:58奥运会纪念徽章:田径
日期:2012-07-10 16:21:10奥运会纪念徽章:跆拳道
日期:2012-06-20 22:07:29奥运会纪念徽章:皮划艇静水
日期:2012-06-16 02:55:21奥运会纪念徽章:曲棍球
日期:2012-06-13 10:09:19蛋疼蛋
日期:2012-05-19 23:20:41迷宫蛋
日期:2012-05-16 17:35:25版主2段
日期:2012-05-15 15:24:11双黄蛋
日期:2012-03-19 19:34:04
61#
发表于 2006-11-7 16:33 | 只看该作者
最初由 tigerfish 发布
[B]

rowid里的row号也是逻辑的,真正的物理偏移量记录在block内,我想这样做的一个原因是当block内数据发生重整的时候可以不用修改索引,估计lunar没从头到尾看完整个帖子。
[/B]


老虎不参与回答技术帖已多年……

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
122
马上加薪
日期:2014-02-19 11:55:14ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-03-29 13:11:152010广州亚运会纪念徽章:篮球
日期:2011-02-20 22:50:172011新春纪念徽章
日期:2011-02-18 11:42:492011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:50
62#
发表于 2006-11-7 19:02 | 只看该作者
最初由 blue_prince 发布
[B]

老虎不参与回答技术帖已多年…… [/B]


这个帖子也是3年前的呢

那个时候我还不知道oracle为何物啊,这些家伙就钻这么深了

使用道具 举报

回复
论坛徽章:
24
生肖徽章:狗
日期:2006-09-07 10:14:43数据库板块每日发贴之星
日期:2008-07-26 01:02:20生肖徽章2007版:兔
日期:2008-10-13 11:10:11奥运会纪念徽章:铁人三项
日期:2008-10-24 13:27:21开发板块每日发贴之星
日期:2008-12-27 01:01:09生肖徽章2007版:马
日期:2009-11-18 10:45:032010新春纪念徽章
日期:2010-03-01 11:21:02ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ERP板块每日发贴之星
日期:2011-05-18 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
63#
发表于 2007-11-10 10:55 | 只看该作者

Re: 2

最初由 biti_rainy 发布
[B]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 [/B]


大师,能否帮忙解释下,我做到这一步就和你的不一样了,难道是版本的差异么?我的是 9.2.0.1


删除之前的

data_block_dump,data header at 0x540225c
===============
tsiz: 0x1fa0
hsiz: 0x26
pbl: 0x0540225c
bdba: 0x0040c63a
     76543210
flag=--------
ntab=1
nrow=10
frre=-1
fsbo=0x26
fseo=0x1ee2
avsp=0x1ebc
tosp=0x1ebc
0xeti[0]        nrow=10        offs=0
0x12ri[0]        offs=0x1ee2
0x14ri[1]        offs=0x1ef5
0x16ri[2]        offs=0x1f08
0x18ri[3]        offs=0x1f1b
0x1ari[4]        offs=0x1f2e
0x1cri[5]        offs=0x1f41
0x1eri[6]        offs=0x1f54
0x20ri[7]        offs=0x1f67
0x22ri[8]        offs=0x1f7a
0x24:pri[9]        offs=0x1f8d
block_row_dump:
tab 0, row 0, @0x1ee2
tl: 19 fb: --H-FL-- lb: 0x1  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, @0x1ef5
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, @0x1f08
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, @0x1f1b
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, @0x1f2e
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, @0x1f41
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, @0x1f54
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, @0x1f67
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, @0x1f7a
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, @0x1f8d
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: 0 file#: 1 minblk 50746 maxblk 50746

删除后的

data_block_dump,data header at 0x540225c
===============
tsiz: 0x1fa0
hsiz: 0x26
pbl: 0x0540225c
bdba: 0x0040c63a
     76543210
flag=--------
ntab=1
nrow=10
frre=-1
fsbo=0x26
fseo=0x1ee2
avsp=0x1ebc
tosp=0x1ee2
0xe:pti[0]        nrow=10        offs=0
0x12:pri[0]        offs=0x1ee2
0x14:pri[1]        offs=0x1ef5
0x16:pri[2]        offs=0x1f08
0x18:pri[3]        offs=0x1f1b
0x1a:pri[4]        offs=0x1f2e
0x1c:pri[5]        offs=0x1f41
0x1e:pri[6]        offs=0x1f54
0x20:pri[7]        offs=0x1f67
0x22:pri[8]        offs=0x1f7a
0x24:pri[9]        offs=0x1f8d
block_row_dump:
tab 0, row 0, @0x1ee2
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, @0x1ef5
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, @0x1f08
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, @0x1f1b
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, @0x1f2e
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, @0x1f41
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, @0x1f54
tl: 2 fb: --HDFL-- lb: 0x2
tab 0, row 7, @0x1f67
tl: 2 fb: --HDFL-- lb: 0x2
tab 0, row 8, @0x1f7a
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, @0x1f8d
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: 0 file#: 1 minblk 50746 maxblk 50746

你可以看到,只前都是0x1,删除后变为了0x0,而我的被删除的缺成了0x2,而你的还是0x1,这个怎么解释呢?

SQL> select file_id,extent_id,block_id,blocks from dba_extents where segment_name='TB';

   FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS
---------- ---------- ---------- ----------
         1          0      50745          8

SQL>

说明我dump的data block没有错误啊

使用道具 举报

回复
论坛徽章:
24
生肖徽章:狗
日期:2006-09-07 10:14:43数据库板块每日发贴之星
日期:2008-07-26 01:02:20生肖徽章2007版:兔
日期:2008-10-13 11:10:11奥运会纪念徽章:铁人三项
日期:2008-10-24 13:27:21开发板块每日发贴之星
日期:2008-12-27 01:01:09生肖徽章2007版:马
日期:2009-11-18 10:45:032010新春纪念徽章
日期:2010-03-01 11:21:02ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ERP板块每日发贴之星
日期:2011-05-18 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
64#
发表于 2007-11-10 11:03 | 只看该作者
大师周末都休息么?

我到了第四步,才和你的第二步一样,是我的数据库参数不对么?为何会出现这个现象呢?

data_block_dump,data header at 0x540225c
===============
tsiz: 0x1fa0
hsiz: 0x2a
pbl: 0x0540225c
bdba: 0x0040c63a
     76543210
flag=--------
ntab=1
nrow=12
frre=6
fsbo=0x2a
fseo=0x1ed0
avsp=0x1ecb
tosp=0x1ecb
0xeti[0]        nrow=12        offs=0
0x12ri[0]        offs=0x1ee2
0x14ri[1]        offs=0x1ef5
0x16ri[2]        offs=0x1f08
0x18ri[3]        offs=0x1f1b
0x1ari[4]        offs=0x1f2e
0x1cri[5]        offs=0x1f41
0x1eri[6]        sfll=7这个时候才一样,可是我都插入2条记录了,这时候存放的都12条记录了,上面的nrow
0x20ri[7]        sfll=-1
0x22ri[8]        offs=0x1f7a
0x24:pri[9]        offs=0x1f8d
0x26:pri[10]        offs=0x1eda
0x28:pri[11]        offs=0x1ed0
block_row_dump:
tab 0, row 0, @0x1ee2
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, @0x1ef5
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, @0x1f08
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, @0x1f1b
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, @0x1f2e
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, @0x1f41
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
row6,7才被删除,why?
tab 0, row 8, @0x1f7a
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, @0x1f8d
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, @0x1eda
tl: 8 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 2]  c1 14
col  1: [ 1]  71
tab 0, row 11, @0x1ed0
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 14
col  1: [ 3]  71 71 71
end_of_block_dump
End dump data blocks tsn: 0 file#: 1 minblk 50746 maxblk 50746

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
65#
发表于 2007-11-10 18:34 | 只看该作者
biti无敌了

使用道具 举报

回复
论坛徽章:
138
19周年集字徽章-19
日期:2020-06-08 08:30:56马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02路虎
日期:2013-11-22 12:26:18问答徽章
日期:2014-05-08 12:15:31
66#
发表于 2007-11-11 07:34 | 只看该作者
这些帖子放这就是影响初学的学习方向 ,呵呵

使用道具 举报

回复
论坛徽章:
24
生肖徽章:狗
日期:2006-09-07 10:14:43数据库板块每日发贴之星
日期:2008-07-26 01:02:20生肖徽章2007版:兔
日期:2008-10-13 11:10:11奥运会纪念徽章:铁人三项
日期:2008-10-24 13:27:21开发板块每日发贴之星
日期:2008-12-27 01:01:09生肖徽章2007版:马
日期:2009-11-18 10:45:032010新春纪念徽章
日期:2010-03-01 11:21:02ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ERP板块每日发贴之星
日期:2011-05-18 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
67#
发表于 2007-11-11 11:35 | 只看该作者
最初由 棉花糖ONE 发布
[B]这些帖子放这就是影响初学的学习方向 ,呵呵 [/B]


我到觉得如果初学者能知道oracle内部block如果存储数据的,也是好事啊

使用道具 举报

回复
论坛徽章:
6
授权会员
日期:2007-11-13 18:28:17奥运会纪念徽章:花样游泳
日期:2008-07-30 22:59:10BLOG每日发帖之星
日期:2009-04-28 01:01:08参与2009年中国云计算大会纪念
日期:2009-06-05 10:02:28BLOG每日发帖之星
日期:2009-07-01 01:01:032010世博会纪念徽章
日期:2010-09-03 11:12:24
68#
发表于 2007-12-14 11:23 | 只看该作者
真是太经典了,感动中............................

使用道具 举报

回复
论坛徽章:
0
69#
发表于 2008-3-12 11:37 | 只看该作者
这个帖子好,能进一步研究一下更好.

使用道具 举报

回复
论坛徽章:
19
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:06:13BLOG每日发帖之星
日期:2010-03-28 01:01:02ITPUB9周年纪念徽章
日期:2010-10-08 09:31:222012新春纪念徽章
日期:2012-01-04 11:51:22
70#
发表于 2008-3-18 13:54 | 只看该作者
o(∩_∩)o...哈哈
佩服biti的造诣

使用道具 举报

回复

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

本版积分规则 发表回复

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