ORACLE數據庫創建表空間ORA-03206報錯的解決方案

Oracle的數據文件大小是有限制的,今天在創建表空間的時候就遇到了問題,限制很簡單,作爲DBA必須要了解。

   測試環境:
   操作系統: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) 塊的最大文件大小超出範圍

   
    按照Oracle文檔的描述,每個datafile的最大容量爲(2^22-1)個block,即4194303個block,而當前數據庫的block大小是8k,也就是說最大的文件大小是32G,要建100G的datafile肯定不行。
 
    也就是說,以Oracle的限制,如果要建普通的datafile,最大的大小就是 (2^22-1)*32K = 128G (注:Oracle最大支持block爲32k)。存在這個限制是因爲Oracle的內部ROWID使用22位2進制數來存儲不同的block號,所以22位最多代表(2^22-1)個block。
 
      下面列表說明不同數據塊數據庫所能支持的最大物理文件大小:
               
            數據塊的大小        物理文件的最大值 M
        ===============================================               
                2048                        8191 M
                4096                        16383 M
                8192                        32767 M
              16384                        65535 M
 
    這就可以解釋,32G>32767 M(多了1M)也不能夠創建。因此,乾脆修改爲如下語句,執行成功。
   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           8M   
    FAT16           2G     
    FAT32           4G   
    NTFS            64GB   
    NTFS5.0         2TB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章