首页 > 其他分享 >单个表空间文件个数达到上限 ORA-01686

单个表空间文件个数达到上限 ORA-01686

时间:2023-02-28 16:00:41浏览次数:41  
标签:01686 GUO 个数 add tablespace SQL ORA alter size

# 问题概述
因在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

 

标签:01686,GUO,个数,add,tablespace,SQL,ORA,alter,size
From: https://www.cnblogs.com/xinxin1222/p/17164622.html

相关文章