Oracle rowid
来源:互联网 发布:金正大待遇怎么样知乎 编辑:程序博客网 时间:2024/05/22 08:04
Oracle rowid
行的ROWID指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID来存取数据可以快速定位到目标数据上,是Oracle存取单行数据的最快方法。
为了通过ROWID存取表,Oracle 首先要获取被选择行的ROWID,或者从语句的WHERE子句中得到,或者通过表的一个或多个索引的索引扫描得到。Oracle然后以得到的
ROWID为依据定位每个被选择的行。
扩展ROWID格式为:
000000 FFF BBBBBB RRR
数据对象号 相对文件号 块号 行号
个扩展ROWID在硬盘上需要10个字节的存储空间,它是用18个字符来显示。扩展ROWID的组成如下:
1)数据对象号(data object number):被赋予每一个对象,它在一个数据库中是唯一的。
2)相对文件号(relative file number):对同一个表空间中的每一个文件是唯一的。
3)块号(block number):为相对文件中包含数据行的块的位置
4)行号(row number):标识了块中行目录的位置
Oracle在内部存储扩展ROWID时,数据对象号需要32位,相对文件号需要10位,块号需要22位,而行号需要16位,加起来总共80位或10个字节。
扩展ROWID的显示是使用一种64位编码。其中:数据对象号为6位,相对文件号为3位,块号6位,而行号为3位。这种64位编码模式使用的字符为:A-Z,a-z,0-9,还有+和/,总共
64个字符。
使用ROWID可以定位一个数据库中的任何数据行。因为一个段只能存放在一个表空间内。所以通过使用数据对象号Oracle服务器就可以找到包含数据行的表空间。之后使用表
空间中的相对文件号就可以确定文件,再利用块号就可以确定包含所需数据行的数据块,最后使用行号就可以定位数据行的行目录项。使用行目录项可以定位数据行的起始地址。
限制性ROWID:
BBBBBBBB RRRR FFFF
块号 行号 文件号
限制性ROWID与扩展ROWID最大的区别是它没有数据对象号。限制性ROWID是在Oracle7或之前版本中使用的。Oracle系统在内部存储限制性ROWID时仅用6个字节,因此
它是没有包括数据对象号的。
正因为如此:
ORACLE 7或以前,整个数据库数据文件不得超过1022个
ORACLE 8或以后,现在表空间数不得超过1022个,每个表空间中的数据文件不得超过1022个,整个数据库最多数据文件65533个
- 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 ROWID
- oracle-rowid
- Oracle中的Rowid
- Oracle pseudo column RowID
- PHP 注释文档标记
- MDI开发中相关问题集
- 如何获得一个整数的二进制表达中有多少个1?
- Block 编程(翻译官方文档)
- 探讨未来网站发展趋势
- Oracle rowid
- 使用frameset,怎么在session,timeout后,点击任何链接都能整体返回index页面
- mysql卸载说明
- 基于Flash的图表组件-FusionCharts
- axis2调用天气的webservice
- 将字符串中的字符'*'移到串的前部分 的一个解法
- ANDROID入门1:在Ubuntu上为Android系统编写Linux内核驱动程序
- oracle与java类型对照
- 清楚android项目缓存目录