file:///E:/documents/mynote/scrapbook/data/20090608210709/index.html
Oracle的物理扩展ROWID 共80bit 10byte
用18位表示,每位采用64位编码,分别用A~Z、a~z、0~9、+、/共64个字符表示。A表示0,B表示1,……Z表示25,a表示26,……z表示51,0表示52,……,9表示61,+表示62,/表示63。
SQL> select row_id, dump(row_id, 16) dump_rowid from test_rowid;
ROW_ID DUMP_ROWID
------------------ -------------------------------------------------
AAABnRAAGAAAACWAAA Typ=69 Len=10: 0,0,19,d1,1,80,0,96,0,0
object_id 32bit
每个数据库最多有2^32=4G个对象
0 0 0 0 1 9 D 1 --16#
0000 0000,0000 0000,0001 1001,1101 0001 32bit
前补四个零
0000 0000 0000,0000 0000,0001 1001,1101 0001 --2
A A A B n R --64
用前6位表示DATA OBJECT NUMBER,将起转化位数字后匹配DBA_OBJECTS中的DATA_OBJECT_ID,可以确定表信息。
rfile# 10bit
每个对象最多有1022个文件(2个文件预留) 这也是oracle新引入扩展rowid的原因
AAG 3*6=18bit
1,80,0,96 rfile#+block#
0000 0001,1000 0000,0000 0000,1001 0110 32bit
取前十bit
0000 0001,10 10bit
前补8bit
0000 0000 0000 0001,10
A A G
第7到9位表示相对表空间的数据文件号。
block# 22bit
每个文件最多有4M个BLOCK
AAAACW 6*6=36bit
00 0000,0000 0000,1001 0110 22bit
前补14bit
0000 0000,0000 00 00 0000,0000 0000,1001 0110
A A A A C W
第10到15位表示这条记录在数据文件中的第几个BLOCK中。
row# 16bit
每个BLOCK最多有64K个ROWS
最后3位表示这条记录是BLOCK中的第几条记录
AAA 3*6=18bit
0000 0000,0000 0000
前补2bit
00 0000 0000,0000 0000
A A A
最后3位表示这条记录是BLOCK中的第几条记录
file#与rfile#的关系
rfile#相对数据文件号的值只能由1到1023 oracle rowid 10bit rfile#
file# 数据文件号一直往上递增的,整个数据库大概可以达到65533个文件
Oracle的物理扩展ROWID 共80bit 10byte
用18位表示,每位采用64位编码,分别用A~Z、a~z、0~9、+、/共64个字符表示。A表示0,B表示1,……Z表示25,a表示26,……z表示51,0表示52,……,9表示61,+表示62,/表示63。
SQL> select row_id, dump(row_id, 16) dump_rowid from test_rowid;
ROW_ID DUMP_ROWID
------------------ -------------------------------------------------
AAABnRAAGAAAACWAAA Typ=69 Len=10: 0,0,19,d1,1,80,0,96,0,0
object_id 32bit
每个数据库最多有2^32=4G个对象
0 0 0 0 1 9 D 1 --16#
0000 0000,0000 0000,0001 1001,1101 0001 32bit
前补四个零
0000 0000 0000,0000 0000,0001 1001,1101 0001 --2
A A A B n R --64
用前6位表示DATA OBJECT NUMBER,将起转化位数字后匹配DBA_OBJECTS中的DATA_OBJECT_ID,可以确定表信息。
rfile# 10bit
每个对象最多有1022个文件(2个文件预留) 这也是oracle新引入扩展rowid的原因
AAG 3*6=18bit
1,80,0,96 rfile#+block#
0000 0001,1000 0000,0000 0000,1001 0110 32bit
取前十bit
0000 0001,10 10bit
前补8bit
0000 0000 0000 0001,10
A A G
第7到9位表示相对表空间的数据文件号。
block# 22bit
每个文件最多有4M个BLOCK
AAAACW 6*6=36bit
00 0000,0000 0000,1001 0110 22bit
前补14bit
0000 0000,0000 00 00 0000,0000 0000,1001 0110
A A A A C W
第10到15位表示这条记录在数据文件中的第几个BLOCK中。
row# 16bit
每个BLOCK最多有64K个ROWS
最后3位表示这条记录是BLOCK中的第几条记录
AAA 3*6=18bit
0000 0000,0000 0000
前补2bit
00 0000 0000,0000 0000
A A A
最后3位表示这条记录是BLOCK中的第几条记录
file#与rfile#的关系
rfile#相对数据文件号的值只能由1到1023 oracle rowid 10bit rfile#
file# 数据文件号一直往上递增的,整个数据库大概可以达到65533个文件
Powered by ScribeFire.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9933980/viewspace-630052/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9933980/viewspace-630052/