zoukankan      html  css  js  c++  java
  • rowid结构浅析

    select rowid from dual

    AAAAB0AABAAAAOhAAA

    rowid结构如下:

    对象号    文件号   块号   行号
    XXXXXX    XXX     XXXXXX XXX

    因此,
    AAAAB0 对象号
    AAB    文件号
    AAAAOh 块号
    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=AAAAB0AABAAAAOhAAA的块号:
    AAAAOh
    33*(64^0)=33
    14*(64^1)=896
    0*(64^2)=0
    0*(64^3)=0
    0*(64^4)=0
    0*(64^5)=0

    块号就是33+896=929

    可以通过dbms_rowid包来获得相关信息:
    select  dbms_rowid.rowid_object(rowid) objectid--对象号
           ,dbms_rowid.rowid_relative_fno(rowid) fileid--文件号
           ,dbms_rowid.rowid_block_number(rowid) blockid--块号
           ,dbms_rowid.rowid_row_number(rowid) rownums--行号
    from dual

  • 相关阅读:
    如何较为方便的在GMap.Net中实现车辆运行轨迹
    WPF中在摄像头视频上叠加控件的解决方案
    Image Perimeters
    [DFS]排队(间隔排列)-C++
    稀疏图判定
    兔子问题(Rabbit problem)
    YCOJ过河卒C++
    洛谷P1076 寻宝
    P1993 小K的农场(差分约束)
    大Jump!
  • 原文地址:https://www.cnblogs.com/james1207/p/3299386.html
Copyright © 2011-2022 走看看