表 xxx 无法通过 8192 (在表空间 USERS 中) 扩展

向Oracle 11g数据库中批量插入数据,当插入4千万条数据后,报出如下错误:
ORA-01653: 表xx无法通过 8192 (在表空间  USERS 中) 扩展。

这个表空间是设置了自增的。导致这个问题的原因是创建数据库时,数据库块大小使用了默认的8kb,在oracle中表文件的容量DB_BLOCK_SIZE的关系是 maxsize=DB_BLOCK_SIZE×4194304;4194304=4G。结果刚好是32G,也就是说,数据块大小在8kb时,单文件的最大尺寸是32G,所以即使设置了自增,也最多只能存32G数据。

解决办法:

 1、增加数据文件:alter tablespace xxx add datafile '/XX/XXX/XXX/XXx.dbf' size xxxxM,AUTOEXTEND ON NEXT xxxxM MAXSIZE UNLIMITED; 该办法可临时解决该问题。

 2、使用大文件。oracle10g之后支持大文件。但是大文件只有一个数据文件,创建后不能通过增加数据文件的方式扩展,其他特性请自行查阅资料。

 3、数据库重建,EXP导出数据,重建数据库,安装时选择合适的数据块大小。

最根本的应该是在创建数据库时就应该考虑到数据量的问题,选择好合适的数据块,但因为这个是测试数据库,所以没有考虑周全。我是临时增加了一个数据文件来解决的。

----查看表空间是否自增
select file_name,tablespace_name,autoextensible from dba_data_files;
----新增一个数据文件
alter tablespace USERS add datafile 'F:\APP\DWJ\ORADATA\ORCL\USERS02.DBF' size 20480M autoextend on next 1024M Maxsize unlimited;

参考资料: 解决Oracle报错ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展_D的博客-CSDN博客

                      oracle ORA-01653 表空间不能自动增长的原因及处理方法_12274138的技术博客_51CTO博客

posted @ 2021-08-18 09:05  兰溪三日桃花雨  阅读(2775)  评论(0编辑  收藏  举报