您当前的位置:首页 > 电脑百科 > 数据库 > Oracle

Oracle报错ORA-01653: 表xx无法通过 8192 扩展

时间:2020-03-28 15:04:44  来源:  作者:

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:OracleAppAdministratororadataorcl新数据文件名称.DBF' SIZE 32M;

②为该数据文件打开自动增长 ALTER DATABASE DATAFILE 'D:OracleappAdministratororadataorcl新数据文件名称.DBF' AUTOEXTEND ON;

③指定每次自动增长的大小 ALTER DATABASE DATAFILE 'D:OracleappAdministratororadataorcl新数据文件名称.DBF' AUTOEXTEND ON NEXT 200M ;

2)方法二:一步到位。为指定的表空间增加数据文件(一步到位:指定初始大小,打开自动增长,设置每次自动增长的大小) ALTER TABLESPACE 表空间名称 ADD DATAFILE 'D:appAdministratororadataORCLDATAFILE新数据文件名称.DBF' SIZE 10240M AUTOEXTEND ON NEXT 1024M MAXSIZE UNLIMITED;



Tags:Oracle报错   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1 问题向Oracle 10g数据库中批量插入数据,当插入近2亿条数据后,报出如下错误: ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展。查看表空间,发现表空间大小已达到32G...【详细内容】
2020-03-28  Tags: Oracle报错  点击:(376)  评论:(0)  加入收藏
▌简易百科推荐
安装环境Linux服务器:Centos 6 64位Oracle服务器:Oracle11gR2 64位 系统要求说明:内存必须高于1G的物理内存;交换空间,一般为内存的2倍(1G的内存可以设置swap 分区为3G大小);硬...【详细内容】
2021-12-27  守护梦想2022    Tags:Oracle   点击:(2)  评论:(0)  加入收藏
1、 登陆CentOS 2、 查看备份脚本,脚本放在\usr\local目录下 3、 编写数据库备份脚本,内容如下 前提是需要在Oracle创建directory文件,如果没有,可以create创建并授权给相应的用...【详细内容】
2021-12-10  JasonTang    Tags:Oracle   点击:(14)  评论:(0)  加入收藏
之前写了个Oracle12c在Redhat6.8下的静默安装,操作系统版本太老了而且没配插图,今天重新写个centos 7 下静默安装。 准备环境:centos 7 虚拟机一台,Oracle12c安装包。1、检查防...【详细内容】
2021-10-12  it运维小土豆  今日头条  Tags:Oracle   点击:(29)  评论:(0)  加入收藏
JDK 17 正式发布+免费牛逼啊,JDK 16 刚发布半年(2021/03/16),JDK 17 又如期而至(2021/09/14),这个时间点牛逼啊,蹭苹果发布会的热度?记得当年 JDK 15 的发布也是同天,巧了。。虽然 iPho...【详细内容】
2021-09-16  Java技术栈  掘金  Tags:Oracle   点击:(88)  评论:(0)  加入收藏
Oracle日志文件是Oracle数据库存储信息的重要文件,主要用来存储数据库变化的操作信息。Oracle日志文件可以分为两种:重做日志文件(redo log file)、归档日志文件,其中重做日志文...【详细内容】
2021-08-19  free教程    Tags:Oracle日志   点击:(101)  评论:(0)  加入收藏
本例子在真实环境应用过,获得了很好的体验,特将其分享出来供各位朋友使用。后续我会持续把相关的知识一点一点的更新,请各位多多关注,多多支持。测试速度:导出速度大概800M/s,如...【详细内容】
2021-08-17  大树唛包    Tags:oracle   点击:(88)  评论:(0)  加入收藏
天冒险重启下Oracle rac,分三个步骤,停实例---停集群---重启服务器。 1、关闭实例检查状态su - gridcrsctl status res -t 注意:只在一个节点执行就行,或者为了保险期间,使用shut...【详细内容】
2021-07-16  死磕IT    Tags:Oracle rac   点击:(128)  评论:(0)  加入收藏
两个字符串相似度的比较:SYS.UTL_MATCH.edit_distance_similarity用法:select SYS.UTL_MATCH.edit_distance_similarity('河北沧州东塑股份有限公司','河北沧州东...【详细内容】
2021-07-07  Onceagain75783189    Tags:比较函数   点击:(112)  评论:(0)  加入收藏
现在有一个用户A,想把这个用户A下面的所有的表查询权限都赋予用户X,该怎么做?同样的问题,如果有4个用户A、B、C、D,需要把这4个用户下面所有的表的只读权限赋予用户X、Y、Z三个用...【详细内容】
2021-06-23  程序猿集锦    Tags:Oracle   点击:(103)  评论:(0)  加入收藏
oarcle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 捻在一起就成为一个表空间。...【详细内容】
2021-04-27  SQL小帅哥  今日头条  Tags:Oracle   点击:(200)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条