楼主: grassbell

[精华] 偷窥Data block 的物理结构

[复制链接]
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
41#
发表于 2004-8-2 10:54 | 只看该作者
问个问题
rdba: 0x00c0007a (3/122)
怎么看出来是file#=3阿, 0x007a=122好理解,c0为什么是3呢?

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
42#
发表于 2004-8-2 11:37 | 只看该作者
04 是file 1   
08 是file 2
c0是file3
00 是file4   依次类推 这是为什么一个file可以有4M个blocks的原因

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
21
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:36
43#
 楼主| 发表于 2004-8-2 12:00 | 只看该作者
最初由 l2g32003 发布
[B]我是说的最小行为11字节的原因
3 bytes的row header,block hader 中占据的2 bytes 还有6字节的rowid [/B]


还是不明白你的意思。

rowid 是不存在于table block中的。怎么会有占用6字节之说,那数据存在哪里了?

这里有详细的实验过程:
http://www.itpub.net/245182.html

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
44#
发表于 2004-8-2 12:11 | 只看该作者
我没说 rowid在 row 中啊  我是说11字节并不是因为你想的那种情况而定义的长度
oracle定义row的长度最小为11字节是为行迁移而考虑的
来个例子
create table t (v varchar2(2000)) pctfree 0;
现在我不断的向table中 insert into t values('a');
假如block中如果不为一行分配11字节的最小的空间也就是整个block中全部被数据填满了
好 我现在又执行一句 update t set v='aaa.......aaa' where rownum=1   --2000个a
这行肯定发生行迁移了 行迁移的时候row的情况就是我说的那种11字节
这时行迁移的row比以前的row要多用4个字节 而block中如果填满了数据就没办法分配这4个字节
oracle肯定不能这样嘛 所以oracle定义的最小行的11个字节是为行迁移的情况考虑的
这11个字节也就是这样组成的

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
45#
发表于 2004-8-2 13:35 | 只看该作者
最初由 shangym 发布
[B]问个问题
rdba: 0x00c0007a (3/122)
怎么看出来是file#=3阿, 0x007a=122好理解,c0为什么是3呢? [/B]


不明白你是怎么看帖子的,顶头的帖子不是解释得清清楚楚。

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
46#
发表于 2004-8-2 14:33 | 只看该作者
最初由 ZALBB 发布
[B]

不明白你是怎么看帖子的,顶头的帖子不是解释得清清楚楚。 [/B]

嘿嘿,从头慢慢看起的,看的不快怕消化不了,遇到问题就先问了,还没看到那么后面呢
谢谢指教

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
21
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:36
47#
 楼主| 发表于 2004-8-2 18:03 | 只看该作者
最初由 l2g32003 发布
[B]我没说 rowid在 row 中啊  我是说11字节并不是因为你想的那种情况而定义的长度
oracle定义row的长度最小为11字节是为行迁移而考虑的
来个例子
create table t (v varchar2(2000)) pctfree 0;
现在我不断的向table中 insert into t values('a');
假如block中如果不为一行分配11字节的最小的空间也就是整个block中全部被数据填满了
好 我现在又执行一句 update t set v='aaa.......aaa' where rownum=1   --2000个a
这行肯定发生行迁移了 行迁移的时候row的情况就是我说的那种11字节
这时行迁移的row比以前的row要多用4个字节 而block中如果填满了数据就没办法分配这4个字节
oracle肯定不能这样嘛 所以oracle定义的最小行的11个字节是为行迁移的情况考虑的
这11个字节也就是这样组成的 [/B]


嗯,以你的这个思路,我觉得很有道理,只是不太赞同rowid的说法:

这是发生row migration的一段dump:

tab 0, row 8, @0x7f0
tl: 9 fb: --H----- lb: 0x1 cc: 0
nrid: 0x00c007a4.0
------------ nrid表示 row 迁移到了 block编号为 0x00c007a4 的块中的 row 0 (本块为 0x00c007a3)
tl: total length=9, 再加上2bytes的row dictionary entry 为11;
9减掉3 bytes的row header,为6bytes, 应该是存放nrid的。

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
48#
发表于 2004-8-2 18:35 | 只看该作者
rowid 的说法  也是有一定的问题的
我从很多的书上看见的都是把这个nrid理解为rowid  其实select rowid from table 出来的rowid和index,table中记录的rowid还是不同的  
index,table中记录的和rowid相同的东西应该是block id 和row id的组合而已
而我们长说的rowid中还有object id

使用道具 举报

回复
论坛徽章:
0
49#
发表于 2004-8-2 18:59 | 只看该作者

为什么越来越感觉自己的无知!

为什么越来越感觉自己的无知?

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34优秀写手
日期:2013-12-18 09:29:13
50#
发表于 2004-8-10 15:55 | 只看该作者
建议发深入研究的探讨类的贴子时把需要掌握的基础知识先介绍一下,或至少给个说明需要哪些方面的基础知识,以便非专家类的读者能跟进。

使用道具 举报

回复

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

本版积分规则 发表回复

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