Oracle中访问数据有两种方法,第一种便是大家都很熟悉的全表扫描,这种方式会从该表所占用的第一个extent的第一个block开始扫描,直至扫描到该表的高水位线(HWM,High water Mark);
第二种是rowid扫描,也就是直接通过数据行所对应的rowid去定位并访问数据。
rowid表示的是Oracle中的数据行记录所在的物理存储地址,可以通过DBMS_ROWID包查询到数据行的实际物理存储地址:
- dbms_rowid.rowid_relative_fno(rowid) ----文件id
- dbms_rowid.rowid_block_number(rowid) ----数据块
- dbms_rowid.rowid_row_number(rowid) ----数据行记录号
例:
set linesize 200
set pagesize 1000
col object_name for a30
col location for a20
select OBJECT_ID,OBJECT_NAME,rowid,dbms_rowid