Oracle11.1.0.7版本的ASSM與ORA-04030錯誤

路途中的人2012發表於2016-05-15
雖然Oracle的最新版本都已經要到12.2了,但是在國內的生產環境,因為各種原因,尤其是政府部門和傳統企業,其資料庫版本卻沒有迭代到最新的Oracle資料庫版本,本人就負責的就有10g的生產庫,並且還存著核心資料(之前聽同行說他們生產環境還有9i的庫,不敢輕易觸碰。。。。。。)。這次的經驗和教訓是:
1、本人一開始學習的版本是11.2.0.4,相比之前的版本新特性很多,切忌套用到舊版本;
2、RAC架構的資料庫,停庫的時候一定要保留一個節點,一次關閉一個例項,這或許會成為你救命的稻草;
3、最淺顯的錯誤有時候是最難以發現的,故障診斷的時候一開始就應該從最一般的原因開始診斷。

最近負責的一個RAC雙節點的資料庫,版本是11.1.0.7,alert日誌中報了三年多的ORA-04030錯誤,具體如下:

點選(此處)摺疊或開啟

  1. DDE: Problem Key 'ORA 4030' was flood controlled (0x6) (incident: 1193848)
  2. ORA-04030: out of process memory when trying to allocate 368 bytes (kxs-heap-p,rworalo : rwordops)
  3. Further messages for this problem key will be suppressed for up to 10 minutes
Oracle是這麼解釋這個錯誤的:

點選(此處)摺疊或開啟

  1. [oracle@hhu ~]$ oerr ora 04030
  2. 04030, 00000, "out of process memory when trying to allocate %s bytes (%s,%s)"
  3. // *Cause: Operating system process private memory was exhausted.
  4. // *Action:
即作業系統pga資源緊張,查了一下系統pga和sga的大小:
pga_aggregate_target       20G
sga_target                       25G
memory_max_target        45G
結果在查詢的時候還查到了memory_max_target居然不是0,而是設定成了45G,當時就想,不是ASMM管理方式嗎,怎麼會加個memory_max_target,感覺有點畫蛇添足啊?接著查了一下pga和sga的實際使用量,發現pga最高的使用量不過7G,sga不到40G,乍一看感覺不出什麼問題。因為這個問題沒有嚴重影響系統的正常執行,一時半會兒又看不出什麼問題,於是乎就把這個問題放著了。
大概過了一個半月,遇到了系統每兩個月一次的負載高峰期,資料庫響應時間異常長,事後對AWR進行分析的時候看到了伺服器實體記憶體大小為64G,突然想起4030錯誤會不會是資料庫記憶體設定過大超過了實體記憶體?!於是又檢視了一下
sga_max_size的大小,居然是45G!這樣一來,sga_max_size加上pga_aggregate_target的大小就超過了實際實體記憶體的大小,會不會就是問題所在?




待續

































































































































來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2100457/,如需轉載,請註明出處,否則將追究法律責任。

相關文章