測試環境:
操作系統:Win7 64位專業版
數據庫版本:64位Oracle10.2.0.4
DB_NAME:hoegh
表空間名稱:hoegh
在執行創建表空間語句時報錯,具體語句如下:
create tablespace hoegh
datafile 'S:\hoegh\hoegh01.dbf' size 20g
autoextend on next 1g maxsize 100g;
提示報錯:
ORA-03206: AUTOEXTEND 子句中 (13107200) 塊的最大文件大小超出範圍
後來查資料,說單個文件大小最大是32g,修改語句如下:
create tablespace hoegh
datafile 'S:\hoegh\hoegh01.dbf' size 20g
autoextend on next 1g maxsize 32g;
仍然報錯:
ORA-03206: AUTOEXTEND 子句中 (4194304) 塊的最大文件大小超出範圍
下面列表說明不同數據塊數據庫所能支持的最大物理文件大小:
數據塊的大小 物理文件的最大值 M
===============================================
2048 8191 M
4096 16383 M
8192 32767 M
16384 65535 M
create tablespace hoegh
datafile 'S:\hoegh\hoegh01.dbf' size 10g
autoextend on next 500m maxsize 20g;
下面,總結一下ORA-03206報錯的解決方案,推薦使用第一種解決方案。
一)不要創建單個文件超過32GB的表空間
如果你創建的表空間超過32GB,請把這個表空間存儲爲多個數據文件,每個文件不大於32GB。這樣,就可以成功的創建表空間。
二)擴大db_block_size
根據oracle的算法,我們很容易想到這個解決方法。數目衡定,但是db_block_size可以更改(db_block_size的最大大小爲32KB)。如果把db_block_size擴大到32KB(32位系統好像是16KB,我在Red Hat 企業版的操作系統創建32KB的block_size失敗。),那麼我們的系統就可以支持單個數據文件最大128GB。
這個方案聽起來好像很迷人,但是實際上並不是那麼回事。因爲要修改db_block_size並不是很容易的事。因爲這個db_block_size在創建實例的時候就要指定。而且不能通過簡單修改參數來指定db_block_size。
三)創建bigfile表空間
在oracle10g中引進了bigfile表空間,充分利用了64位CPU的尋址能力,使oracle可以管理的數據文件總量達到8EB。單個數據文件的大小達到128TB,即使默認8K的db_block_size也達到了32TB。
創建bigfile的表空間使用的sql語句也很簡單。
create bigfile tablespace...
後面的語句和普通的語句完全一樣。
需要注意OS的文件大小限制。
例如在windows下,單個文件最大限制如下:FAT12 8MFAT16 2GFAT32 4GNTFS 64GBNTFS5.0 2TB