ORA-00059:maximum number of DB_FILES exceed 解決
一
今天發現有個表空間快滿了,想新增兩個資料檔案,結果報錯 ORA-00059:maximum number of DB_FILES exceed
檢視系統的db_files引數為:200,而資料檔案總數也確實為200,報這個錯誤正常。
SQL> show parameter db_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
SQL>
SQL> select count(1) from dba_data_files;
COUNT(1)
----------
200
SQL>
使用oerr 工具可以參看到如下資訊:
ORA-00059: maximum number of DB_FILES exceededCause: The value of the DB_FILES initialization parameter was exceeded.Action: Increase the value of the DB_FILES parameter and warm start.
報這個錯誤的原因是因為資料檔案數量已經達到db_files這個引數的值,如果想增加資料檔案的數量,必須修改db_files引數值,然後重啟資料庫。
而修改db_files引數值,還必須明確另一個引數的值,那就是存在於控制檔案中的 maxdatafiles。
db_files和maxdatafiles的關係與區別
區別:
存在位置不同
db_files存在於spfile檔案或pfile檔案中。
maxdatafiles存在於控制檔案中,該值可以在建立資料庫時指定。
關係
當db_files<maxdatafiles時,那麼只需要修改db_files的值,並重啟資料庫即可解決ORA-00059。
當db_files=maxdatafiles時,則需要重新建立控制檔案,並修改db_files值,重啟資料庫來解決該問題。
檢視控制檔案中的maxdatafiles值可以透過建立控制檔案的追蹤檔案來檢視
SQL> alter database backup controlfile to trace;
資料庫已更改。
SQL>
在udump目錄下,找到最新的追蹤檔案,即為新生成的控制檔案的追蹤檔案。
該資料庫的maxdatafiles值為2048,因此我只需修改db_files的引數值就可以解決該問題。
由於是RAC資料庫,因此在修改的時候需要加上 sid='*' 這個引數。修改的順序為(這是我個人實施的順序):
1、在所有節點上分別執行命令:
alter system set db_file=1024 scope=spfile sid='*'; #注意,這裡的sid沒有指明用那個節點的sid,*表示所有節點
注:我當時執行的時候考慮到設定了 sid='*' 這個引數,因此只在一個節點上執行,當重啟另一節點資料庫時候報錯,
具體錯誤資訊忘記儲存,意思就是當前所使用的db_files的值和另一個節點不匹配。因此我又在該節點執行了一次如上的命令,再次重啟資料庫成功。
2、關閉所有節點資料庫。
3、順序重啟所有節點資料庫。
注:這裡要注意,是關閉所有節點後,再依次重啟,不然會造成db_files值和另一節點不匹配的報錯。
至此,問題解決,再新增資料檔案成功。
如下是官方關於db_files這個引數的說明
Property
Description
Parameter type Integer
Default value 200
Modifiable No
Range of values Minimum: the largest among the absolute file numbers of the datafiles in the database
Maximum: operating system-dependent
Basic
No
Real Application Clusters You must set this parameter for every instance, and multiple instances must have the same value.
DB_FILES specifies the maximum number of database files that can be opened for this database. The maximum valid value is the maximum number of files, subject to operating system constraint, that will ever be specified for the database, including files to be added by ADD DATAFILE statements.
If you increase the value of DB_FILES, then you must shut down and restart all instances accessing the database before the new value can take effect. If you have a primary and standby database, then they should have the same value for this parameter.
二
DB_FILES 定義了oracle資料中資料檔案的個數,當資料檔案個數超過這個引數設定的值就會報ORA-00059這個錯誤。
解決辦法:
show parameter db_files; --檢視當前設定的值
sqlplus / as sysdba
alter system set db_files=更大的值 scope=spfile;
shutdown immediate;
startup;
說明:
這個引數設定的值的大小不會影響效率,只是單純的控制資料檔案的個數
RAC生產環境下面修改該引數步驟如下:
(1)先在任意一個節點檢視該引數值
SQL> show parameter db_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
在任意一個節點執行,這裡sid=’*’是指在所有例項上生效
SQL> alter system set db_files=350 scope=spfile sid='*';
將所有節點上將監聽全部停了
[grid@RAC1 ~]$ srvctl stop listener
[grid@RAC1 ~]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is not running
在所有節點上執行Kill LOCAL=NO程式
Kill所有的外部連結
ps –ef|grep LOCAL=NO|grep –v grep|awk '{print $2}'|xargs kill -9
(5)在所有節點上執行
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
(6)按照順序將庫啟動,不要在一個庫未啟動完成的時候去啟動另外一個庫,否則會出現下面錯誤
ORA-01105: mount is incompatible with mounts by other instances
ORA-01174: DB_FILES is 350 buts needs to be 320 to be compatible
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25469263/viewspace-2644927/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-00059: maximum number of DB_FILES exceeded 處理
- 更改oracle 預設db_files 200(ORA-00059: maximum number of DB_FILESOracle
- ORA-00059: maximum number of DB_FILES exceeded 情況分析及實驗處理
- ORA-00018: maximum number of sessions exceeded錯誤解決Session
- ORA-00059錯誤分析以及MAXDATAFILES、DB_FILES引數修改
- ORA-00020:maximum number of processes (500) exceeded 錯誤解決方法
- [LeetCode] Third Maximum NumberLeetCode
- ANS0326E This node has exceeded its maximum number of mount points 解決辦法
- LeetCode-Create Maximum NumberLeetCode
- ORA-00018:maximum number of sessions exceedeSession
- ORA-00018: maximum number of sessions exceededSession
- ORA-00018 maximum number of sessions exceededSession
- skipped: maximum number of running instances reached (1)
- Oracle - ORA-00020: maximum number of processes (500) exceededOracle
- 深度剖析:ORA-00018: maximum number of sessions exceededSession
- [LeetCode] 1953. Maximum Number of Weeks for Which You Can WorkLeetCode
- KCBR: Number of read descriptors = 4096 問題解決
- 解決 Error: ENOSPC: System limit for number of file watchers reachedErrorMIT
- Leetcode 202 Happy Number Javascript 解決方案LeetCodeAPPJavaScript
- Oracle中資料塊中row number缺失(記錄,未解決)Oracle
- 關於開發者協議Edit Phone Number終極解決方案協議
- ORA-00059的異常處理
- CRASH with error- last checkpoint exceed log group capacityErrorAST
- LeetCode(1297):子串的最大出現次數 Maximum Number of Occurrences of a Substring(Java)LeetCodeJava
- CF1946B Maximum Sum 題解
- db_files和控制檔案maxdatafiles
- Oracle中number型別詳解Oracle型別
- number(p,s)型別詳解型別
- ARC173A Neq Number 題解
- 104. Maximum Depth of Binary Tree(圖解)圖解
- E - Maximum Glutton
- MySQL資料庫index column size too large. the maximum column size is 767 bytes問題解決MySql資料庫Index
- Oracle ORA-01948:identifier's name length(%s)exceeds maximum(%s)報錯的解決OracleIDE
- java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2)的解決方法JavaSQLExceptionIndex
- JS -- number資料型別詳解JS資料型別
- LeetCode 題解(252) : Find the Duplicate NumberLeetCode
- oracle 9i dataguard 由MAXIMUM PERFORMANCE模式變為MAXIMUM PROTECTIONOracleORM模式
- Linux resize2fs: Bad magic number in super-block錯誤的解決方法LinuxBloC