Oracle报错ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展
1 问题
向Oracle 10g数据库中批量插入数据,当插入近2亿条数据后,报出如下错误: ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展。
查看表空间,发现表空间大小已达到32G,但创建表空间时已设置了无限扩展(初始空间为20G),磁盘空间没满,说明表空间无法进行自动扩展了。
2 原因
查找资料了解到Oracle 10g 单个表空间数据文件的最大值为: 最大数据块 * DB_BLOCK_SIZE
查看Oracle的 DB_BLOCK_SIZE
SQL> select value from v$parameter where name ='db_block_size';
8192
本机数据库的数据块大小为8K,算出本机Oracle 单个表空间数据文件的最大值为: 4194304 * 8/1024 = 32768M (32G);
所以既使创建表空间时设置了 autoextend on maxsize unlimited,其最大空间也是不会超过32G。
注: 表空间数据文件容量与DB_BLOCK_SIZE的设置有关,而这个参数在创建数据库实例的时候就已经指定。DB_BLOCK_SIZE参数可以设置为4K、8K、16K、32K、64K等几种,Oracle的物理文件最大只允许4194304个数据块(这个参数具体由操作系统决定,一般应该是此数字),表空间数据文件的最大值对应关系就可以通过4194304×DB_BLOCK_SIZE/1024M计算得出。 4k最大表空间为:16384M
8K最大表空间为:32768M
16k最大表空间为:65536M
32K最大表空间为:131072M
64k最大表空间为:262144M
而Oracle默认分配的为8K,也就是对应于32768M左右的空间大小,如果想继续增大表空间的话,只需要通过alter tablespace name add datafile ‘path/file_name’ size 1024M;添加数据文件的方式就可以了。
数据块是oracle中最小的空间分配单位,各种操作的数据就的放在这里,oracle从磁盘读写的也是块。一旦create database,db_block_size就是不可更改的。因为oracle是以块为单位存储数据的,任何一个存储元素最少占用一个块,如果你改变了db_block_size,必然导致部分块不能正常使用。
其实在unix类操作系统中,文件块和oracle块的关系非常紧密(建议相等),这样才能保证数据库的执行效率。在windows下可能就不这么讲究了。建议使用8k以上的块,有人做过测试,同样的配置,8k的块比4k快大约40%,比2k快3倍以上。
3 解决方法
处理方法两种:①假如当前表空间只有一个数据文件,可以扩大该数据文件的大小(单个数据文件最大32G);②为当前表空间新增数据文件。
为当前表空间新增数据文件方法如下:
在命令行下,以oracle系统管理员用户登录oracle,再执行以下操作:
1)方法一:分步骤。为指定的表空间增加数据文件(三步骤) ①为指定的表空间创建数据文件,并指定初始大小 ALTER TABLESPACE 表空间名称 ADD DATAFILE 'D:\Oracle\app\Administrator\oradata\orcl\新数据文件名称.DBF' SIZE 32M;
②为该数据文件打开自动增长 ALTER DATABASE DATAFILE 'D:\Oracle\app\Administrator\oradata\orcl\新数据文件名称.DBF' AUTOEXTEND ON;
③指定每次自动增长的大小 ALTER DATABASE DATAFILE 'D:\Oracle\app\Administrator\oradata\orcl\新数据文件名称.DBF' AUTOEXTEND ON NEXT 200M ;
2)方法二:一步到位。为指定的表空间增加数据文件(一步到位:指定初始大小,打开自动增长,设置每次自动增长的大小) ALTER TABLESPACE 表空间名称 ADD DATAFILE 'D:\app\Administrator\oradata\ORCL\DATAFILE\新数据文件名称.DBF' SIZE 10240M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;
Oracle报错ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展相关推荐
- 解决Oracle报错ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展
向Oracle 11g数据库中批量插入数据,当插入近2亿条数据后,报出如下错误: ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展. 查看表空间,发现表空间大小已 ...
- ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展
1 问题 向Oracle 10g数据库中批量插入数据,当插入近2亿条数据后,报出如下错误: ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展. 查看表空间,发现表 ...
- 【数据库】报错ora 12154 解决方法
Oracle报错 ora 12154 解决办法: 1.确认服务器监听正确打开: 2.确认别名前无空格.
- oracle 增加ora容量_案例:Oracle报错ORA-01144 详解数据文件大小32GB的限制的原因
天萃荷净 Oracle数据文件大小的限制,运维DBA在向Oracle数据库添加一个32G的数据文件的时候报错ORA-01144,分析原因为数据库针对文件有32G限制 1.添加数据文件报错ORA-011 ...
- oracle ora 00283,【案例】Oracle报错ORA-16433非归档丢失redo无法启动的恢复过程
天萃荷净 Oracle研究中心案例分析:运维DBA反映Oracle数据库处理非归档模式,redo文件损坏常规修复无法正常open数据库. 本站文章除注明转载外,均为本站原创: 转载自love wife ...
- oracle数据库报错,ORA-01652:无法通过128(在表空间TEMP中)扩展temp段
oracle数据库报错,ORA-01652:无法通过128(在表空间TEMP中)扩展temp段 出现这个报错一般是两种情况,oracle的temp空间不足:存在性能非常差的带全表扫描的sql占用的资源 ...
- linux ora 01157,案例:Oracle报错ORA-01157 ORA-01110 数据启动报错RMAN恢复数据库思路
天萃荷净 rman从多份备份中还原操作,运维DBA工程师反映数据库在进行恢复时报错ORA-01157 ORA-01110,分析原因为11号数据文件需要recover 1.数据恢复ORA错误 RMAN& ...
- oracle错误01653,oracle 10g 错误 ORA 01653 的解决过程
oracle 10g 错误 ORA 01653 的解决过程 早上用户反应在操作用友NC时报错 ORA-01653 ,详细信息:ORA-01653: 表 NCV35.GL_DETAIL 无法通过 102 ...
- oracle01507报错,oracle报错ORA-01507
Oracle报错ORA-16433非归档丢失redo无法启动的恢复过程 [案例]Oracle报错ORA-16433非归档丢失redo无法启动的恢复过程 转惜纷飞 今天ML的群中女神和travel在纠结 ...
最新文章
- python_day9 进程池
- eve模拟器华为镜像_EVE-NG简单入门介绍
- java 图像处理 空白_使用Java进行图像处理的一些基础操作
- 积跬步-java任职要求
- 云原生时代,底层性能如何调优?
- Julia学习(1)——入门
- poj 2352 Stars 树状数组
- 写给立志做码农的大学生
- Java判断文件编码
- HTML-img图片详解
- java 对象和List 里面的对象判断属性是不是为空
- 国际版抖音Tik Tok怎么引流变现,卖家所不知道的那些事
- linux下vanish的部署
- 爬取网易云音乐某一个人的评论
- Spring 整合Quartz 2实现定时任务四:细化调整及一些已知的问题
- linux rsync排除目录,如何从rsync中排除文件夹
- 国家标准:电子计算机机房设计规范
- AWS re:Invent 2018 参会攻略
- 图解:RJ45水晶头网线的做法 十分经典
- python图片压缩pako_在Python中使用Pako deflate