首页 > 数据库 >oracle rowid字段解析

oracle rowid字段解析

时间:2023-01-14 15:32:07浏览次数:37  
标签:SYS test 字段 rowid oracle ID simdb row

文档课题:oracle rowid字段解析.
1、相关概念
rowid是一行数据的唯一标识,是数据的详细地址,通过rowid可快速定位某行数据的具体位置. 其可分为物理rowid和逻辑rowid.普通堆表的rowid是物理rowid,索引组织表(IOT)是逻辑rowid.此外oracle提供一种urowid的数据类型同时支持物理和逻辑rowid.本文主讲解物理rowid.
物理rowid又分扩展rowid(extended rowid)和限制rowid(restricted rowid)两种格式.限制rowid主要是oracle 7以前的格式,现已不再使用,保留该类型只是为了兼容性.
2、操作演练
SYS@simdb> create table test (id number,name varchar2(10));

Table created.

SYS@simdb> insert into test values(0,'leo');

1 row created.

SYS@simdb> insert into test values(1,'alina');

1 row created.

SYS@simdb> insert into test values(2,'peter');

1 row created.

SYS@simdb> insert into test values(3,'cherry');

1 row created.

SYS@simdb> select rowid,id,name from test;

ROWID ID NAME
------------------ ---------- ----------
AAASbuAABAAA+aBAAA 0 leo
AAASbuAABAAA+aBAAB 1 alina
AAASbuAABAAA+aBAAC 2 peter
AAASbuAABAAA+aBAAD 3 cherry

说明:oracle中每张表都有rowid,该列为隐藏字段.默认查看表数据时不会出现,只有特意加上rowid字段才会出现.
3、相关知识
rowid的显示形式:select出来的rowid是基于base64编码,共有18位且分为4部分.
OOOOOOFFFBBBBBBRRR
说明:以上是9i及以后版本的格式.
a、前6位(OOOOOO)为数据对象ID,表、索引都是数据对象,oracle会分配一个唯一的数据对象ID.
b、紧跟的3位( FFF )为相对文件ID,表空间由不同文件组成,对象存储在某个文件里,每个文件会对应一个ID号.
c、再接着的6位( BBBBBB )为块ID ,文件由块组成,每个块也有一个唯一的ID编号.
d、最后3位( RRR )为行ID ,每个块又划分成行,每个行也有一个ID号.
4、具体ID信息
可根据64位编码表转义到具体的数据对象ID、文件ID、块ID、行ID.
SYS@simdb> 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, 'SYS', 'TEST') file#
6 from sys.test;

OBJ_ID RFILE_ID BLOCK_ID ROW_ID FILE#
---------- ---------- ---------- ---------- ----------
75502 1 255617 0 1
75502 1 255617 1 1
75502 1 255617 2 1
75502 1 255617 3 1

以上内容均来自以下网址,如有侵权请联系博主删帖.
参考文档:https://www.bbsmax.com/A/gAJGVkl1zZ/

标签:SYS,test,字段,rowid,oracle,ID,simdb,row
From: https://blog.51cto.com/u_12991611/6007611

相关文章

  • 如何通过表名获取所有字段信息
    1.前言通常情况下,如果想写一些比较通用的应用程序,我们需要通过表名去了解整个表的情况,才能编写一些比较通用的数据库工具.通过表名获取字段名有多种方式:第一......
  • Oracle:字符串的拼接、截取、查找、替换
    一.拼接:1.使用“||”来拼接字符串:select'拼接'||'字符串'asStrfromdual;2.使用concat(param1,param2)函数实现:selectconcat('拼接','字符串')asStrf......
  • http 请求头 content-type 字段值
    Content-type定义了http请求的数据类型。如果设置在请求头中,则定义的是请求体的数据类型;如果设置在响应头中,则定义的是响应体的数据类型;请求头--Request-Headers:一般......
  • ORACLE对象-高级(视图、序列、索引)
    ORACLE对象-高级一、视图(一)什么是视图视图和表的区别:视图是实体表的映射,视图和实体表区别就是于视图中没有真实的数据存在。视图中存储的是SQL语句什么时候使用视图:1.为......
  • mysql表字段值处理回车符换行符
    查询数据库时,字段值一直无法匹配上,但是看数据库,觉得没问题,仔细排查后,发现可能是数据入口有问题,导致这个字段的所有的值,后面都加的有回车和换行符。鼠标悬浮时没问题,但是如果......
  • CloudCanal实战-Oracle数据迁移同步到PostgreSQL
    简述本篇文章主要介绍如何使用CloudCanal构建一条Oracle到PostgreSQL的数据同步链路技术要点缩小的数据库权限要求CloudCanal对Oracle数据库的高权限要求,主要......
  • docker安装oracle
    我参考了 https://blog.csdn.net/u010148813/article/details/1261527341、我用的虚拟机(宿主机)是Ubunturoot@jin-virtual-machine:/etc/docker#lsb_release-aNoLSB......
  • elasticsearch(es)根据指定字段去重查询
     distinctFieldName 就是去重字段,这个字段必须是keyword类型不然会报错 //指定去重字段CollapseBuildercollapseBuilder=newCollapseBuilder......
  • datax的使用 把oracle数据库的数据同步到Mysql库
    一、liunx环境 1、系统版本:RedHat4.8.5-362、下载datax,直接安装,解压可以二、数据库及表的准备1、oracle表,目前有3条数据; 2、mysql库建相对应的表及字段 ......
  • Oracle数据库软件包MD5校验HASH值汇总
    ################################Linux_x64_11gR211.2.0.4################################p13390677_112040_Linux-x86-64_1of7.zip大小:1395582860字节 MD5:......