解决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