zoukankan      html  css  js  c++  java
  • Oracle的rowid结构解析

    SQL> select rowid,deptno from dept;

    ROWID                  DEPTNO
    ------------------ ----------
    AAAMfNAAEAAAAAQAAA         10
    AAAMfNAAEAAAAAQAAB         20
    AAAMfNAAEAAAAAQAAC         30
    AAAMfNAAEAAAAAQAAD         40

     

    ROWID结构解析
    对象号 文件号 块号 行号
    AAAMfN AAE AAAAAQ AAA


    如何得知这些编号对应的十进制编码值呢(rowid是基于64位编码的18个字符显示的,对象号(6)+文件号(3)+块号(6)+行号(3)),其中
    A-Z    0-25
    a-z    26-51
    0-9    52-61
    +/     62-63
    共64位,

    计算公式:d*(b^p)
    d      表示字符对应的十进制编码值
    b      64
    p      从右至左,每个对象从0开始计数

    比如计算rowid=AAAMfNAAEAAAAAQAAA的块号:

    AAAMfN—对象号    —— 51149
    N – 13*(64^0)=13
    f – 31*(64^1)=1984
    M – 12*(64^2)=49152
    A –  0*(64^3)=0
    A –  0*(64^4)=0
    A –  0*(64^5)=0

    AAE—文件号        —— 4
    E – 4*(64^0)=4
    A – 0*(64^1)=0
    A – 0*(64^2)=0

    AAAAAQ—块号     —— 16
    Q –16*(64^0)=16
    A – 0*(64^1)=0
    A – 0*(64^2)=0
    A – 0*(64^3)=0
    A – 0*(64^4)=0
    A – 0*(64^5)=0

    AAA—行号            —— 0
    A – 0*(64^0)=0
    A – 0*(64^1)=0
    A – 0*(64^2)=0

    SQL> select  dbms_rowid.rowid_object(rowid) objectid--对象号
      2         ,dbms_rowid.rowid_relative_fno(rowid) fileid--文件号
      3         ,dbms_rowid.rowid_block_number(rowid) blockid--块号
      4         ,dbms_rowid.rowid_row_number(rowid) rownums--行号
      5         ,deptno
      6  from dept;

    OBJECTID     FILEID    BLOCKID    ROWNUMS     DEPTNO
    ---------- ---------- ---------- ---------- ----------
         51149          4         16          0         10
         51149          4         16          1         20
         51149          4         16          2         30
         51149          4         16          3         40

     

     

  • 相关阅读:
    转DataBinder.Eval总结
    ASP.NET环境下XML导出导入数据方法
    iOS开发中GCD在多线程方面的理解
    hdu 1678 优先队列
    hdu 1565 状态压缩DP
    hdu 1175 连连看
    hdu 1078 记忆化搜索
    hdu 1506
    hdu 1521 记忆化搜索
    三大博弈[转]
  • 原文地址:https://www.cnblogs.com/toughhou/p/3778750.html
Copyright © 2011-2022 走看看