Rowid 字段类型:

Rowid 是一行数据的一个唯一标识。

ROWID 是数据的详细地址,通过 rowid,oracle 可以快速的定位某行具体的数据的位置。 ROWID 可以分为物理 rowid 和逻辑 rowid 两种。普通的堆表中的 rowid 是物理 rowid,索引组织表(IOT)的 rowid 是逻辑 rowid。oracle 提供了一种 urowid 的数据类型,同时支持物理和逻辑 rowid。本文主要关注物理 rowid。

物理 rowid 又分为扩展 rowid(extended rowid)和限制 rowid(restricted rowid)两种格式。限制 rowid 主要是 oracle7 以前的 rowid 格式,现在已经不再使用,保留该类型只是为了兼容性。 所下面来做个例子,来帮助我们认识它:

SQL> create table test(id number,name varchar2(10));

Table created.

  

插入几条数据

SQL> insert into test values(0,'orcl');
SQL> insert into test values(1,'orcl');
SQL> insert into test values(2,'orcl');
SQL> insert into test values(3,'orcl');

查看表内容

SQL> select rowid,id,name from test;

ROWID                      ID NAME
------------------ ---------- ----------
AAAV5DAAOAAAACWAAA 0 orcl
AAAV5DAAOAAAACWAAB 1 orcl
AAAV5DAAOAAAACWAAC 3 orcl
AAAV5DAAOAAAACWAAD 2 orcl

Rowid 是一个隐藏的字段,每一张表都存在,默认查看一张数据的时候不会出现。只有特意加上 rowid 字段才会出现。

Rowid 的结构:

Rowid 的显示形式

我们从 rowid 伪列里 select 出来的 rowid 是基于 base64 编码,一共有 18 位,分为 4 部分:

OOOOOOFFFBBBBBBRRR

现在的格式是 9i 及以后版本的格式。

前 6 位( OOOOOO )为数据对象 ID,一张表、一个所引都是一个数据对象,oracle 都会分配给他们一个唯一的数据对象。

紧跟的 3 位( FFF )为相对的文件 ID,我们知道表空间是由不同的文件组成,对象存储的某个文件里,每个文件会对应一个 ID 号

再接着的 6 位( BBBBBB )为块 ID ,文件是由块组成的,每个块也有一个唯一的 ID 编号。

最后 3 位( RRR )为行 ID ,每个块又可划分成行,每个行也有一个 ID 号。

可以根据64位编码表转义到具体的数据对象ID、文件ID、块ID、行ID。

select dbms_rowid.rowid_object(rowid) obj_id,

dbms_rowid.rowid_relative_fno(rowid) rfile_id,

dbms_rowid.rowid_block_number(rowid) block_id,

dbms_rowid.rowid_row_number(rowid) row_id,

dbms_rowid.rowid_to_absolute_fno(rowid,'TEST','ITPUX') file#

from test.itpux;

SQL> select dbms_rowid.rowid_object(rowid) obj_id,
2 dbms_rowid.rowid_relative_fno(rowid) rfile_id,
3 dbms_rowid.rowid_block_number(rowid) block_id,
4 dbms_rowid.rowid_row_number(rowid) row_id,
5 dbms_rowid.rowid_to_absolute_fno(rowid,'TEST','TEST') file#
6 from test.test; OBJ_ID RFILE_ID BLOCK_ID ROW_ID FILE#
---------- ---------- ---------- ---------- ----------
89667 14 150 0 14
89667 14 150 1 14
89667 14 150 2 14
89667 14 150 3 14

Oracle表的Rowid字段的更多相关文章

  1. oracle表名、字段名大小写问题。

    oracle  表名 .字段名 默认不区分大小写,除非建表语句中带双引号 如CREATE TABLE "TableName"("ID" number). CRE ...

  2. 在oracle表中增加字段,并调整字段的顺序

    增加字段的语句很简单,以用户身份连接oracle服务: alter table tablename add(colname coltype); # 填上表名.字段名.字段类型 修改字段顺序前,查看表中 ...

  3. Oracle表的维护(字段,重命名表名)

    案例:银行里建的开卡信息 字段 字段类型 Id Number name Varchar2(64) sex Char2() birth Date money Number(10,2) 创建银行卡表 cr ...

  4. Oracle 表空间修改字段大小

    1.修改字段大小 当表中已经存在数据,就不能直接修改某字段大小,需要新建一个字段来过渡   ALTER TABLE TABLE RENAME COLUMN GRP TO FUND_GRP_1; ); ...

  5. oracle表中某个字段含有字符回车、空格的手动修改方式

    select t.*, t.rowid from TB_SD_STANDARD_CHOOSE_ADVISE t where t.id =323900000 update TB_SD_STANDARD_ ...

  6. oracle的表名、字段名、constraint名的长度限制分别是多少?

    文章出处:http://blog.csdn.net/haiross/article/details/38379615 Oracle:表名.字段名.constraint名的长度有限制 oracle 的命 ...

  7. Oracle 实现表中id字段自增长

    Oracle 实现表中id字段自增长 最近正在学习Oracle的时候发现Oracle表中的字段不能像mysql中那样可以用auto increment修饰字段从而让id这种主键字段实现自增长. 那Or ...

  8. spool命令、创建一个表,创建而且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站

      1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建 ...

  9. 获取oracle 表字段,表名,以及主键之类等等的信息。

    获取表名:  Oracle的user_talbes用于记录了用户表信息. select * from user_tables  获取某个表的字段: USER_TAB_COLS中记录了用户表的列信息.下 ...

随机推荐

  1. java+大文件上传+下载

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

  2. CSS3 box-sizing:content-box | border-box

    box-sizing:content-box | border-box 默认值:content-box 适用于:所有接受width和height的元素 继承性:无 content-box: paddi ...

  3. hdu 5532 Almost Sorted Array nlogn 的最长非严格单调子序列

    Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Ot ...

  4. java中如何补齐汉字字符

    一个汉字相当于两个字符,所以需要输入法的时候切换到[中文全角],中文全角占用2个字符(一个空格),半角占用1个字符

  5. [CSP-S模拟测试]:Drink(模拟)

    题目传送门(内部题10) 输入格式 输入第一行三个数$N,M,Q$分别表示棋盘的行数.列数和操作个数.接下来$N$行每行$M$个数表示一开始棋盘上宝物的价值.接下来$Q$行每行$3$个数$x,y,c$ ...

  6. css垂直居中布局总结

    简介 总结记录一下经常需要用到垂直居中布局,欢迎补充(空手套...O(∩_∩)O) 以下栗子如果未特别标注同一使用这样的html结构 <div class="container&quo ...

  7. kafka 性能测试脚本

    [参考文章]:Kafka自带的性能测试脚本 1. 生产消息压测脚本 1.1 脚本及参数 bin/kafka-producer-perf-test.sh  --topic kafka-test-0 -- ...

  8. logback条件日志配置

    logback支持条件日志配置,支持在测试环境和正式环境使用不同的参数启用不同的日志配置,从而避免手动修改日志配置文件.项目除了引入logback的包以外,还需要引入构件org.codehaus.ja ...

  9. Python定时框架 Apscheduler 详解【转】

    内容来自网络: https://www.cnblogs.com/luxiaojun/p/6567132.html 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序, ...

  10. yum 时一直停在Determining fastest mirrors 界面

    [root@fanyk ~]# yum redis Loaded plugins: fastestmirror Determining fastest mirrors 在yum makecache时, ...