单个表空间文件个数达到上限 ORA-01686
问题概述
因在oracle数据库表空间管理中的时候 报 ORA-01686: max # files (1023) reached for the tablespace GPRS
SQL> alter tablespace GPRS add datafile '+DATADG' size 60G;
alter tablespace GPRS add datafile '+DATADG' size 60G
*
ERROR at line 1:
ORA-01686: max # files (1023) reached for the tablespace GPRS
问题原因
每个表空间最大文件数 2^10-1个
解决方案
1、清理过期的数据
2、新建个表空间(这样不太好管理)
模拟故障
1、写个加数据文件存储过程吧
SQL> create or replace procedure pl_data as
2 col_id varchar(255);
3 begin
4 for i in 1..1020 loop
5 col_id:='GUO'||i;
6 execute immediate 'alter tablespace GUO add datafile'||' ''/u01/oradata/peach/'||col_id ||'.dbf'||''' size 1m ';
7 end loop;
8 commit;
9 end;
10 /
过程已创建。
2、调用存储过程添加了1020个数据文件
SQL> exec sys.pl_data
PL/SQL 过程已成功完成。
SQL> select max(file_id) from dba_data_files where tablespace_name='GUO';
MAX(FILE_ID)
------------
1025
3、手动添加数据文件
SQL> alter tablespace GUO add datafile '/u01/oradata/peach/GUO1021.dbf' size 1m;
表空间已更改。
SQL> alter tablespace GUO add datafile '/u01/oradata/peach/GUO1022.dbf' size 1m;
表空间已更改。
SQL> alter tablespace GUO add datafile '/u01/oradata/peach/GUO1023.dbf' size 1m;
表空间已更改。
SQL> alter tablespace GUO add datafile '/u01/oradata/peach/GUO1024.dbf' size 1m;
alter tablespace GUO add datafile '/u01/oradata/peach/GUO1024.dbf' size 1m
*
第 1 行出现错误:
ORA-01686: 最大文件数 (1023) 对于表空间 GUO 已达到
4、总结
表空间最大数据文件个数2^10-1
单个数据文件最大数据块个数2^22-1
单个数据文件大小,db_block_size*blocks
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!