Oracle数据文件默认大小上限是32G,如果要数据文件大于32G,需要在数据库创建之初就设置好。
表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为 4K,8K、16K、32K、64K等几种大小,ORACLE的物理文件最大只允许4194304个数据块(由操作系统决定),表空间数据文件的最大值为 4194304×DB_BLOCK_SIZE/1024M。
即:
4k最大表空间为:16384M=16G
8K最大表空间为:32768M=32G
16k最大表空间为:65536M=64G
32K最大表空间为:131072M=128G
64k最大表空间为:262144M=256G
在windows下只能使用2K,4K,8K,16K的块大小,在文档中的描述如下。
ORACLE数据库的限制
每个数据库可管理的最大文件数量:65533个
每个表空间可管理的最大文件数量:取决于操作系统可同时打开的文件数量。通常是1022个。
每个数据文件的最大容量:该值等于 数据块大小 * 最大可管理的数据块数量
其中,数据块的大小最大不超过32K,一般取值是8K;可管理的数据块数量是2的22次方减1,约等于4M个块。因此,对于一个数据块大小为8K的数据文件,其最大不能超过32G。但是,若操作系统支持的单个文件最大容量小于此值,则以操作系统的最大容量为限。
3、参数DB_FILES的限制
参数DB_FILES指定了一个实例可以创建的最大文件数量。这个值可以被修改,但只有重启实例后,才会生效。
DB_FILES设置得过低,可能造成不成添加新的数据文件的问题。设置得过高,会消耗更多的内存资源。
4、性能和便利性影响
a) 通过精心设计,将同一表空间内经常访问的对象放置在不同的数据文件中,并将这些数据文件放置到不同的磁盘通道上,可以改善I/O吞吐量。
b) 将经常改变的数据和不变的数据,放置到不同的数据文件中,备份时,可以只对改变的数据文件进行备份,从而减少备份和恢复的时间
注:从ORACLE 10g起,引入了大表空间的技术。所谓大表空间就是该表空间仅由1个数据文件组成。其优点如下:
1、显著增加了存储容量。大表空间可管理的数据块数量由传统的小表空间的2的22次方,提升到2的32次方。在同样采用8K大小的数据块大小时,其最大可管理空间为32T。
2、减少了数据库所需的数据文件的数量。
3、简化数据库管理。
按照官方的说明来看是和平台有关。我们指导数据库的存储逻辑结构是data block==>extents==>segments==>tablespaces.物理结构是OS block==>data file。那么这个问题可以转成成一个数据文件可以最多存放多少个数据块。文档的意思是一般是 2 22 - 1 个数据块。
那么数据文件上限的大小可以得出计算公式:
(2 22 - 1)*DB_BOLCK_SIZE,单位为KB。
那么如果DB_BLOCK_SIZE为2k~32k的话。所对应的数据文件大小上限都出来了:(通过其他途径得到 2 22 - 1= 4194393 )
SQL> select 4194393*2/1024/1024 GB from dual; ===>2k
GB
----------
8.00016975
SQL> select 4194393*4/1024/1024 GB from dual;===>4k
GB
----------
16.0003395
SQL> select 4194393*8/1024/1024 GB from dual;===>8k
GB
----------
32.000679
SQL> select 4194393*16/1024/1024 GB from dual;===>16k
GB
----------
64.001358
SQL> select 4194393*32/1024/1024 GB from dual;===>32k
GB
----------
128.002716
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。