以下文章主要是對Oracle數據文件的大小限制的方案的介紹,我們都知道racle數據文件的大小的存在限制與一個內部的,這個相關的限制就是:每個相關數據文件在最多的情況下只能包含2^22-1個數據塊。
這個限制也就直接導致了每個數據文件的最大允許大小。
在2K Block_size下,數據文件最大只能達到約8G
在32K的Block_size下,Oracle數據文件最大只能達到約16*8G的大小。
這個限制是由於Oracle的Rowid中使用22位來代表Block號,這22位最多只能代表2^22-1個數據塊。
為了擴展數據文件的大小,Oracle10g中引入了大文件表空間,在大文件表空間下,Oracle使用32位來代表Block號,也就是說,在新的技術下,大文件表空間下每個文件最多可以容納4G個Block.
那麼也就是說當Block_size為2k時,Oracle數據文件可以達到8T .
當block_size為32K時,數據文件可以達到128T.
上周在做2K block_size測試時,第一次遇到了這個限制:
SQL> alter tablespace eygle add datafile 'f:\eygle02.dbf' size 8192M; alter tablespace eygle add datafile 'f:\eygle02.dbf' size 8192M * ERROR 位於第 1 行: ORA-01144: 文件大小 (4194304 塊) 超出 4194303 塊的最大數
縮減一點,最後創建成功:
- SQL> alter tablespace eygle add datafile 'f:\eygle02.dbf' size 8191M reuse;
表空間已更改。
已用