DATAGARUD主庫報ORA-16146錯誤解決
產品版本 10.2.0.4
作業系統 Oracle Solaris on SPARC (64-bit) 5.10
一、alert日誌如下:
主庫alert log
---------------------
Tue Mar 11 14:30:47 2014
LNS: Standby redo logfile selected for thread 2 sequence 192246 for destination LOG_ARCHIVE_DEST_2
Tue Mar 11 14:37:00 2014
Errors in file /oracle/admin/dbrac/bdump/dbrac2_arc9_6512.trc:
ORA-16146: standby destination control file enqueue unavailable
Tue Mar 11 14:37:00 2014
Master background archival failure: 16146
Tue Mar 11 14:40:07 2014
Errors in file /oracle/admin/dbrac/bdump/dbrac2_arc9_6512.trc:
ORA-16146: standby destination control file enqueue unavailable
備庫alert log
---------------------
Tue Mar 11 14:29:44 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[19]: Successfully opened standby log 8: '+DATA/dbrac_standby/onlinelog/group_8.473.823623967'
Tue Mar 11 14:32:12 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[13]: Successfully opened standby log 12: '+DATA/dbrac_standby/onlinelog/group_12.1879.823705847'
Tue Mar 11 14:34:26 2014
Media Recovery Log +DATA/dbrac_standby/archivelog/2014_03_11/thread_2_seq_192246.509.841933921
Tue Mar 11 14:34:48 2014
Media Recovery Log +DATA/dbrac_standby/archivelog/2014_03_11/thread_1_seq_193463.1784.841933765
Tue Mar 11 14:35:44 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[19]: Successfully opened standby log 7: '+DATA/dbrac_standby/onlinelog/group_7.492.823623957'
Tue Mar 11 14:37:37 2014
Media Recovery Waiting for thread 1 sequence 193464 (in transit)
Tue Mar 11 14:38:47 2014
Media Recovery Log +DATA/dbrac_standby/archivelog/2014_03_11/thread_1_seq_193464.2163.841934073
Tue Mar 11 14:40:01 2014
Media Recovery Waiting for thread 2 sequence 192247 (in transit)
二、分析及處理
分析思路:
ORA-16146錯誤說明有程式持有CF enqueue(控制檔案鎖) 超過900秒沒有釋放,導致其他程式無法獲得CF enqueue,
其實這個錯誤資訊有些不夠準確,不單單是等待備庫的CF enqueue,等待主庫的CF enqueue時也會報這個錯誤。
導致ORA-16146錯誤的原因可能有:
1. IO效能慢,導致IO操作時間過長。
2. 某個持有CF enqueue(控制檔案鎖) 超過900秒沒有釋放。
3. 控制檔案中的資訊過多,導致查詢控制檔案時間過長。
4. 如果只是單純出現ORA-16146,而沒有其他問題,那麼這個錯誤是可以忽略的。
進一步檢查:
1. OSW 或者其他OS資源監控資料
2. 主庫和備庫分別查詢:
SQL>select count(*) from v$archived_log;
SQL>select count(*) from v$log_history;
SQL> select count(*) from v$archived_log;
SQL> select count(*) from v$log_history;
SQL> show parameter CONTROL_FILE_RECORD_KEEP_TIME;
查詢如下:
主庫 備庫
select count(*) from v$archived_log; 18956 18956
select count(*) from v$log_history; 36272 36272
select count(*) from v$archived_log; 18956 18956
select count(*) from v$log_history; 36272 36272
show parameter CONTROL_FILE_RECORD_KEEP_TIME; 7 10
3. Sun: /var/adm/messages(主庫和備庫)
分析解決
透過查詢試圖 v$archived_log 和 v$log_history,發現大量歷史日誌資訊,因此很有可能是由於控制檔案中記錄的日誌數量是非常多的,
查詢時會消耗比較多的時間。
修改引數如下:
alter system set CONTROL_FILE_RECORD_KEEP_TIME=3 scope=BOTH;
透過幾個星期的觀察,沒再出現ORA-16146,問題解決!
作業系統 Oracle Solaris on SPARC (64-bit) 5.10
一、alert日誌如下:
主庫alert log
---------------------
Tue Mar 11 14:30:47 2014
LNS: Standby redo logfile selected for thread 2 sequence 192246 for destination LOG_ARCHIVE_DEST_2
Tue Mar 11 14:37:00 2014
Errors in file /oracle/admin/dbrac/bdump/dbrac2_arc9_6512.trc:
ORA-16146: standby destination control file enqueue unavailable
Tue Mar 11 14:37:00 2014
Master background archival failure: 16146
Tue Mar 11 14:40:07 2014
Errors in file /oracle/admin/dbrac/bdump/dbrac2_arc9_6512.trc:
ORA-16146: standby destination control file enqueue unavailable
備庫alert log
---------------------
Tue Mar 11 14:29:44 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[19]: Successfully opened standby log 8: '+DATA/dbrac_standby/onlinelog/group_8.473.823623967'
Tue Mar 11 14:32:12 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[13]: Successfully opened standby log 12: '+DATA/dbrac_standby/onlinelog/group_12.1879.823705847'
Tue Mar 11 14:34:26 2014
Media Recovery Log +DATA/dbrac_standby/archivelog/2014_03_11/thread_2_seq_192246.509.841933921
Tue Mar 11 14:34:48 2014
Media Recovery Log +DATA/dbrac_standby/archivelog/2014_03_11/thread_1_seq_193463.1784.841933765
Tue Mar 11 14:35:44 2014
Primary database is in MAXIMUM PERFORMANCE mode
RFS[19]: Successfully opened standby log 7: '+DATA/dbrac_standby/onlinelog/group_7.492.823623957'
Tue Mar 11 14:37:37 2014
Media Recovery Waiting for thread 1 sequence 193464 (in transit)
Tue Mar 11 14:38:47 2014
Media Recovery Log +DATA/dbrac_standby/archivelog/2014_03_11/thread_1_seq_193464.2163.841934073
Tue Mar 11 14:40:01 2014
Media Recovery Waiting for thread 2 sequence 192247 (in transit)
二、分析及處理
分析思路:
ORA-16146錯誤說明有程式持有CF enqueue(控制檔案鎖) 超過900秒沒有釋放,導致其他程式無法獲得CF enqueue,
其實這個錯誤資訊有些不夠準確,不單單是等待備庫的CF enqueue,等待主庫的CF enqueue時也會報這個錯誤。
導致ORA-16146錯誤的原因可能有:
1. IO效能慢,導致IO操作時間過長。
2. 某個持有CF enqueue(控制檔案鎖) 超過900秒沒有釋放。
3. 控制檔案中的資訊過多,導致查詢控制檔案時間過長。
4. 如果只是單純出現ORA-16146,而沒有其他問題,那麼這個錯誤是可以忽略的。
進一步檢查:
1. OSW 或者其他OS資源監控資料
2. 主庫和備庫分別查詢:
SQL>select count(*) from v$archived_log;
SQL>select count(*) from v$log_history;
SQL> select count(*) from v$archived_log;
SQL> select count(*) from v$log_history;
SQL> show parameter CONTROL_FILE_RECORD_KEEP_TIME;
查詢如下:
主庫 備庫
select count(*) from v$archived_log; 18956 18956
select count(*) from v$log_history; 36272 36272
select count(*) from v$archived_log; 18956 18956
select count(*) from v$log_history; 36272 36272
show parameter CONTROL_FILE_RECORD_KEEP_TIME; 7 10
3. Sun: /var/adm/messages(主庫和備庫)
分析解決
透過查詢試圖 v$archived_log 和 v$log_history,發現大量歷史日誌資訊,因此很有可能是由於控制檔案中記錄的日誌數量是非常多的,
查詢時會消耗比較多的時間。
修改引數如下:
alter system set CONTROL_FILE_RECORD_KEEP_TIME=3 scope=BOTH;
透過幾個星期的觀察,沒再出現ORA-16146,問題解決!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127677/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dbfread報錯ValueError錯誤解決方法Error
- Qt報Multiple definition錯誤的解決QT
- 解決navicat遠端連線資料庫報2059錯誤的方法資料庫
- Ocelot錯誤解決
- 主庫到standby報錯解決:Error 12154 received logging on to the standby ORA-12154Error
- Nginx報504 gateway timeout錯誤的解決方法NginxGateway
- 解決 Python UnicodeEncodeError 錯誤PythonUnicodeError
- sql server資料庫附加錯誤的解決過程SQLServer資料庫
- 資料庫連線錯誤的原因及解決方法資料庫
- MySQL 主從複製,常見的binlog錯誤及解決方法MySql
- PbootCMS 404 錯誤解決方法boot
- Linux下錯誤解決方案Linux
- latex 錯誤以及解決方案
- HTTP 錯誤 500.19- Internal Server Error 錯誤解決方法HTTPServerError
- IDEA啟動時報Failed to create JVM錯誤的解決IdeaAIJVM
- Dedecms錯誤警告:連線資料庫失敗,出錯怎麼解決?資料庫
- 解決Python中使用requests庫遇到的身份驗證錯誤Python
- 解決遷移資料庫錯誤,索引長度過長資料庫索引
- 網站提示連線資料庫錯誤怎麼解決網站資料庫
- steam磁碟寫入錯誤怎麼解決 steam磁碟寫入錯誤解決方法大全
- mybatis報錯解決MyBatis
- 解決eslint報錯EsLint
- undefined reference to錯誤的解決方法Undefined
- Cocopods的升級錯誤解決
- ORA-12005 錯誤的解決
- SAXParseException的錯誤解決之二Exception
- ORA-28000錯誤解決方案
- dedecms提示500錯誤解決方法
- PHP curl error 60 錯誤解決PHPError
- linux解決“XXX is not in the sudoers file”錯誤Linux
- 解決java.lang.NoSuchMethodError錯誤JavaError
- HTTP代理錯誤怎麼解決?HTTP
- win7_iis報500.19和500.21錯誤問題解決Win7
- navicat連線MySQL8.0.11報2059錯誤的解決方案MySql
- TCP網路除錯助手提示錯誤:“1035:未知錯誤” 解決方案TCP除錯
- Windows下使用python庫 curses遇到錯誤訊息的解決方案WindowsPython
- 解決MySQL server has gone away錯誤的解決方案MySqlServerGo
- 解決 PBootCMS 中因資料庫名稱錯誤導致的“執行 SQL 發生錯誤!錯誤:no such table: ay_config”問題boot資料庫SQL
- 使用Boost庫報error C4996錯誤Error996