欣欣闹天下

古有洛离感青天,乾坤泣血憾无言。时光无情终逝去,唯留玲珑血玉兰。

导航

单个表空间文件个数达到上限 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

posted on 2024-02-19 19:35  欣欣闹天下  阅读(420)  评论(0)    收藏  举报