ORA-00059錯誤分析以及MAXDATAFILES、DB_FILES引數修改
ORA-00059錯誤分析以及MAXDATAFILES、DB_FILES引數修改
1. 問題描述
本文的環境為:
OS: AIX 6.1
DB: oracle 10.2.0.5 rac
在擴表空間的容量,增加資料檔案時,報了ORA-00059:達到最大的檔案數量,錯誤的描述如下:
alter tablespace p_data_low add datafile '/dev/rora_p_data_31_l' size 25580m
*
ERROR at line 1:
ORA-00059: maximum number of DB_FILES exceeded
[@more@]2.問題分析
2.1 使用oerr工具,查詢一下導致該錯誤的原因和解決該問題的簡單描述,如下:
$ oerr ora 00059
00059, 00000, "maximum number of DB_FILES exceeded"
// *Cause: The value of the DB_FILES initialization parameter was exceeded.
// *Action: Increase the value of the DB_FILES parameter and warm start.
2.2 檢查資料庫的DB_FILES引數設定,本例為DB_FILES=200 ,如下:
SQL> show parameter db_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_files integer 200
2.3 統計資料庫資料檔案的數量,可以看到資料庫資料檔案的數量已經達到了引數DB_FILES設定的200閥值,如下:
SQL> select count(1) from v$datafile;
COUNT(1)
----------
200
ORACLE 透過兩個引數來限制資料檔案的數量,分別為MAXDATAFILES和DB_FILES.
MAXDATAFILES 是在控制檔案建立的時候設定的,並且儲存在控制檔案中,oracle 10G RAC該引數的預設設定為1024,
如果要修改這個引數,則需要透過重新建立控制檔案來完成,該引數被稱為'hard limit';
DB_FILES 是在spfile或者init{SID}.ora檔案中設定的,可以被手工修改,重啟資料庫後就生效,被成為'soft limit';
各個作業系統和資料庫版本的MAXDATAFILES最大限制值如下:
V7 8.0.5 8.1.6 9.2 10.1 10.2
-------- -------- ------ -------- -------- --------
UNIX Per TS 1022 1022 1022 1022 1022
Per DB 1022 65536 65536 65534 65334 65334
VMS Per TS 1022 - - - 1022
Per DB 1022 65536 - 65334
WINDOWS Per TS 1022 1022
Per DB 1022 65536 65536 65534 65334 65334
增加MAXDATAFILES引數,將增加控制檔案的大小。所以需要加以限制。
當達到MAXDATAFILES閥值時,只要磁碟空間允許,控制檔案將自動擴充套件.
增加DB_FILES引數,將增加了PGA的開銷(增加了每個連線資料庫的使用者的PGA開銷)。
3. 問題解決
3.1 查詢控制檔案中MAXDATAFILES引數的設定值。
先將控制檔案的建立資訊匯出到dump檔案中,在dump檔案中可以查詢到該引數的設定值。
SQL>alter database backup control file to trace;
SQL>host
$cd $ORACLE_BASE/admin/{ORACLE_SID}/udump
$ls -lt|more
$ ls -lt
total 312
-rw-r----- 1 oracle oinstall 17404 Jan 18 10:43 jlzdh1_ora_7274760.trc
-rw-r----- 1 oracle oinstall 858 Jan 18 10:26 jlzdh1_ora_7471420.trc
......
$more ./jlzdh1_ora_7274760.trc
......
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "JLZDH" RESETLOGS NOARCHIVELOG
MAXLOGFILES 192
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 32
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/dev/rora_redo1_01' SIZE 380M,
GROUP 2 '/dev/rora_redo1_02' SIZE 380M,
GROUP 5 '/dev/rora_redo1_03' SIZE 380M,
GROUP 6 '/dev/rora_redo1_04' SIZE 380M
-- STANDBY LOGFILE
DATAFILE
'/dev/rora_system_01',
'/dev/rora_undotbs1_01',
'/dev/rora_sysaux_01',
'/dev/rora_n_data_01',
......
可看到MAXDATAFILES被設定為1024.
3.2 因為當前的檔案數量未達到MAXDATAFILES引數值,所以不需要使用重新建立控制檔案來修改該引數。
注:如果需要透過重新建立控制檔案來修改MAXDATAFILES引數值,請參看我的部落格文章http://djb1008.itpub.net/post/42280/526053
3.3 修改DB_FILES引數(RAC 環境,需要加上SID='*'
SQL>alter system set db_files=1000 scope=spfile sid='*';
重新啟動資料庫
SQL>shutdown immediate;
SQL>STARTUP
如果是rac的話,可以使用srvctl命令,停止和啟動資料庫,如下:
$srvctl stop db -d orcl
$srvctl start db -d orcl
3.4 繼續擴充表空間的容量,不再報錯,命令執行成功。
SQL>alter tablespace p_data_low add datafile '/dev/rora_p_data_31_l' size 25580m
Tablespace altered.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/32980/viewspace-1057168/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 重新建立控制檔案,修改MAXDATAFILES引數
- db_files和控制檔案maxdatafiles
- 更改oracle 預設db_files 200(ORA-00059: maximum number of DB_FILESOracle
- ORA-00059:maximum number of DB_FILES exceed 解決
- ORA-00059: maximum number of DB_FILES exceeded 處理
- SPFILE引數修改錯誤的解決辦法
- ORA-00059: maximum number of DB_FILES exceeded 情況分析及實驗處理
- Oracle的ORA-00059錯誤(超出資料檔案個數)Oracle
- oracle 9i 後 maxdatafiles 與db_files的關係Oracle
- 【轉載】控制檔案中的 MAXDATAFILES 和 DB_FILES 關係
- MAXDATAFILES,DB_FILES及控制檔案的自動擴充套件套件
- 【故障處理】修改maxuproc引數解決TNS-00519錯誤
- mybatis引數型別錯誤MyBatis型別
- 變數命名以及常見錯誤變數
- 誰控制資料檔案最大數限制是 db_files還是控制檔案中的maxdatafiles??
- 資料庫db_files引數增大怎麼辦資料庫
- 結構體引數的傳遞以及如何修改指標引數的值結構體指標
- 路由器引數錯誤造成的故障路由器
- [Oracle]由於初始化引數檔案修改錯誤導致oracle無法startupOracle
- 行動硬碟引數錯誤怎麼解決?行動硬碟開啟出現引數錯誤的修復方法硬碟
- Oracle 11g db_files 與 控制檔案中的 maxdatafiles 的關係及區別Oracle
- linux引數修改Linux
- JVM引數以及用法JVM
- ORA-00265:修改Oracle歸檔模式錯誤分析Oracle模式
- 錯誤程式碼的個人見解以及邏輯分析題
- 為啥大神們可以根據ORA 600錯誤引數猜測 錯誤型別?型別
- Flask-restful 用法及自定義引數錯誤資訊FlaskREST
- 開發微信公眾號基本配置引數錯誤
- C# WebService返回引數為DataTable報錯“XML文件有錯誤”C#WebXML
- ORA-00600:內部錯誤程式碼,引數:[qertbFetchByRowID],[],[],[],[],[],[],[]分析與處理
- Spring Cloud Gateway 動態修改請求引數解決 # URL 編碼錯誤傳參問題SpringCloudGateway
- nginx 常見引數以及重定向引數配置Nginx
- Oracle引數修改小結Oracle
- yolov8 face 錯誤修改YOLO
- latex 錯誤以及解決方案
- 恢復資料庫引數錯誤無法啟動資料庫
- Oracle動態、靜態引數引數修改規則Oracle
- Druid連線池引數maxWait配置錯誤引發的問題UIAI