由密碼錯誤引發的ORA-03135

abstractcyj發表於2017-06-08
同事反映某個客戶的ERP UAT環境資料庫登入不上。連線時超時,同時出現錯誤:
SQL*Plus: Release 11.2.0.4.0 Production on 星期四 6月 8 11:44:55 2017


Copyright (c) 1982, 2013, Oracle.  All rights reserved.


ERROR:
ORA-03135: 連線失去聯絡
程式 ID: 0
會話 ID: 0 序列號: 0

一開始認為是網路問題,但是當我SSH到主機時,本機登入也有這個問題。
但是當我檢查監聽以及例項狀態時,並未發現問題。 
同時在alert_INSTANCE_ID.log中發現了大量TNS有關的錯誤。
如:
WARNING: inbound connection timed out (ORA-3136)

Fatal NI connect error 12170.


  VERSION INFORMATION:
TNS for Linux: Version 11.2.0.4.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
  Time: 08-JUN-2017 12:37:52
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    
TNS-12535: TNS:operation timed out
    ns secondary err code: 12606
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
  Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=58888))

懷疑是TNS TIMEOUT設定問題。修改了 sqlnet.ora,修改引數:SQLNET.INBOUND_CONNECT_TIMEOUT=0
listener.ora:   INBOUND_CONNECT_TIMEOUT_LISTENER=0

重啟監聽之後依舊無果,錯誤依舊存在
嘗試用scott使用者去登入,卻能夠正常登入資料庫

這時候,想去做個oradebug, 同時,腦子裡也想應該登入是被什麼等待事件阻塞了。

查詢v$session_blockers, 發現了3000多條記錄,等待事件都是library cache lock。
同時發現會話都是來自於jdbc客戶端, 於是停止了java應用。於是等待事件開始消失,同時也能夠開始正常登入。

使用java應用的資料庫使用者名稱,密碼登入資料庫時,一直提示密碼錯誤。 難道是密碼錯了?
將使用者密碼修改為配置檔案中配置的使用者密碼,同時啟動java應用,沒有發現其他異常。

進一步看alert日誌,也沒有發現有新的TNS或者登入相關的錯誤。

獲得的經驗:不要一開始就認為這個是網路問題導致, alert日誌中的告警肯定都有來源。
                 基本上從等待事件能發現很多問題的蛛絲馬跡

MOS相關BUG,文件:  文件 ID 19867671.8

Bug 19867671  "library cache lock" caused by wrong password login - superseded





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

相關文章