Oracle 10.2.0.4 高负载 触发 ORA-00494 错误
?
MOS 上有一篇文章專門介紹這個(gè)問題,參考:[ID 779552.1]。
?
在Oracle 10.2.0.4版本中,alert log 可能出現(xiàn)如下錯(cuò)誤:
?????? ORA-00494:enqueue [CF] held for too long (more than 900 seconds)
?
?????? 這個(gè)錯(cuò)誤,通常和ORA-600 [2103] 一起出現(xiàn)。 他們的產(chǎn)生的原因都是一樣的。進(jìn)程在指定時(shí)間內(nèi)(默認(rèn)900秒)不能獲取CF? 隊(duì)列。
?
?????? 一般只在系統(tǒng)高負(fù)載,高并發(fā),IO 等待和爭(zhēng)奪時(shí),Oracle進(jìn)程占有相關(guān)資源沒有釋放造成。
?
有2個(gè)bug 可能導(dǎo)致這個(gè)問題:
?????? (1)Bug7692631 - 'DATABASE CRASHES WITH ORA-494 AFTER UPGRADE TO 10.2.0.4'
?????? (2)unpublished Bug 7914003 'KILL BLOCKER AFTER ORA-494 LEADS TO FATALBG PROCESS BEING KILLED'
?
解決方法:
?????? 在10.2.0.4 的Oracle 的機(jī)制中會(huì)kill 所有block的進(jìn)程,包括后臺(tái)進(jìn)程和非后臺(tái)進(jìn)程。 要注意的是:
(1)??? 如果是非后臺(tái)進(jìn)程holder 了CF enqueue,那么kill 該進(jìn)程,那么實(shí)例還可以正常運(yùn)行。
(2)如果是后臺(tái)進(jìn)程,如LGWR holder了,那么kill LGWR 將會(huì)導(dǎo)致db crash。
?
為了避免kill 掉blocker 進(jìn)程(后臺(tái)和非后臺(tái)進(jìn)程),可以設(shè)置參數(shù):
?????? _kill_controlfile_enqueue_blocker=false.
?
?????? 這樣所有blocker 進(jìn)程都不會(huì)被kill 掉。即使該進(jìn)程hold 了enqueue 很長(zhǎng)時(shí)間。一般來說,最好的情況是避免kill 后臺(tái)進(jìn)程,允許kill 非后臺(tái)進(jìn)程。
?
?????? 為了阻止后臺(tái)進(jìn)程被kill,可以在init.ora? 文件里設(shè)置參數(shù):_kill_enqueue_blocker=1,該參數(shù)默認(rèn)值為3.
?
?????? 當(dāng)設(shè)置該參數(shù)之后,如果enqueue 被后臺(tái)進(jìn)程holder,該后臺(tái)進(jìn)程不會(huì)給kill。 所以實(shí)例不會(huì)crash。 如果enqueue被非后臺(tái)進(jìn)程holder,那么10.2.0.4 的機(jī)制還是會(huì)嘗試去kill 非后臺(tái)進(jìn)程。
?
?????? Oracle保留ORA-494 的原因是用戶更傾向于instance crash,如果不crash,db 就會(huì)hang住。???
?
?
?
?
?
-------------------------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
Email: dvd.dba@gmail.com
DBA1 群:62697716(滿);?? DBA2 群:62697977(滿)??DBA3 群:62697850(滿)??
DBA 超級(jí)群:63306533(滿);? DBA4 群: 83829929? DBA5群: 142216823???
DBA6 群:158654907? 聊天 群:40132017?? 聊天2群:69087192
--加群需要在備注說明Oracle表空間和數(shù)據(jù)文件的關(guān)系,否則拒絕申請(qǐng)
轉(zhuǎn)載于:https://www.cnblogs.com/spring3mvc/archive/2011/07/15/2414582.html
總結(jié)
以上是生活随笔為你收集整理的Oracle 10.2.0.4 高负载 触发 ORA-00494 错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老板燃气灶JZT-58B7可以换煤气用?
- 下一篇: 为什么不能睡地板?