Oracle的DataFile大小問題
?
?
??? Oracle的數(shù)據(jù)文件大小是有限制的,最近在創(chuàng)建datafile的時(shí)候就遇到了問題,所以專門去查找了一些資料,把這個(gè)問題搞清楚了。限制是很簡(jiǎn)單直接的,但是作為DBA是必須要了解的。具體的問題是這樣的:
?
?
??? 在創(chuàng)建一個(gè)100G的表空間時(shí)遇到了報(bào)錯(cuò):
?
SQL> create tablespace wxq_tbs datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\WANGXIAOQI\DATAFILE\WXQ_TBS.DBF' size 10G
2?? autoextend on next 2G maxsize 100G;
?
ORA-03206: maximum file size of (13107200) blocks in AUTOEXTEND clause is out of range
?
?
??? 按照Oracle文檔的描述,每個(gè)datafile的最大容量為(2^22-1)個(gè)block,即4194303個(gè)block,而當(dāng)前數(shù)據(jù)庫(kù)的block大小是8k,也就是說最大的文件大小是32G,要建100G的datafile就不行了。
?
??? 也就是說,以O(shè)racle的限制,如果要建普通的datafile,最大的大小就是 (2^22-1)*32K = 128G (注:Oracle最大支持block為32k)。存在這個(gè)限制是因?yàn)镺racle的內(nèi)部ROWID使用22位2進(jìn)制數(shù)來存儲(chǔ)不同的block號(hào),所以22位最多代表(2^22-1)個(gè)block。
?
?
??? 為了解決數(shù)據(jù)文件大小的問題,Oracle10g專門引入了bigfile tablespace,在bigfile tablespace里Oracle使用32位來存儲(chǔ)block號(hào),即比之前增大了1024倍,其最大文件大小從128G增加到128T。當(dāng)然如果使用bigfile tablespace,則需要注意OS的文件大小限制。
?
??? 例如在windows下,單個(gè)文件最大限制如下:
??? FAT12?????????? 8M??
??? FAT16?????????? 2G????
??? FAT32?????????? 4G??
??? NTFS??????????? 64GB??
??? NTFS5.0???????? 2TB??
?
?
?
?
??? 下面介紹一下Oracle 10g的bigfile tablespace創(chuàng)建語法,其實(shí)很簡(jiǎn)單:
?
SQL> create tablespace big_tbs datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\WANGXIAOQI\DATAFILE\BIG_TBS.DBF' size 20G
2?? autoextend on next 10G maxsize 100G;
?
Tablespace created.
??? 至于對(duì)其他的一些操作的影響比較復(fù)雜,暫時(shí)不做研究,有時(shí)間了專門了解一下。可以了解的基本特性是:會(huì)默認(rèn)得使用LMT和ASSM來對(duì)tablespace進(jìn)行管理。
?
?
?
??? 需要注意的是,對(duì)于bigfile tablespace來說,只允許創(chuàng)建一個(gè)datafile,而不允許再添加datafile。
?
SQL> alter tablespace big_tbs add datafile '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/big_tbs2.dbf' size 20G
?2 autoextend on next 10M maxsize 100M;
alter tablespace big_tbs add datafile '/opt/oracle/product/10.2.0/oradata/devMISowb/big_tbs2.dbf' size 20M
*
ERROR at line 1:
ORA-32771: cannot add file to bigfile tablespace
?
?
??? 最后刪除tablespace
?
SQL> drop tablespace big_tbs including contents cascade constraints;
?
?
?
?
?
About bigfile tablespace restrictions
----------------------------------------
?
?
?
?
?
?