Oracle数据文件大小限制原因

rowid:数据库中行的全局唯一地址,对于数据中的第一行,

rowid伪列返回行的地址。


rowid值主要包含以下信息:
  1.对象人数据对象编号
  2.该行所在的数据文件中的数据块
  3.该行中数据块的问位置
  4.数据行所在的数据文件

   oooooo:数据对象编号(6位表示)
   fff:相关数据文件编号(3位表示)
   bbbbbb:数据块编号(6位表示)
   rrr:数据块中行的编号(3位表示)

rowid内部存储,扩展rowid在大多数平台上采用10个字节存储
   规则如下:
        数据对象编号------32bit
        数据文件编号------10bit
        数据块编号--------22bit
        数据块中行编号----16bit     

因为 rowid 用 22 位来表示 block 号,那这22位最多只能代表

2^22-1个数据块。

则oracle数据文件大小限制公式:
   
   oracle maximum file size = db_block_size *( 2^22-1)

   则当数据块大小为8k时:
   
   oracle maximum file size = 8 * (2^22-1)K= 2^25K = 32G
   (1G=1024M=1024*1024K=2^20K)

你可能感兴趣的:(数据库)