Oracle的DataFile大小问题

Oracle的DataFile大小问题
 
 
    Oracle的数据文件大小是有限制的,最近在创建datafile的时候就遇到了问题,所以专门去查找了一些资料,把这个问题搞清楚了。限制是很简单直接的,但是作为DBA是必须要了解的。具体的问题是这样的:
 
 
    在创建一个100G的表空间时遇到了报错:
 
SQL> create tablespace wxq_tbs datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\WANGXIAOQI\DATAFILE\WXQ_TBS.DBF' size 10G
2   autoextend on next 2G maxsize 100G;
 
ORA-03206: maximum file size of (13107200) blocks in AUTOEXTEND clause is out of range
 
 
    按照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。
 
 
    为了解决数据文件大小的问题,Oracle10g专门引入了bigfile tablespace,在bigfile tablespace里Oracle使用32位来存储block号,即比之前增大了1024倍,其最大文件大小从128G增加到128T。当然如果使用bigfile tablespace,则需要注意OS的文件大小限制。
 
    例如在windows下,单个文件最大限制如下:
    FAT12           8M  
    FAT16           2G    
    FAT32           4G  
    NTFS            64GB  
    NTFS5.0         2TB  
 
 
 
 
    下面介绍一下Oracle 10g的bigfile tablespace创建语法,其实很简单:
 
SQL> create tablespace big_tbs datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\WANGXIAOQI\DATAFILE\BIG_TBS.DBF' size 20G
2   autoextend on next 10G maxsize 100G;
 
Tablespace created.
    至于对其他的一些操作的影响比较复杂,暂时不做研究,有时间了专门了解一下。可以了解的基本特性是:会默认得使用LMT和ASSM来对tablespace进行管理。
 
 
 
    需要注意的是,对于bigfile tablespace来说,只允许创建一个datafile,而不允许再添加datafile。
 
SQL> alter tablespace big_tbs add datafile '/opt/oracle/product/10.2.0/oradata/wangxiaoqi/big_tbs2.dbf' size 20G
 2 autoextend on next 10M maxsize 100M;
alter tablespace big_tbs add datafile '/opt/oracle/product/10.2.0/oradata/devMISowb/big_tbs2.dbf' size 20M
*
ERROR at line 1:
ORA-32771: cannot add file to bigfile tablespace
 
 
    最后删除tablespace
 
SQL> drop tablespace big_tbs including contents cascade constraints;
 
 
 
 
 
About bigfile tablespace restrictions
----------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值