处理办法:调大db_files(需重启实例生效)
SQL> select value from v$parameter where name = 'db_files';
VALUE
--------------------------------------------------------------------------------
200
SQL> select records_total from v$controlfile_record_section where type = 'DATAFILE';
RECORDS_TOTAL
-------------
1024
SQL> alter system set db_files=5000 scope=spfile sid='*';
System altered.
--重启数据库集群实例
SQL> select value from v$parameter where name = 'db_files';
VALUE
--------------------------------------------------------------------------------
5000
SQL> select records_total from v$controlfile_record_section where type = 'DATAFILE';
RECORDS_TOTAL
-------------
1024 --这个不变化,如果文件个数超过1024了,自动扩,无需关心
SQL> show parameter db_files;
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_files integer
5000
SQL>
相关参考:
How to increase db_files parameter? (Doc ID 2658128.1)
There are 2 limits, DB_FILES is a hard limit and MAXDATAFILES a soft limit.
DB_FILES is the limit on the total number of files associated with a particular INSTANCE of a database.
MAXDATAFILES is specified in the clause the last time CREATE DATABASE or CREATE CONTROLFILE was executed (database limit).
When MAXDATAFILES is reached, the controlfile will expand automatically (as long as there is disk space available) so that the data files section can accommodate more files. Recreating the control file is not required to increase the MAXDATAFILES parameter.
You can find these 2 values:
select value from v$parameter where name = 'db_files';