今天接到客户电话说前端业务出现无法使用的情况,通过表空间查看发现是表空间使用率占用到了100%,所以需要进行datafile文件的扩容,但是在扩容语句执行后遇见报错。

1、报错内容为ora-00059:超出db_files的最大值,如下图:

Oracle故障系列:ORA-00059超出db_files的最大值_spfile

2、查询db_files的最大值,发现最大值为200,如图:

show parameter db_files

Oracle故障系列:ORA-00059超出db_files的最大值_db_files_02

3、查询目前datafiles的数量,目前数据文件已经达到了200个,所有扩容表空间增加数据文件报错

select count(*) from dba_data_files;

Oracle故障系列:ORA-00059超出db_files的最大值_spfile_03

4、增大db_files参数需要修改参数文件,修改参数文件前需要备份参数文件,备份参数文件命令如下:

Oracle故障系列:ORA-00059超出db_files的最大值_db_files_04

5、备份参数文件完成后,进行参数修改,参数修改如下:

Oracle故障系列:ORA-00059超出db_files的最大值_oracle_05

6、由于是静态参数,在修改完成后需要对数据库进行重启,如下图:

Oracle故障系列:ORA-00059超出db_files的最大值_db_files_06

7、重启完成后,查看最大db_files参数,已经修改成功,如下:

Oracle故障系列:ORA-00059超出db_files的最大值_spfile_07

8、再次添加数据文件,数据文件添加成功,业务故障修复。

9、如果环境为rac环境,则需要按修改参数后对两节点同时重启,如下:

alter system set db_files=500 sid='*' scope=spfile;

系统层次启动数据库:

$ srvctl stop database -d xiaozc

$ srvctl start database -d xiaozc

10、总结

修改db_files参数需要重启数据库,基于此强烈建议在建库的时候对此参数进行调整,避免后期使用过程中更改此参数影响业务运行。