eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« DBA警示录:关闭数据库应当谨慎 | Blog首页 | 案例学习:inode耗尽导致No space left on device错误 »

Oracle中数据文件大小的限制

Oracle数据文件的大小存在一个内部限制,这个限制是:
每个数据文件最多只能包含2^22-1个数据块

这个限制也就直接导致了每个数据文件的最大允许大小。
在2K Block_size下,数据文件最大只能达到约8G
在32K的Block_size下,数据文件最大只能达到约16*8G的大小。

这个限制是由于Oracle的Rowid中使用22位来代表Block号,这22位最多只能代表2^22-1个数据块。

为了扩展数据文件的大小,Oracle10g中引入了大文件表空间,在大文件表空间下,Oracle使用32位来代表Block号,也就是说,在新的技术下,大文件表空间下每个文件最多可以容纳4G个Block。
那么也就是说当Block_size为2k时,数据文件可以达到8T 。
当block_size为32K时,数据文件可以达到128T。

上周在做2K block_size测试时,第一次遇到了这个限制:

SQL> alter tablespace eygle add datafile 'f:\eygle02.dbf' size 8192M;
alter tablespace eygle add datafile 'f:\eygle02.dbf' size 8192M
*
ERROR 位于第 1 行:
ORA-01144: 文件大小 (4194304 块) 超出 4194303 块的最大数

缩减一点,最后创建成功:

SQL> alter tablespace eygle add datafile 'f:\eygle02.dbf' size 8191M reuse;

表空间已更改。

已用时间: 00: 44: 42.08


计算一下,这台破烂的测试机的IO速度:
io speed = 8191 M / 00: 44: 42.08 = 8191 M / 44*60+42 = 8191M / 2682 s = 3.05M/s

够惊人的了吧。

-The End-


历史上的今天...
    >> 2010-07-09文章:
    >> 2009-07-09文章:
    >> 2004-07-09文章:
           使用or展开进行sql调整

无觅

By eygle on 2007-07-09 16:14 | Comments (8) | FAQ | 1491 |

8 Comments

这i/o不是一般的"快"啊 ^|^

那是相当的快啊!

文件大小限制,我也碰到过,当dbf文件大于8G以后,数据库就自动停止运行了,查看alert.log,有error。
再建了几个2g的dbf以后,就好了,稳定运行到现在。

这样的问题,的确应该在系统上线的时候就考虑,一般运行几年以后,都会达到这样的限制。

8G限制是由于block_size是2K。

如果是8k的block_size,那么单个文件理论上可以达到32G的。

你不能这么冤枉这台机器,这里44分钟一定不是全部费在I/O上,或者说挺大部分估计都是在更新数据字典或者其他信息上吧。
再说回来,每秒3M也不是很“慢”,上次一个客户那儿用dd测试一个产品环境的盘阵,1G的dd用了5分钟,嗯,也是每秒3M,呵呵。

我的测试数据库,PC做的 35M/s

Bigfile只能存在一个datafile

不懂数据库技术的路过


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com