Rowid 表示一个表中每一行的唯一地址,是一串64进制的字符串,可以在查询中使用rowid伪列查看每一行的rowid,如图:
rowid采用64进制编码,其中:
- A~Z 表示 0~25
- a~z 表示 26~51
- 0~9 表示 52~61
- + 表示62
- / 表示 63
rowid共有18位,分为四个区域,其中:
- 1~6位 data_object_id(对应dba_objects中的data_object_id字段)
- 7~9 位 相对数据文件id,也就是表空间内部的数据文件编号,每个表空间最多有1022个文件(v$datafile 中的 RFILE#字段)
- 10~15位 文件内 块号 block_id
- 16~18位 块内的 行号 row_id
例: 分析rowid:AAADpg AAE AAAAOs AAA
7~9位 :AAE = 0*64*64+0*64+4 = 4 (A代表0,E代表4)
10~15位:AAAAOs = 14*64+44 = 940 (O代表14,s代表44)
16~18 位:AAA = 0
也就是这一行在4号文件,940个块,第0行