ORACLE数据库创建表空间ORA-03206报错的解决方案
来源:互联网 发布:php cgi 管理程序 编辑:程序博客网 时间:2024/06/05 17:06
Oracle的数据文件大小是有限制的,今天在创建表空间的时候就遇到了问题,限制很简单,作为DBA必须要了解。
测试环境:
操作系统:Win7 64位专业版
数据库版本:64位Oracle10.2.0.4
DB_NAME:hoegh
表空间名称:hoegh
在执行创建表空间语句时报错,具体语句如下:
create tablespace hoegh
datafile 'S:\hoegh\hoegh01.dbf' size 20g
autoextend on next 1g maxsize 100g;
提示报错:
ORA-03206: AUTOEXTEND 子句中 (13107200) 块的最大文件大小超出范围
后来查资料,说单个文件大小最大是32g,修改语句如下:
create tablespace hoegh
datafile 'S:\hoegh\hoegh01.dbf' size 20g
autoextend on next 1g maxsize 32g;
仍然报错:
ORA-03206: AUTOEXTEND 子句中 (4194304) 块的最大文件大小超出范围
下面列表说明不同数据块数据库所能支持的最大物理文件大小:
数据块的大小 物理文件的最大值 M
===============================================
2048 8191 M
4096 16383 M
8192 32767 M
16384 65535 M
测试环境:
操作系统:Win7 64位专业版
数据库版本:64位Oracle10.2.0.4
DB_NAME:hoegh
表空间名称:hoegh
在执行创建表空间语句时报错,具体语句如下:
create tablespace hoegh
datafile 'S:\hoegh\hoegh01.dbf' size 20g
autoextend on next 1g maxsize 100g;
提示报错:
ORA-03206: AUTOEXTEND 子句中 (13107200) 块的最大文件大小超出范围
后来查资料,说单个文件大小最大是32g,修改语句如下:
create tablespace hoegh
datafile 'S:\hoegh\hoegh01.dbf' size 20g
autoextend on next 1g maxsize 32g;
仍然报错:
ORA-03206: AUTOEXTEND 子句中 (4194304) 块的最大文件大小超出范围
按照Oracle文档的描述,每个datafile的最大容量为(2^22-1)个block,即4194303个block,而当前数据库的block大小是8k,也就是说最大的文件大小是32G,要建100G的datafile肯定不行。
也就是说,以Oracle的限制,如果要建普通的datafile,最大的大小就是 (2^22-1)*32K = 128G (注:Oracle最大支持block为32k)。存在这个限制是因为Oracle的内部ROWID使用22位2进制数来存储不同的block号,所以22位最多代表(2^22-1)个block。
下面列表说明不同数据块数据库所能支持的最大物理文件大小:
数据块的大小 物理文件的最大值 M
===============================================
2048 8191 M
4096 16383 M
8192 32767 M
16384 65535 M
这就可以解释,32G>32767 M(多了1M)也不能够创建。因此,干脆修改为如下语句,执行成功。
create tablespace hoegh
datafile 'S:\hoegh\hoegh01.dbf' size 10g
autoextend on next 500m maxsize 20g;
下面,总结一下ORA-03206报错的解决方案,推荐使用第一种解决方案。
create tablespace hoegh
datafile 'S:\hoegh\hoegh01.dbf' size 10g
autoextend on next 500m maxsize 20g;
下面,总结一下ORA-03206报错的解决方案,推荐使用第一种解决方案。
一)不要创建单个文件超过32GB的表空间
如果你创建的表空间超过32GB,请把这个表空间存储为多个数据文件,每个文件不大于32GB。这样,就可以成功的创建表空间。
二)扩大db_block_size
根据oracle的算法,我们很容易想到这个解决方法。数目衡定,但是db_block_size可以更改(db_block_size的最大大小为32KB)。如果把db_block_size扩大到32KB(32位系统好像是16KB,我在Red Hat 企业版的操作系统创建32KB的block_size失败。),那么我们的系统就可以支持单个数据文件最大128GB。
这个方案听起来好像很迷人,但是实际上并不是那么回事。因为要修改db_block_size并不是很容易的事。因为这个db_block_size在创建实例的时候就要指定。而且不能通过简单修改参数来指定db_block_size。
三)创建bigfile表空间
在oracle10g中引进了bigfile表空间,充分利用了64位CPU的寻址能力,使oracle可以管理的数据文件总量达到8EB。单个数据文件的大小达到128TB,即使默认8K的db_block_size也达到了32TB。
创建bigfile的表空间使用的sql语句也很简单。
create bigfile tablespace...
后面的语句和普通的语句完全一样。
需要注意OS的文件大小限制。
例如在windows下,单个文件最大限制如下:FAT12 8MFAT16 2GFAT32 4GNTFS 64GBNTFS5.0 2TB
阅读全文
0 0
- ORACLE数据库创建表空间ORA-03206报错的解决方案
- ORACLE数据库创建表空间ORA-03206报错的解决方案
- Oracle远程创建表空间报错ORA-01119 ORA-27040 OSD-O4OO2
- Oracle创建表空间报错,ORA-01119: 创建数据库文件;ORA-27040:文件创建错误, 无法创建文件;O/S-Error: (OS 3) 系统找不到指定的路径。
- Oracle数据库报ora-28547错误解决方案
- 创建oracle大于4g表空间报错ora-01119
- 之前创建了一个表空间,然后今天不小心把表空间文件给删除了。然后用pl/sql连接数据库的时候,报ORA-01033错误。ora-01033:oracle initializationg or shut
- Oracle SQL Developer连接报错(ORA-12505)的解决方案
- 执行查看数据库表空间信息报错 ORA-01116、ORA-01110、ORA-27041
- oracle用imp导入数据的时候报错:ORA-01658: 无法为表空间xxx中的段创建INITIAL区
- oracle建表后添加数据报错:ORA-01658:无法为表空间中的段创建INITIAL区
- 删除ORACLE的临时表空间报错:ORA-12906: cannot drop default temporary tablespace
- Oracle物化视图创建报ORA-00942错的解决
- Oracle数据库表空间占满的解决方法 ,ORA-01691
- Oracle数据库启动报ORA-03113错误解决方案
- oracle数据库报ora-01691错误--表空间容量溢出解决办法
- 创建oracle实例报错ora-28056
- Oracle rman迁移后临时表空间报错:ORA-01187,ORA-01110
- Linux永久关闭防火墙
- JavaScript初步1
- python 合并字典的方法
- 20171218日记账流水(复盘)
- web加载网页设置
- ORACLE数据库创建表空间ORA-03206报错的解决方案
- Android 内存优化
- Docker下实战zabbix三部曲之三:自定义监控项
- mysql存储过程+游标循环遍历 判断 赋值 等实例一
- JS的内置对象2
- Android为啥会有65536的限制
- 走进git
- Github推荐:MySQL DBA不可错过的五大开源管理工具!
- 有哪些是Apache Mesos能做到,而Kubernetes做不到的