Oracle數據庫的物理文件可以設置成自動增長的類型, 這樣數據庫在需要更多空間時, 物理文件會按設定的增長量自動增長到指定的最大值。這樣會有一些好處: 保證不會因為分配數據區域(extent)失敗而終止應用。但如果沒有設定這個最大值, 它將會是一個非常大的數字。數據塊大小不同, 其最大值也不一樣。因為Oracle的物理文件最大只允許4194303個數據塊(datablock)。
下面列表說明不同數據塊數據庫所能支持的最大物理文件大小:
數據塊的大小 物理文件的最大值 MB========== ==================== 2048 8191 4096 16383 8192 32767 16384 65535 |
不幸的是, 不同操作系統不同Oracle版本對其物理文件的最大值限制是不一樣的。如果物理文件超過了某個限制大小, Oracle數據庫將會出現內核錯誤并崩潰。
下面列出了幾種常見操作系統的最大物理文件限制, 有的還需要在OS端設置大的文件系統和特定的環境變量等。
Windows NT Maximum 4GB files on FAT Theoretical 16TB on NTFS Sun Solaris (32 bit Oracle releases) ======================================= OS Limits ~~~~~~~~~ Release Max file-system size Max OS File size < Solaris 2.6 1TB (UFS) 2GB >= Solaris 2.6 1TB (40 bits) 1TB Oracle Limits ~~~~~~~~~ SOLARIS 2.6 / 2.7 / 2.8 File Exp/ Loader Oracle System Raw Imp** see ** UTL_FILE ========================================== 8.1.6.0 >4GB >=2GB >=2GB >=2GB >=2GB 8.1.5.0 32Bit >4GB >=2GB <2GB <2GB <2GB 8.1.5.0 64Bit >4GB >=2GB <2GB 8.0.6.0 >4GB >=2GB <2GB >2GB 8.0.5.2 >4GB >=2GB <2GB <2GB <2GB 8.0.5.1 <4GB >=2GB <2GB <2GB <2GB 8.0.5.0 <2GB >=2GB <2GB <2GB <2GB >=8.0.4.2 <4GB >=2GB <2GB <2GB <2GB < 8.0.4.2 <2GB >=2GB <2GB <2GB <2GB 8.0.3.x <2GB >=2GB <2GB <2GB <2GB 7.3.4.x <2GB >=2GB <2GB <2GB <2GB 7.3.3.x <2GB >=2GB <2GB <2GB <2GB HP ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HPUX Unix Limits ~~~~~~~~~~~~~~~~~ Max file system size: <= HP-UX 10.10 4GB >= HP-UX 10.20 128GB >= HP-UX 11.00 1TB Max OS file size: <= HP-UX 10.10 2GB >= HP-UX 10.20 128GB >= HP-UX 11.00 1TB Oracle on HPUX Limits ~~~~~~~~~~~~~~~~~~~~~~ Max Datafile Size File Raw Async Export/ SQL*Loader Release System Device I/O Import** (see **) ============================================= 8.1.7.x 64GB 64GB raw only >2GB >2GB 8.1.6.x 64GB 64GB raw only >2GB >2GB 8.0.6.x 64GB 64GB raw only See*1 See*2 8.0.5.x 64GB 64GB raw only See*1 <2GB 8.0.4.x 64GB 64GB raw only SIL HPUX10.20 > 2GB HPUX-11 <2GB 8.0.3.x <2GB <2GB raw only 2GB 2GB 7.3.4.x 64GB 64GB raw only SIL 2GB >=7.3.3.4.1 64GB 64GB raw only SIL 2GB 7.3.2.3 <2GB <2GB raw only 2GB 2GB 7.1.6 <2GB <2GB raw only 2GB 2GB |
下面的SQL語句可以查看數據庫物理文件是否是自動增長的及相關參數。
select tablespace_name,file_name, round(bytes/(1024*1024),0) total_space, autoextentsible,increment_by,maxbytes from dba_data_files order by tablespace_name; |
如果你管理的數據庫物理文件是自動增長的并有可能超過操作系統或Oracle版本文件最大限制時, 請盡快改變它的屬性, 把它設定成非自動增長的或者限定它最大的值。
假如物理文件的物理位置是 D:/ORACLE/ORADATA/ORACLE8/APP01.DBF 用下面的SQL語句可以實現這一操作:
alter database datafile ' D:/ORACLE/ORADATA/ORACLE8/APP01.DBF' autoextend off; alter database datafile ' D:/ORACLE/ORADATA/ORACLE8/APP01.DBF' autoextend on next 50MB maxsize 1500MB; |
如果有良好的數據庫存儲規劃, 物理文件最好還是設置成非自動增長的類型。