ORA-12710 錯誤深入解析

yezhibin發表於2011-05-11
        前一段一直在忙11g CBO的測試和多個專案雜事,沒有太多時間更新該部落格

了。想想還是不能太懶了,就把前幾天替客戶解決ora-12710錯誤分析張貼出來。

 問題:
   
        客戶使用應用程式時候,每天多次發生資料庫連線錯誤ora-12710,該問題持

續發生了很長一段時間,一直沒有找到解決的辦法。

日誌資訊:
     
    listener.log:沒有出現相關的連線錯誤資訊

    alertSID.log:沒有出現相關連線錯誤資訊

    sqlnet.log的錯誤資訊如下:
---------------------------------------------------------------------------
Fatal NI connect error 12170.

  VERSIOTNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production
  Time: 05-MAY-2011 21:34:38rotocol Adapter for IBM/AIX RISC System/6000: Versio
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: TNS:operation timed out
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Operation timed out
    nt secondary err code: 78
    nt OS err code: 0
  Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=XXX)(PORT=60871))

問題分析及解決:

1、該錯誤發生沒有一定的時間規律,有時候一個小時多次,有時候一個小時沒有;

2、從listener.log中沒有看到相關錯誤日誌,可以基本排除連線配置的問題

3、ns secondary code 12560是net session錯誤,ns有兩層(primary和

secondary)屬於第二層錯誤;NT是網路交易,有nt(1), nt(2)和nt(3),其錯誤程式碼

是78。

4、其他公司的DBA一直認為是防火牆的配置有問題,網管方面認為已經全放開了,

不可能是他們問題。其實防火牆是會造成該問題出現,通常需要將SQLNET fixup協

議,DPI,SQLNET inspection,SQL fixup,SQL AL(juniper)關閉。但我的經驗

是如果是防火牆的功能,其最終的錯誤程式碼不應該是78,而是100多(這個是猜

測,沒有正式的文件進行考證)。

5、錯誤程式碼78,我通常是認為因為連線數量的限制或者連線記憶體的限制而不讓連

接,所以開始查引數processes的設定問題,檢查設定為1000,遠遠滿足客戶現有

需要,檢查alert.log日誌中沒有該錯誤,通常表示應用程式中不存在啟動多個連線命

令,所以也排除了應用造成的問題,所以焦點聚集在連線記憶體限制。

6、登陸到oracle使用者,使用ulimit -a ,發現AIX使用者下memory=32M,修改/etc

/security/limits檔案中oracle使用者rss=-1。修改後問題消失。

總結:

     搞技術的人有一個通病就是往往把問題複雜化,我最近碰到的幾個問題,看是非

常複雜,但最終的解決結果都是非常簡單。

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

相關文章