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; |
如果有良好的数据库存储规划, 物理文件最好还是设置成非自动增长的类型。