Oracle中rownum與rowid使用上的問題

uuxa發表於2009-08-04

問題描述:

使用rownum反回一條記錄時,返回結果發生變化,與一個月前不同了。這其間資料庫未恢復過。

[@more@]

如:

select rownum, a.* from sometab a where rownum=1

上面的查詢結果,一般來說返回的值應當是固定的。原因是rowid值是固定的。

rowid是記錄表中儲存的記錄在資料檔案中的儲存位置。

它的結構如下:

8以上版本的ROWID組成
OOOOOOFFFBBBBBBRRR
8以下ROWID組成(也叫受限Rowid)
BBBBBBBB.RRRR.FFFF
其中,O是物件ID,F是檔案ID,B是塊ID,R是行ID
如果我們查詢一個表的ROWID,根據其中塊的資訊,可以知道該表確切佔用了多少個塊,進而知道佔用了多少資料空間(此資料空間不等於表的分配空間)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7416120/viewspace-1024873/,如需轉載,請註明出處,否則將追究法律責任。

相關文章