Oracle数据库物理文件空间设置方法

  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;

  如果有良好的数据库存储规划, 物理文件最好还是设置成非自动增长的类型。