网站首页 > 技术文章 正文
1. 什么是rowid
ROWID 是一个类似于rownum的伪列,用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一, 数据库的大多数操作都是通过ROWID来完成的,而且使用ROWID来进行定位,速度是最快的. rowid的是基于64位编码的18个字符显示(数据对象编号(6) +文件编号(3) +块编号(6)+ 行编号(3)=18位),示例如下:
AAAUq0 AAF AAAAMb AAA
AAAUq0 代表对像编号
AAF 代表文件编号
AAAAMb 代表块编号
AAA 代表行编号
64号编码与10位编码的对应关系如下:
上面的rowid的对应关系为:
2. Rowid的作用
2.1. 通过rowid快速定位一行数据
我们可以查询表中数据行的rowid,示例如下:
我们也可以通过rowid唯一定位一行数据,示例如下:
Oracle内置的DBMS_ROWID包也可以完成对rowid的解析:
2.1.1. 获取rowid所属对像:
通过DBMS_ROWID.rowid_object函数解析rowid所属数据对像,示例如下:
根据解析出来的id查找对像名称,示例如下:
可以看出此rowid是属于ghz用户下的customer表。
2.1.2. 获取rowid所在的文件:
通过DBMS_ROWID.rowid_relative_fno函数获取数据文件编号:
再根据文件编号查找文件的基本信息:
可以看出这行数据在表空间TBS_DATA_001下的D:\ORACLE\ORADATA\SMARTDB\TBS_DATA_001.DBF数据文件中
2.1.3. 根据rowid中的block号获取对像信息:
首先解析rowid的block编号
再根据block编号,结合文件编号获取extent的信息。从而定位对像信息.
3. 哪些情况会引起rowid的变化
大部分情况下,一行数据生成完后,rowid就已经生成,不会再进行变化,如下的操作,可以会引起rowid的变下。
1:表空间的迁移
2:表和分区压缩
3:在更新数据时引起了行迁移
示例如下:
在没有进行表空间迁移之前,表中的数据如下:
执行表的表空间迁移:
将数据迁移到users表空间
迁移后的rowid如下:
可以看到两行数据的rowid都发生了变化。
下一次会发一篇rowid与索引相关知识的总结,欢迎关注.
猜你喜欢
- 2025-07-24 这10种分布式ID,太绝了!(什么叫分布式io)
- 2025-07-24 Windows10安装Java8(Windows10安装程序运行此工具时出现问题)
- 2025-07-24 Linux新手入门系列:Linux下jdk安装配置
- 2025-07-24 Android-x86现已基于5.1.1 Lollipop:支持UEFI和64位内核
- 2025-07-24 Java开发环境的准备流程!(java开发环境包括哪些部分?需要安装哪些软件?)
- 2025-07-24 来来来!一文告诉你Eclipse的正确安装使用姿势,你都清楚吗?
- 2025-07-24 PowerDesigner在64位JDK填坑记.md
- 2025-07-24 考勤门禁系统软件(门禁考勤管理系统软件)
- 2024-10-26 PROC访问Oracle崩溃,出core oracle v$process
- 2024-10-26 FineBI太难?这些准备工作没做好,难怪效能发挥不到10%
你 发表评论:
欢迎- 633℃几个Oracle空值处理函数 oracle处理null值的函数
- 626℃Oracle分析函数之Lag和Lead()使用
- 614℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 609℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 606℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 599℃【数据统计分析】详解Oracle分组函数之CUBE
- 588℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 574℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- CVE-2025-30762|Oracle(java oracle)
- 低代码可能铲不掉“屎山”,但能让这个它更有「型」
- 科技大事件:新苹果手表可通过击掌或握手来传递信息
- 你的百万级上下文窗口大模型,可能并没有你想象中那么强
- DApp 开发中的安全测试(软件测试过程中安全测试的具体应用场景和测试思路)
- 盘点Java中最没用的知识⑧:这3个过时套路,你还在代码里硬撑?
- 机房硬件设备及Oracle数据库软件维护服务项目竞争性磋商公告
- 微软与甲骨文扩大合作关系,推出Oracle Database@Azure
- JPA实体类注解,看这篇就全会了(java实体类注解)
- Java反射机制最全详解(图文全面总结)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)