ORACLE ROWID
物理 rowid[physical rowid]:用于存儲(chǔ)常規(guī)表,聚簇表,表分區(qū)及子分區(qū),索引,索引分區(qū)及子分區(qū)數(shù)據(jù)行的地址。
邏輯 rowid[logical rowid]:用于存儲(chǔ)索引組織表數(shù)據(jù)行的地址。
物理 rowid 數(shù)據(jù)類(lèi)型有兩種格式:
擴(kuò)展 rowid[extended rowid]:格式支持與表空間相關(guān)的數(shù)據(jù)塊地址,能夠高效地定位分區(qū)表及分區(qū)索引中的數(shù)據(jù)行,同樣也能用于對(duì)非分區(qū)表及非分區(qū)索引進(jìn)行高效地檢索。在 Oracle8i(或更高版本)數(shù)據(jù)庫(kù)中創(chuàng)建的表及索引均使用擴(kuò)展 rowid。
受限 rowid[restricted rowid]:格式的作用是為 Oracle 7 或更早版本的數(shù)據(jù)庫(kù)應(yīng)用程序提供向后兼容能力。
擴(kuò)展 rowid [數(shù)據(jù)對(duì)象編號(hào)+文件+塊+行] (80 bit 位)
使用 64 進(jìn)制對(duì)每個(gè)數(shù)據(jù)行的物理地址進(jìn)行編碼。編碼字符為 A-Z,a-z,0-9,+,和 /。
擴(kuò)展 rowid 的格式可分為 4 段,OOOOOOFFFBBBBBBRRR
OOOOOO:數(shù)據(jù)對(duì)象編號(hào)[data object number]用于確定數(shù)據(jù)庫(kù)的段。位于相同數(shù)據(jù)段中的方案對(duì)象具有相同的數(shù)據(jù)對(duì)象編號(hào)。
FFF:與表空間相關(guān)的數(shù)據(jù)文件編號(hào)[datafile number],代表包含此行的數(shù)據(jù)文件。
BBBBBB:包含數(shù)據(jù)行的數(shù)據(jù)塊[data block]。數(shù)據(jù)塊編號(hào)與其所在的數(shù)據(jù)文件相關(guān),而非與表空間相關(guān)。因此兩個(gè)具備相同數(shù)據(jù)塊編號(hào)的數(shù)據(jù)行可能存在于同一個(gè)表空間的不同數(shù)據(jù)文件中。
RRR: 數(shù)據(jù)塊中的數(shù)據(jù)行。
可以使用 DBMS_ROWID 包通過(guò)擴(kuò)展 rowid 獲取數(shù)據(jù)庫(kù)對(duì)象信息,在擴(kuò)展格式及受限格式間轉(zhuǎn)換 rowid。
受限 rowid [塊+行+文件](48 bit 位)
塊:含數(shù)據(jù)行的數(shù)據(jù)塊[data block](示例中為 DD5)。數(shù)據(jù)塊編號(hào)與其所在的數(shù)據(jù)文件相關(guān),而非與表空間相關(guān)。因此兩個(gè)具備相同數(shù)據(jù)塊編號(hào)的數(shù)據(jù)行可能存在于同一個(gè)表空間的不同數(shù)據(jù)文件中。
行:數(shù)據(jù)行[row]在數(shù)據(jù)塊中的位置(示例中各行分別為 0,1,2)。數(shù)據(jù)塊內(nèi)的行號(hào)總是從 0 開(kāi)始。
數(shù)據(jù)文件:數(shù)據(jù)行所在的數(shù)據(jù)文件[datafile](示例中的文件號(hào)為 1)。數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)文件編號(hào)總是從 1 開(kāi)始,數(shù)據(jù)文件編號(hào)在一個(gè)數(shù)據(jù)庫(kù)內(nèi)唯一。
使用 rowid
訪問(wèn)特定數(shù)據(jù)行的最快的方法。
了解數(shù)據(jù)表是如何組織的。
rowid 是數(shù)據(jù)表內(nèi)各數(shù)據(jù)行的唯一標(biāo)識(shí)。