報這個錯誤的原因是因為數據文件數量已經達到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;