Oracle-ora-00059超出DB_FILES最大值
1. 背景
大家看我之前的文章,知道每次增加数据文件的时,会设置数据文件的大小是10G,而且设置的是无限增长。
但是这里其实有两个原因,一是单个数据文件最大值是32G,不会无限增长,
二是至于为什么设置单个文件为10G,
是因为数据文件可能会发生损坏,如果文件损坏,会导致存储在数据文件中的数据不可用。
所以为了使文件损坏时,所涉及到的数据尽可能小,同时考虑到频繁增加数据文件,设置为10G!
同时增加了一个新的数据文件,将上一个文件的自增长关闭,避免文件变大!
alter tablespace E3_DATA add datafile
'/u01/app/oracle/oradata/orcl/e3_data08.dbf'
size 10g autoextend on next 10m maxsize unlimited;
alter database datafile
'/u01/app/oracle/oradata/orcl/e3_data07.dbf'
autoextend off;
2. ora-00059超出DB_FILES最大值
由于单个文件设置为10G,面对大数据时,就需要频繁增加数据文件,就会出现ora-00059这个错误,无法增加数据文件了
oracle 默认可以添加的数据文件为200个,业务需要,因此需要增加数据文件最大个数
1. 备份配置文件
create pfile from spfile;
查看当前数据文件数量最大值
2. show parameter db_files;
调整数据文件数量最大值
3. alter system set db_files=2000 scope=spfile;
关闭数据库
4. shutdown immediate;
启动数据库
5. startup;
[root@master ~]# su - oracle
Last login: Wed Jul 27 22:18:29 CST 2022 on pts/0
[oracle@master ~]$
[oracle@master ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期三 7月 27 22:18:39 2022
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> create pfile from spfile;
文件已创建。
SQL> show parameter db_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
SQL>
SQL> alter system set db_files=2000 scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
SQL>
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 1586708480 bytes
Fixed Size 2253624 bytes
Variable Size 1358957768 bytes
Database Buffers 218103808 bytes
Redo Buffers 7393280 bytes
数据库装载完毕。
数据库已经打开。
SQL>
SQL>
SQL> show parameter db_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 2000
SQL>
SQL>