UROWID Internal
上一篇 /
下一篇 2007-05-15 00:00:00
/ 个人分类:Oracle
UROWID(Universal Rowid)表示一行数据的逻辑地址。一般情况下,索引组织表(IOT)和远程数据库(可以是非Oracle数据库)中的表需要用到UROWID。
UROWID的子类型
- 物理的(实际上就是物理ROWID加一个子类型标记字节)
- 逻辑的(基于主键,用于IOT)
- 远程的(其他库中的表)
该数据类型的内部类型代码是208,这可以通过dump函数看到。
UROWID的存储结构
第一个字节表示子类型,1 物理UROWID,2 逻辑UROWID,3 远程UROWID。
对于物理UROWID,从第二字节起,就是一个物理rowid,分别为:
object#(4),file#(2),block#(4),slot#(2)
对于逻辑UROWID,从第二字节起,分别为:
dba length(1),dba,slot length(1),slot,primary key lenth(1),primary key
对于远程UROWID,从第二字节起,分别为:
未压缩部分的长度,未压缩部分,压缩部分
附:Oracle数据类型的内部代码
Oracle并不在数据行中存储每个列的数据类型,类型信息只保存在数据字典COL$中。
| Datatype Code | Datatype Name |
| 114 | BFILE |
| 96 | CHAR, NCHAR |
| 12 | DATE |
| 183 | INTERVAL DAY TO SECOND REF |
| 182 | INTERVAL YEAR TO MONTH REF |
| 8 | LONG |
| 24 | LONG RAW |
| 2 | NUMBER |
| 23 | RAW |
| 111 | REF |
| 113 | REF BLOB |
| 112 | REF CLOB, REF NCLOB |
| 11 | ROWID |
| 180 | TIMESTAMP |
| 231 | TIMESTAMP WITH LOCAL TIME ZONE |
| 181 | TIMESTAMP WITH TIME ZONE |
| 208 | UROWID |
| 108 | User-defined type (object type, VARRAY, nested table) |
| 1 | VARCHAR2, NVARCHAR2 |
| 106 | MLSLABEL |
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: