« DBA警示录:关闭数据库应当谨慎 | Blog首页 | 案例学习:inode耗尽导致No space left on device错误 »
Oracle中数据文件大小的限制
链接:https://www.eygle.com/archives/2007/07/oracle_datafile_limit.html
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-
历史上的今天...
>> 2020-07-09文章:
>> 2010-07-09文章:
>> 2009-07-09文章:
>> 2004-07-09文章:
By eygle on 2007-07-09 16:14 | Comments (8) | FAQ | 1491 |
这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
不懂数据库技术的路过