rowid 由
数据对象号 占6个字符,
相对文件号 占3个字符,
块号       占6个字符,
行号       占3个字符
             共占18个字符.
一个ROWID在磁盘上需要10个字节的存储空间.其中 数据对象号32位,相对文件号10位,块号22们,行号16位,共80位10个字节,问题是:
一个字符占用一个字节,18个字符应该占用18个字节,144位才对呀?

解决方案 »

  1.   

    rowid实际上存储的并不是你看的字符串,而是转换成数字存储的。看到的编码是根据数字按64进制的方式转换而来。可以看一下:select dump(rowid)  from dual;
    比如输出:
    Typ=69 Len=10: 0,0,0,222,0,64,6,82,0,0
    表示长度为10,后面是各个字节的大小。或者用16进制:
    select dump(rowid,16)  from dual;
    输出:
    Typ=69 Len=10: 0,0,0,de,0,40,6,52,0,0
      

  2.   

        真是无语了,你只要记住:
         rowid :  返回的是该行地址,它可以唯一的标识数据库中的每一行