首页 > 数据库 > Oracle > Oracle中rownum与rowid使用上的问题
问题描述:
使用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博客 ” ,链接:https://blog.itpub.net/7416120/viewspace-1024873/ ,如需转载,请注明出处,否则将追究法律责任。