解决Oracle报错ORA-01653: 表xx无法通过 8192 (在表空间 xxxxx 中) 扩展

https://blog.csdn.net/weixin_41201830/article/details/128558898?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EAD_ESQUERY%7Eyljh-1-128558898-blog-119002468.pc_relevant_landingrelevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EAD_ESQUERY%7Eyljh-1-128558898-blog-119002468.pc_relevant_landingrelevant&utm_relevant_index=2

 

执行命令:

--select file_name,tablespace_name,autoextensible from dba_data_files;

--alter tablespace USERS add datafile '/u01/app/oracle/oradata/orcl/USERS02.DBF' size 20480M autoextend on next 1024M Maxsize unlimited;

 

解决Oracle报错ORA-01653: 表xx无法通过 8192 (在表空间 xxxxx 中) 扩展

向Oracle 11g数据库中批量插入数据当数据库dfb文件满了之后会出现如下错误:
ORA-01653: 表xx无法通过 8192 (在表空间 xx_data 中) 扩展。

查看表空间,发现表空间大小已达到32G,但创建表空间时已设置了无限扩展(初始空间为20G),磁盘空间没满,说明表空间无法进行自动扩展了。

sys 登陆 oracle
查看Oracle的 DB_BLOCK_SIZE

select value from v$parameter where name ='db_block_size';
  • 1
value
8192
  • 1
  • 2

本机数据库的数据块大小为8K,算出本机Oracle 单个表空间数据文件的最大值为:
4194304 * 8/1024 = 32768M (32G);

所以既使创建表空间时设置了 autoextend on maxsize unlimited,其最大空间也是不会超过32G。

注:
1、表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为 4K、8K、16K、32K、64K等几种大小;
2、ORACLE的物理文件最大只允许4194304(2^22)个数据块;

#查看表空间
select * from   dba_tablespaces;
 
#查看表空间是否自动增
SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;
 
#表空间文件位置
select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;  

列出所有表空间的使用情况:

SELECT a.tablespace_name "表空间名称", 
total / (1024 * 1024) "表空间大小(M)", 
free / (1024 * 1024) "表空间剩余大小(M)", 
(total - free) / (1024 * 1024 ) "表空间使用大小(M)", 
total / (1024 * 1024 * 1024) "表空间大小(G)", 
free / (1024 * 1024 * 1024) "表空间剩余大小(G)", 
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", 
round((total - free) / total, 4) * 100 "使用率 %" 
FROM (SELECT tablespace_name, SUM(bytes) free 
FROM dba_free_space 
GROUP BY tablespace_name) a, 
(SELECT tablespace_name, SUM(bytes) total 
FROM dba_data_files 
GROUP BY tablespace_name) b 
WHERE a.tablespace_name = b.tablespace_name ;

在这里插入图片描述

解决方法

第一步、查看表空间是否自动增长
SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;--查看表空间是否自动增长
在这里插入图片描述第二步、如果报错的表空间没有开启自动增加 ,则开启

ALTER DATABASE DATAFILE '/ora11g/data/oradata/lfzldb/LFZL.DBF' AUTOEXTEND ON NEXT 1024M ;--每次自动增长1024M
  • 1

补充当自动增长表空间也无效的情况

当表空间为最大值,100%没办法自增的时候,这时可以考虑新增一个数据文件

 Alter tablespace 表空间名 add datafile '数据文件存放的路径' size 数据文件大小M autoextend on next 每次自增长大小M Maxsize UNLIMITED 
--例子
 Alter tablespace XCSP add datafile '/ora11g/data/oradata/lfzldb/XCSP2.DBF' size 10240M autoextend on next 1024M Maxsize UNLIMITED
  • 1
  • 2
  • 3

添加成功后,查看情况
在这里插入图片描述
文章引自:https://blog.csdn.net/qq_35893120/article/details/119002468

posted on 2023-02-28 16:32  四海骄阳  阅读(1862)  评论(0编辑  收藏  举报

导航