- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于oraclerowid的一些内容
关于oracle rowid的一些内容Sunday, August 14, 2011
W BY H.sdon
本文讨论的是关于oracle从8i开始引进object的概念后的rowid,即扩展(extended)的rowid:
1.rowid的介绍
先对rowid有个感官认识:
SQL select ROWID from Bruce_test where rownum2;
ROWID ------------------ ---------- AAABnlAAFAAAAAPAAA ROWID的格式如下:
数据对象编号??????? 文件编号??????? 块编号?????????? 行编号OOOOOO???????????? FFF?????????? BBBBBB? RRR
我们可以看出,从上面的rowid可以得知:AAABnl 是数据对象编号AAF是相关文件编号AAAAAP是块编号AAA 是行编号
怎么依据这些编号得到具体的十进制的编码值呢,这是经常遇到的问题。这里需要明白rowid的是基于64位编码的18个字符显示(数据对象编号(6) +文件编号(3) +块编号(6)+?????? 行编号(3)=18位),其中A-Z == 0 - 25 (26) a-z == 26 - 51 (26) 0-9 == 52 - 61 (10) +/ == 62 - 63 (2)
共64位,明白这个后,就可以计算出10进制的编码值,计算公式如下:d * (b ^ p)其中:b就是基数,这里就是64,p就是从右到左,已0开始的位置数比如:上面的例子文件号AAF,具体的计算应该是:5*(64^0)=5;0*(64^1)=0;0*(64^2)=0;文件号就是0+0+5=5刚才提到的是rowid的显示方式:基于64位编码的18个字符显示,其实rowid的存储方式是:10 个字节即80位存储,其中数据对象编号需要32 位,相关文件编号需要10 位,块编号需要22,位行编号需要16 位,由此,我们可以得出:32bit的object number,每个数据库最多有4G个对象10bit的file number,每个对象最多有1022个文件(2个文件预留)22bit的block number,每个文件最多有4M个BLOCK16bit的row number,每个BLOCK最多有64K个ROWS
2.?????? rowid相关的有用的sql
最简单的基于rowid的显示方式得到的响应的64位编码对应值的sql:select rowid ,substr(rowid,1,6) OBJECT,substr(rowid,7,3) FILE,substr(rowid,10,6) BLOCK,substr(rowid,16,3) ROWfrom TableName;
OWID????????????? OBJECT?????? FILE?? BLOCK??????? ROW------------------ ------------ ------ ------------ ------AAABc4AADAAAGLUAAA AAABc4?????? AAD??? AAAGLU?????? AAAAAABc4AADAAAGLUAAB AAABc4?????? AAD??? AAAGLU?????? AABAAABc4AADAAAGLUAAC AAABc4?????? AAD??? AAAGLU?????? AACAAABc4AADAAAGLUAAD AAABc4?????? AAD??? AAAGLU?????? AADAAABc4AADAAAGLUAAE AAABc4?????? AAD??? AAAGLU?????? AAE
通过dbms_rowid这个包,可以直接的得到具体的rowid包含的信息:
select dbms_rowid.rowid_object(rowid)?object_id,dbms_rowid.rowid_relative_fno(rowid) file_id,dbms_rowid.rowid_block_number(rowid)? block_id ,dbms_rowid.rowid_row_number(rowid)? num from bruce_t where rownum5;
OBJECT_ID??? FILE_ID?? BLOCK_ID??????? NUM---------- ---------- ---------- ----------????? 5944????????? 3????? 25300????????? 0????? 5944?
您可能关注的文档
最近下载
- 2025年教学查房——高血压.pptx VIP
- 山西省2026届高三第一次八省联考语文(T8联考)(含答案).pdf VIP
- 2026五个带头发言材料三.docx VIP
- 新能源汽车行业产业人才需求分析报告.docx
- 广西急难型、支出型临时救助审核认定表、申请社会救助家庭经济状况核对授权书、告知书、领取表.docx VIP
- 一年级上册语文期末复习-看拼音写词语4_苏教版.doc VIP
- 2026年成都农商银行软件开发岗(应用架构方向)社会招聘10人备考题库(含答案详解).docx VIP
- 培智生活数学五年级上册教案人民教育出版社.pdf VIP
- 2025北京海淀初一(上)期末生物(含答案).pdf VIP
- 天坛的介绍课件.pptx VIP
原创力文档


文档评论(0)