[20230223]8k数据块建立最大文件是多少(ORA-03206).txt

来源:这里教程网 时间:2026-03-03 18:21:57 作者:

[20230223]8k数据块建立最大文件是多少(ORA-03206).txt --//被别人问及这个问题,实际上对于8k数据块大小能建立的数据文件大小等于 32G-8*2K . --//oracle普通数据文件(不包括big datafile),数据块地址占32位(对于small datafile),前10位表示文件号,后22位表示块号,不包括全 --//部为0,全部为1的数据块.这样块号应该是2^22-2 = 4194302 --//这样如果8K数据块,最大建立的数据文件大小4194302*8 = 33554416. --//为什么要减2呢?实际上数据文件第0块是数据文件的OS头,最后1块,我不知道为什么? --//真正的数据块从1开始(数据文件头).这样数据块占用的数量是2^22-2=4194302. --//测试如下: 1.环境: SCOTT@book> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 2.测试1: SYS@book> create tablespace testxy  datafile '/u01/testxy01.dbf' size 16m autoextend on next 16m maxsize 32G; create tablespace testxy  datafile '/u01/testxy01.dbf' size 16m autoextend on next 16m maxsize 32G * ERROR at line 1: ORA-03206: maximum file size of (4194304) blocks in AUTOEXTEND clause is out of range SYS@book> create tablespace testxy  datafile '/u01/testxy01.dbf' size 16m autoextend on next 16m maxsize 33554424k; create tablespace testxy  datafile '/u01/testxy01.dbf' size 16m autoextend on next 16m maxsize 33554424k * ERROR at line 1: ORA-03206: maximum file size of (4194303) blocks in AUTOEXTEND clause is out of range $ oerr ora 03206 03206, 00000, "maximum file size of (%s) blocks in AUTOEXTEND clause is out of range" // *Cause: The maximum file size for an autoextendable file has //         exceeded the maximum number of blocks allowed. // *Action: Reduce the size and retry. SYS@book> create tablespace testxy  datafile '/u01/testxy01.dbf' size 16m autoextend on next 16m maxsize 33554416k; Tablespace created. $ ll /u01/testxy01.dbf -rw-r----- 1 oracle oinstall 16785408 2023-02-24 09:11:17 /u01/testxy01.dbf --//如果你查看数据文件可以发现实际上建立的大小是 16M+8k, 16*1024*1024+8192 = 16785408. 3.测试2: --//对于big datafile文件呢?这样1个表空间仅仅有1个数据文件.数据块地址占32位,32位全部用来表示块号. --//2^32-2 = 4294967294 --//4294967294*8 = 34359738352 --//34359738352/1024/1024 = 32767.9999847412109375= 32767.99999237060546875, 相当接近于32768G. 也就是32T. --//先删除testxy表空间,继续测试: SYS@book> CREATE BIGFILE TABLESPACE testxy DATAFILE  '/u01/testxy01.dbf' SIZE 16M AUTOEXTEND ON NEXT 16M MAXSIZE 34359738352K; CREATE BIGFILE TABLESPACE testxy DATAFILE  '/u01/testxy01.dbf' SIZE 16M AUTOEXTEND ON NEXT 16M MAXSIZE 34359738352K * ERROR at line 1: ORA-03206: maximum file size of (4294967294) blocks in AUTOEXTEND clause is out of range --//很明显对于BIGFILE不是这样的情况. SYS@book> CREATE BIGFILE TABLESPACE testxy DATAFILE  '/u01/testxy01.dbf' SIZE 16M AUTOEXTEND ON NEXT 16M MAXSIZE 34359738344K; Tablespace created. --//2^32-3 = 4294967293 --//4294967293*8 = 34359738344 --//为什么不是-2我不清楚为什么.那位知道. 4.最小数据文件呢? --//以前测试过,不再贴出. --//链接:[20171206]最小数据文件.txt=>http://blog.itpub.net/267265/viewspace-2148337/ --//如果建立的数据文件如果SEGMENT SPACE MANAGEMENT AUTO (8K数据块),最小文件是88k.实际占用大小96K. --//第0块OS块,第1块文件头,第2块是位图头,第3块是位图区.一个extent=64K占8*8K. --// 3+8 = 11 , 11*8=88k. --//如果使用SEGMENT SPACE MANAGEMENT MANUAL(8K数据块),最小文件是40k.实际占用大小48K. --//因为EXTENT MANAGEMENT LOCAL UNIFORM SIZE最小占2个数据块,对于8k数据块=16K. --//第0块OS块,第1块文件头,第2块是位图头,第3块是位图区.一个extent=16占2*8K. --// 3+2 = 5 , 5*8=40.

相关推荐