前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据块转储及RDBA的转换

数据块转储及RDBA的转换

作者头像
数据和云01
发布2018-09-05 10:26:55
4900
发布2018-09-05 10:26:55
举报
文章被收录于专栏:数据库新发现数据库新发现

数据块转储及RDBA的转换 原文链接: http://www.eygle.com/internal/How_to_dump_datablock.htm Tuesday, 2004-08-31 17:51 Eygle

很多时候我们在进行进一步研究时需要转储(dump)Oracle的数据块,以研究其内容,Oracle提供了很好的方式,我们通过以下例子简单说明一下: 很多人经常提出的一个问题是,rdba是如何转换的? rdba: 0x004062ba (1/25274) 我们通过这个例子介绍一下. rdba从Oracle6->Oracle7->Oracle8发生了三次改变: 在Oracle6中,rdba由6位2进制数表示,也就是说数据块最多只能有2^6=64个数据文件(去掉全0和全1, 实际上最多只能代表62个文件) 在Oracle7中,rdba中的文件号增加为10位,为了向后兼容,从Block号的高位拿出4位作为文件号的高位.这样从6->7的Rowid无需发生变化.而数据文件的个数理论上则扩展到了1022个(去掉全0和全1),在Oracle7中,rowid格式为:BBBBBBBB.RRRR.FFFF 在Oracle8中,文件号仍然用10位表示,只是不再需要置换,为了向后兼容,同时引入了相对文件号(rfile#),所以从Oracle7到Oracle8,Rowid仍然无需发生变化.在Oracle8i中,Oracle引入了dataobj#,rowid的格式变为:OOOOOOFFFBBBBBBSSS,Oracle通过dataobj#进一步向上定为表空间等,从而使每个表空间的数据文件数量理论上可以达到1022个 举例说明如下: 在Oracle6中: 比如: file 8, block 56892 26位block号==56892 vv vvvvvvvv vvvvvvvv vvvvvvvv 00100000 00000000 11011110 00111100 ^^^^^^ 6位文件号==8 在Oracle7中: 比如:File 255, block 56892 11111100 11000000 11011110 00111100 F C C 0 D E 3 C /_____//___//_______________________/ | | | | | Block = 0xDE3C = 56892 /_____________ | / V V 0011 111111 = 0xFF = 255 --注意这里高位和低位要置换才能得出正确的file# 在Oracle8中: 比如:File 255, block 56892 11111100 11000000 11011110 00111100 F C C 0 D E 3 C /_____//___//_______________________/ | | | | | Block = 0xDE3C = 56892 /_____________ | / V V 0011 1111 0011 = 03F3 = 1011 --这就是相对文件号   对于我们测试中的例子: rdba: 0x004062ba (1/25274) 也就是:0000 0000 0100 0000 0110 0010 1011 1010 前10位为rfile#: 0000 0000 01 = 1 后22位为Block#:00 0000 0110 0010 1011 1010 = 25274

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2004年09月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档