Oracle ROWID详解
2015-12-02 22:52
423 查看
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 |
相关文章推荐
- SCN号与oracle数据库恢复的关系
- Oracle 中的一些重要V$ 动态性能视图,系统视图和表
- oracle常用动态性能视图
- oracle触发器调试
- Oracle exp imp 常见问题解决
- Mybatis+Oracle实现按条件分页查询
- Oracle异常date format picture ends before converting entire input string ora-01830oracle
- poi解析上传的Excel xlsx 保存到Oracle 趁还没忘记,留下
- pl/sql 连接远程oracle数据库
- win7,64位操作系统安装oracle
- 补装Windows下Oracle client的 OracleMTSRecoveryService
- Oracle 存储过程之通用分页查询
- HACMP 6.1 + ORACLE 10G RAC on AIX6.1 安装文档
- 什么是Oracle Solaris zones?
- Linux中与Oracle有关的内核参数详解
- oracle wm_concat 拼接乱码
- oracle user locke
- Oracle存储过程详解
- Oracle 分区表和普通表查询效率分析对比
- oracle进制-10进制跟2进制互转