1. 程式人生 > >oracle資料庫單個數據檔案的大小限制

oracle資料庫單個數據檔案的大小限制

轉自:https://www.cnblogs.com/snake-hand/p/3144942.html

之前沒有仔細想過這個問題,因為總是不會用到,也沒有犯過類似錯誤。

順便提一下學習方法吧。

滷肉的學習方法是:常用知識點,熟悉理論並反覆做實驗,深入理解;不常用的知識點,相關內容都瞭解大概,遇到問題時想得起來能知道去哪裡查就可以;所有知識點都必須要用實驗驗證,否則學習效果會大打折扣,光看書或看視訊是沒有用的,我保證一個月之後,你忘記的乾乾淨淨的,哈哈。

比如今天這個問題,滷肉看到報錯就會想到可能是資料檔案大小和限制規則衝突了,因為以前瞭解過相關的知識點,有點印象,於是上網去google一下,果然如此。處理過程如下:

環境背景資訊:suse linux11sp1, oracle10.2.0.5

SQL> CREATE TABLESPACE hubtemsTBS

  2  NOLOGGING 
  3  DATAFILE 
  4   '/oracle/oradata/hubtems01.dbf'  SIZE  8000M, 
  5   '/oracle/oradata/hubtems02.dbf'  SIZE  8000M, 
  6   '/oracle/oradata/hubtems03.dbf'  SIZE  8000M, 
 '/oracle/oradata/hubtems04.dbf'  SIZE  8000M, 
  7    8   '/oracle/oradata/hubtems05.dbf'  SIZE  8000M, 
  9   '/oracle/oradata/hubtems06.dbf'  SIZE  8000M 
 10  AutoExtend On Next 10M Maxsize 50000M 
 11  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K 
SEGMENT SPACE MANAGEMENT AUTO;  



CREATE TABLESPACE hubtemsTBS 

ERROR at line 1: 
ORA-03206: maximum file size of (6400000) blocks in AUTOEXTEND clause is out of 
range 




 SQL> show parameter db_block 


NAME                                 TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
db_block_buffers                     integer     0 
db_block_checking                    string      FALSE 
db_block_checksum                    string      TRUE

db_block_size                        integer     8192

A smallfile tablespace is a traditional Oracle tablespace, which can contain 1022 datafiles or tempfiles, each of which can contain up to approximately 4 million (2^22) blocks.
我的資料塊是大小是8k ,那麼能建立的最大的資料檔案大小是:2^22*8K=32G,而我指定的是‘/oracle/oradata/hubtems06.dbf',大小8G,最大打下是50G,超過限制了,所以報錯。

問題搞清楚就好辦了,解決辦法如下:

1、修改資料檔案最大大小為unlimited或者直接寫出32G;若果表空間整體資料空間大小不夠的話,那你就勤快一點,多寫幾行,多加幾個資料檔案吧

2、不推薦的思路也有一些,適用於特定的場合:建立BIGFILE表空間,有個缺點就是一個表空間只能建立一個數據檔案,表空間無法擴充套件;另外修改資料庫大小也可以,但是往往會有不小的風險,如果你不是高階使用者的話,建議放棄吧。