暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle中数据文件的大小限制

原创 逆风飞翔 2022-03-29
6901

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论