Oracle ROWID详解
来源:互联网 发布:编程工具与编程 编辑:程序博客网 时间:2024/06/06 00:48
1.ROWID定义
ROWID:数据库中行的全局唯一地址
对于数据中的每一行,rowid伪列返回行的地址。rowid值主要包含以下信息:
- 对象的数据对象编号
- 该行所在的数据文件中的数据块
- 该行中数据块的位置(第一行是0)
- 数据行所在的数据文件(第一个文件是1)。该文件编号是相对于表空间。
通常来说,一个rowid值唯一标识数据中的一行。然而,存储在同一聚簇中不同的表可以有相同的rowid。
Oracle rowid http://www.linuxidc.com/Linux/2013-03/80755.htm
Oracle入门基础教程:rowid详解 http://www.linuxidc.com/Linux/2012-10/73265.htm
Oracle 中ROWNUM用法总结,ROWNUM 与 rowid 区别 http://www.linuxidc.com/Linux/2012-07/66121.htm
rowid走索引之嫌疑犯抓获 http://www.linuxidc.com/Linux/2012-06/62302.htm
Oracle利用rownum和rowid分页 http://www.linuxidc.com/Linux/2012-04/58301.htm
2.扩展ROWID
从Oracle 8i开始使用扩展rowid标识行物理地址
扩展rowid使用base64编码行的物理地址,编码字符包含A-Z, a-z, 0-9, +,
和/。
扩展rowid由四部分组成:OOOOOOOFFFBBBBBBRRR:
其中:
- OOOOOO:数据对象编号(6位显示)
- FFF:相关数据文件编号(3位显示)
- BBBBBB:数据块编号(6位显示)
- RRR:数据块中行编号(3位显示)
3.受限ROWID
为了兼容Oracle8i以前的应用使用受限rowid标识行物理地址
受限rowid使用二进制标识行的物理地址,当使用SQL*Plus查询时,二进制被转换为VARCHAR2/十六进制显示。
受限rowid有三部分组成:BBBBBB.RRRR.FFFF(block.row.file):
- BBBBBB:数据库块编号(6位显示)
- RRRR:数据块找中行编号(4位显示)
- FFFF:数据文件编号(4位显示)
4.ROWID内部存储
对于内部ROWID存储结构,扩展ROWID在大多数平台上采用10个字节存储,受限ROWID6个字节存储。具体规则如下:
- 数据对象编号-----32bit
- 数据文件编号------10bit
- 数据块编号--------22bit
- 数据块中行编号----16bit
Oracle 8i以前,rowid占用6个字节空间,分别是22bit的block#,16bit的row#,10bit的file#。
从Oracle 8i开始,rowid占用10个字节空间,分别是32bit的object#,10bit的rfile#,22bit的block#,16bit的row#。新增了32bit的object#。受限rowid的file#t基于整个数据库,扩展rowid的rfile#基于表空间。
5.base 64编码
索引
对应字符
索引
对应字符
索引
对应字符
索引
对应字符
0
A
17
R
34
i
51
z
1
B
18
S
35
l
52
0
2
C
19
T
36
k
53
1
3
D
20
U
37
l
54
2
4
E
21
V
38
m
55
3
5
F
22
W
39
n
56
4
6
G
23
X
40
o
57
5
7
H
24
Y
41
p
58
6
8
I
25
Z
42
q
59
7
9
J
26
a
43
r
60
8
10
K
27
b
44
s
61
9
11
L
28
c
45
t
62
+
12
M
29
d
46
u
63
/
13
N
30
e
47
v
14
O
31
f
48
w
15
P
32
g
49
x
16
Q
33
h
50
y
- Oracle中ROWID详解
- Oracle的Rowid详解
- Oracle rowid详解
- oracle rowid 详解
- Oracle rowid详解 .
- Oracle ROWID详解
- oracle rowid详解
- Oracle rowid 详解
- Oracle ROWID详解
- [Oracle] rowid详解
- Oracle中ROWID详解
- [Oracle] rowid详解
- oracle rowid 详解
- 详解ORACLE ROWID之来龙去脉
- Oracle 10g 中的ROWID详解
- Oracle 10g 中的ROWID详解
- oracle rowid
- ORACLE ROWID
- 什么是性能测试?
- 一步一步教你Socket编程
- 初识RMAN2:12C中数据文件和归档日志的保留策略
- 自定义控件-侧拉菜单
- 华为的模式
- Oracle ROWID详解
- UI基础-XML、JSON 数据结构解析
- 运算符重载
- 关于Handler 使用This Handler class should be static or leaks might occur 警告处理
- 手册下载
- 09_Java运算符
- C++学习网站
- 一个挑剔的吃货(水桶问题)
- vector调用erase 后运行时异常vector iterators incompatible