一、概念介绍
Oracle数据库使用rowid唯一的标识行。在数据库内部,rowid是一个保存数据库访问一行所需信息的结构。rowid不是物理地存储在数据库中,而是从存储数据的文件和块中计算出来。
二、rowid编码规则
extended rowid包括一个数据对象号。这个rowid类型对每一行的物理地址使用base 64编码。编码字符是A-Z、A-Z、0-9、+和/。
图1 rowid编码表
三、rowid格式
selectdbms_rowid.ROWID_CREATE(1,88063,4, 539,0) c_rowid from dual;
C_ROWID
------------------
AAAVf/ AAE AAAAIb AAA
图2 ROWIDFormat
extended rowid以四部分显示以rowid = OOOOOOFFFBBBBBBRRR为例:
OOOOOO: data object number;
FFF: data file number;
BBBBBB: data block number;
RRR: row number。
四、手工解析ROWID
select dbms_rowid.ROWID_CREATE(1,88063,4, 539,0) c_rowid from dual;
C_ROWID
------------------
AAAVf/ AAE AAAAIb AAA
图3 手工解析ROWID
五、OS层工具生成ROWID
mkdir -p /home/oracle/orastar
mv ora_crowid /home/oracle/orastar
export PATH=/home/oracle/orastar/:$PATH
图4 ora_crowid测试
工具下载:请关注公众号,回复“rowid”。
六、说明
1、以上内容为个人多次测试结果,由于个人原因,如有分析不足之处还请见谅及指正。
2、文章涉及内容,请勿在生产环境模拟。
昨日种种,皆成今我,切莫思量,更莫哀,从今往后,怎么收获,怎么栽。——胡适
感谢您的阅读,如果您觉得有所收获,也欢迎把文章分享给您的朋友。