楼主: grassbell

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

[复制链接]
论坛徽章:
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
31#
发表于 2004-7-30 14:46 | 只看该作者

这是我的猜测

0x02c00003 (11/3) 0000 0010 1100
10 11 = 11
0x0180003b (6/59) 0000 0001 1000
01 10 = 6
0x03400003 (13/3) 0000 0011 0100
11 01 = 13
0x08800003 (34/3) 0000 1000 1000
1000 10 = 34
0x01400003 (5/3)  0000 0001 0100
01 01   = 5
0x01000003 (4/3)  0000 0001 0000
01 00 = 4

也就是说,ORACLE是从倒数第3位开始,取其前面的”位数“来记录其文件的ID
我计算了POWER(2,10) = 1024,但查看了控制文件和参数文件,没有一个FILE参数
的值是1024的。

使用道具 举报

回复
论坛徽章:
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
32#
发表于 2004-7-30 14:51 | 只看该作者
若这样算来,ORACLE只能管理这么多(1024)个数据文件?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
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
33#
 楼主| 发表于 2004-7-30 16:27 | 只看该作者
应该是每没个表空间最多能有多少数据文件。

用maxdatafile 在google上搜一下,有这样一句话:
If you r using Oracle 9i then the number would be 1022 data files per one tablespace

使用道具 举报

回复
论坛徽章:
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
34#
发表于 2004-7-30 16:56 | 只看该作者
但看不到哪里以表空间来做划分啊!

使用道具 举报

回复
论坛徽章:
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
35#
发表于 2004-7-30 16:56 | 只看该作者
在 oracle 8  partition 出现之前,oracle只能管理1022个文件,这是由rowid的局限性所决定的,当时rowid中不包含 data_object_id ,rowid只能代表文件号而没有表空间信息,这部分只有10bit,,8开始rowid包含 data_object_id ,这样使得表可以跨越表空间存储,同时也使得数据库支持超过1022个数据文件了

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
36#
发表于 2004-7-31 17:08 | 只看该作者
If you r using Oracle 9i then the number would be 1022 data files per one tablespace
文档上也是这样写的 但可以创建1023个 可以从block head 中的file id 看出来

----------
5. 关于Minimum row length
Oracle确实有Minimun row length的要求,即5 bytes的实际数据。如果加上3 bytes的row header, 和在block hader 中占据的2 bytes的row directory entry ,还有1byte的column长度,应该一共是11 bytes

所以,一个block中最多包括 db_block_size/11 条rows
--------
不应该是5个字节的实际数据 这11个字节是3 bytes的row header,block hader 中占据的2 bytes
    还有6字节的rowid
如果没记错的话 如果发生行迁移的row就是这样的结构

使用道具 举报

回复
论坛徽章:
0
37#
发表于 2004-7-31 17:24 | 只看该作者

我怎么没有show_space????

????

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
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
38#
 楼主| 发表于 2004-7-31 17:37 | 只看该作者
最初由 l2g32003 发布
[B]
----------
5. 关于Minimum row length
Oracle确实有Minimun row length的要求,即5 bytes的实际数据。如果加上3 bytes的row header, 和在block hader 中占据的2 bytes的row directory entry ,还有1byte的column长度,应该一共是11 bytes

所以,一个block中最多包括 db_block_size/11 条rows
--------
不应该是5个字节的实际数据 这11个字节是3 bytes的row header,block hader 中占据的2 bytes
    还有6字节的rowid
如果没记错的话 如果发生行迁移的row就是这样的结构 [/B]


ROWID只是个逻辑概念,并不存储在data block中。只是在index block中存储6位的rowid,指向索引的实际数据。

oracle 8开始 rowid 是 10bytes,原来是 6bytes

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
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
39#
 楼主| 发表于 2004-7-31 17:48 | 只看该作者

Re: 我怎么没有show_space????

最初由 sodone 发布
[B]???? [/B]


第2页的开头有交待:fd:

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
40#
发表于 2004-8-2 10:07 | 只看该作者
我是说的最小行为11字节的原因
3 bytes的row header,block hader 中占据的2 bytes 还有6字节的rowid

使用道具 举报

回复

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

本版积分规则 发表回复

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