ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORACLE学习之三 ROWID的意义。

ORACLE学习之三 ROWID的意义。

原创 Linux操作系统 作者:zuwenjiang 时间:2011-09-08 15:57:40 0 删除 编辑
五.......ROWID的计算方法。
--64进制的数据

--实例
SQL> select rowid,id,name from t1;

ROWID                      ID NAME
------------------ ---------- --------------------
AAAMjiAAFAAAAAMAAA          1 a
AAAMjiAAFAAAAAMAAB          2 b

--A~Z 0~25
--a~z 26~51
--0~9 52~61
--+   62
--/   63

--AAAMji AAF AAAAAM AAA
前六位是该数据的段编号
AAAMji分别对应 0,0,0,12,35,34

SQL>select 12*64*64 + 35*64 + 34 as rowidvalue from dual  --结果可以得到是 51426

--查询该表的ID,也就是段ID(表和索引是段,有data_object_id的值),能得到一个数值(data_object_id的值)。这个

--数值和ROWID的前六位是相同的
SQL>select object_id ,data_object_id,object_name from dba_objects where object_name = 'T1'

 OBJECT_ID DATA_OBJECT_ID OBJECT_NAME
---------- -------------- ------------
     51426          51426 T1


AAF 代表 该数据所属于的数据文件编号;这里的值是5,即可以查出来文件名

SQL> select file_name from dba_data_files where file_id=5;

FILE_NAME
--------------------------------------------------------------------

D:\ORACLE\PRODUCT\10.2.0\OMF\ORCL\DATAFILE\O1_MF_XXX_76LB8FNJ_.DBF

AAAAAM 代表该行数据所属的第几个数据块。oralce默认每块8K字节。此数据在第12个数据块上。

AAA 代表该行数据是这个块上的第几条数据。这里可以看到,是第1条,序列号为0、

由上面的分析可以知道,第一个ROWID,是5号文件,块ID为12,这里的0号数据。

--从内存中选择该行所在对象在内存中的块编号的信息,,
--注意,这里是内存中的信息,重新启动后,不访问,则没有数据,因为使用的是data buffer。。
 SQL> select FILE#,BLOCK#,OBJD from v$bh where bjd =51426;

     FILE#     BLOCK#       OBJD
---------- ---------- ----------
         5         16      51426
         5         11      51426
         5         14      51426
         5          9      51426
         5         12      51426
         5         15      51426
         5         10      51426
         5         13      51426

可以看到该对象从 9开始,到16,一共占了8个块,这里是与以下查询吻合的。

SQL>select SEGMENT_NAME,FILE_ID,BLOCK_ID,BLOCKS from dba_extents where segment_name = 'T1'
SEGMENT_NAME FILE_ID    BLOCK_ID     BLOCKS
------------     ---------- ---------- ----------
T1                5          9            8
       
这时候,重新启动数据库之后,如果不使用slect * from t1,则v$bh中无此数据的块信息,除非访问过一次。
访问过,就留在databuffer中了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21143887/viewspace-706933/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-18

  • 博文量
    13
  • 访问量
    24451