rowid
| ROWID的格式 | ||||
| rowid | OOOOOO | FFF | BBBBBB | RRR |
| 說(shuō)明 | 數(shù)據(jù)對(duì)象號(hào) | 相對(duì)文件號(hào) | 數(shù)據(jù)塊號(hào) | 行號(hào) |
| 上述表格是Oracle 9i及以上版本數(shù)據(jù)庫(kù)中的rowid格式: 6位對(duì)象號(hào)+3位相對(duì)文件號(hào)+6位數(shù)據(jù)塊號(hào)+3位行號(hào),是一個(gè)18位的64進(jìn)制值。這個(gè)18位的64進(jìn)制值在數(shù)據(jù)庫(kù)內(nèi)卻是以10個(gè)bytes合計(jì)80個(gè)bit的二進(jìn)制數(shù)存放的,和我們直接看到的結(jié)果有所區(qū)別。 這里的64進(jìn)制和10進(jìn)制的對(duì)應(yīng)編碼如下: ? 其中, 6位的對(duì)象號(hào)在數(shù)據(jù)庫(kù)中是用32位二進(jìn)制來(lái)存放的,也就意味著一一個(gè)oracle數(shù)據(jù)庫(kù)中最多可以有232個(gè)對(duì)象,即4G個(gè)對(duì)象; 3位的相對(duì)文件號(hào)在數(shù)據(jù)庫(kù)中是用10位二進(jìn)制來(lái)存放的,也就意味著-一個(gè)表空間中最多可以容納210=1024去掉全0和全1個(gè)數(shù)據(jù)文件 , 即1022個(gè)數(shù)據(jù)文件; 6位的數(shù)據(jù)塊號(hào)用22位二進(jìn)制來(lái)存放的,也就意味著-個(gè)數(shù)據(jù)文件最多可以包含222=4M個(gè)數(shù)據(jù)塊; 3位的行號(hào)在數(shù)據(jù)庫(kù)中是用1 6位二進(jìn)制來(lái)存放的,也就意味著一一個(gè)數(shù)據(jù)塊上最多可以容納21 6-65536行記錄。 ? 對(duì)于大文件表空間下的rowid有如下特定的格式,這有別于小文件表空間下的rowid格式: 000000BBBBBBBBBRRR 即,6位的數(shù)據(jù)庫(kù)對(duì)象號(hào)+9位的數(shù)據(jù)塊號(hào)+3位的行號(hào),同樣也是以18位的64進(jìn)制值來(lái)表示80位的二進(jìn)制數(shù)。只不過(guò),在這里少了相對(duì)文件號(hào),其中6位的數(shù)據(jù)庫(kù)對(duì)象號(hào)用32位的二進(jìn)制數(shù)來(lái)存放(即-一個(gè)數(shù)據(jù)庫(kù)最多可以擁有232=4G個(gè)數(shù)據(jù)塊對(duì)象),9位的數(shù)據(jù)塊號(hào)同樣用32位的二進(jìn)制數(shù)來(lái)存放(即一個(gè)大文件表空間可以擁有232個(gè)數(shù)據(jù)塊兒),最后3位的行號(hào)占用剩余的16位的二進(jìn)制數(shù),正好占滿80位。 ? ? 大文件相對(duì)文件號(hào)為0,因?yàn)榇笪募谋淼膔owid格式中根本就不存在相對(duì)文件號(hào)的信息,最本質(zhì)的原因是大文件表空間下永遠(yuǎn)只能有且僅有1個(gè)數(shù)據(jù)文件。也就沒(méi)有相對(duì)文件號(hào)的概念了。同時(shí),對(duì)于大文件的表空間,如果數(shù)據(jù)塊大小為32K的話,那 我們可以在查詢列表中,把rowid偽列當(dāng)做普通的字段來(lái)查詢。 我們還可以通過(guò)數(shù)據(jù)庫(kù)提供給我們的工具包來(lái)獲取該信息: SQL> select rowid, 2 dbms _rowid.rowid_ _bject(rowid) object id,3 dbms, _kowid.rowid_ relative_ fnorowid) file_ id, 4 dbms_ rowid.rowid. bock _number(rowid) block_ jd ,5 dbms_ rowidrowid_ row_ number(rowid) num , 6 rowidtochar(rowid) from employees where employee_ jd=1007; ROWID ?OBJECT_ID FILEI _ID BLOCK_ ID ?NUM ROWIDTOCHAR(ROWID) AAAR5pAAF AAAADPAAA ?73321 ?5 ?207 ?: 0 AAAR5pAAFAAAADPAAA | ||||
?
?
?
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: RuntimeError: freeze
- 下一篇: linux命令复习之有关磁盘空间的命令