报这个错误的原因是因为数据文件数量已经达到db_files这个参数的值,如果想增加数据文件的数量,必须修改db_files参数值,然后重启数据库。
而修改db_files参数值,还必须明确另一个参数的值,那就是存在于控制文件中的 maxdatafiles。
1. 查看系统限制db_files数,默认为200
show parameter db_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
--查看系统现有多少个文件数
select count(1) from dba_data_files;
2. 直接修改控制文件参数
sqlplus / as sysdba
alter system set db_files=1000 scope=spfile;
shutdown immediate;
startup;
注:rac下最好两台主机都执行下
3. 再次查看 db_files参数,变为1000即可
##############################################################
以下是查看控制文件参数的方法:
查看控制文件中的maxdatafiles值可以通过创建控制文件的追踪文件来查看
--备份控制文件到trace
alter database backup controlfile to trace;
在udump目录下,找到最新的追踪文件,即为新生成的控制文件的追踪文件。
在10g之前还有,bdump、cdump、udump,
在11g里统一放在了 oracle/diag/rdbms/orcl/orcl 里了
--查看日志文件位置
show parameter dump_dest
查看 cat xxx.trc | grep MAXDATAFILES
10G是 200, 11G默认为啥是100,但db_filse是200, 搞不懂
-----------------------------------------------------
--查看控制文件位置
show parameter spfile
--备份一份控制文件
create pfile='/home/oracle/db.ora' from spfile;