ORA-3136 問題處理


Alert 日志報錯:
Wed May 22 18:02:47 2019
***********************************************************************
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: 22-MAY-2019 18:02:47
  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=10.171.32.9)(PORT=44186))
WARNING: inbound connection timed out (ORA-3136)

處理方案

文檔 ID 2331569.1

引入此超時限制是為了抵御惡意客戶端嘗試使用無效證書的連接請求來攻擊數據庫服務器的情形。

  以下是這個錯誤的最可能的原因 

1.通常該錯誤拋出都是由於客戶端或者應用嘗試使用了錯誤的userid或者密碼來連接。參考下面的文檔:  Note: 793259.1 ORA-1017 May Cause ORA-3136 WARNING : Inbound Connection Timed Out in Alert Log

2.服務器收到有效的客戶端連接請求,但客戶端需要很長時間才能進行超過默認60秒的身份驗證。

3.數據庫服務器負載很重,因此無法在指定的超時時間內完成客戶端登錄。

 

要了解是什么導致了這個問題,可以做下面的檢查

在大多數情況下,數據庫服務器可以在默認值60秒內完成客戶端連接的認證。如果需要更長的時間,則在實施變通方法之前,請檢查以下項目

1.檢查數據庫服務器上的本地連接是否可以很快完成。

2.如果本地連接速度很快,請在網絡管理員的幫助下檢查底層網絡延遲。

3.檢查你的數據庫性能是否有問題。

 

4.檢查警報日志中是否有關於 ORA-600 或 ORA-7445 的嚴重錯誤,並首先解決它們。這些嚴重錯誤可能會引發數據庫服務器的緩慢。

使用下面指導步驟來設置這些參數的值使其高於默認的60秒

修改$RDBMS/network/admin/sqlnet.ora 文件(不是GIHome)

添加:

SQLNET.INBOUND_CONNECT_TIMEOUT = 120 

不需要重啟監聽。

通過檢查監聽trace 確認是否生效。

lsnrctl trace support    --啟用trace
lsnrctl trace off       --關閉trace
niotns: Enabling CTO, value=120000 (milliseconds) <== 120 seconds
niotns: Not enabling dead connection detection.
niotns: listener bequeathed shadow coming to life...

 

我的方法

我的數據庫為 11.2.0.4.0 單機,經測試以上方法沒生效。自己整理處理方法如下:

1.優化SQL 降低壓力

2.修改inbound_connect_timeout=120

 

操作

執行以下操作,不需要重啟監聽

lsnrctl set inbound_connect_timeout 120
lsnrctl save_config

參數保存到了listener.ora

檢查是否生效

打開監聽trace
lsnrctl trace support cat
/u01/app/oracle/diag/tnslsnr/oracle/listener/trace/ora_xxx.trc | grep mill
2019-05-23 15:56:52.729683 : nstoSetupTimeout:ATO enabled for ctx=0x0x14c3850, val=60000(millisecs)
2019-05-23 15:56:52.732543 : nstoSetupTimeout:ATO enabled for ctx=0x0x14c3850, val=60000(millisecs)            --修改120前,默認60s
2019-05-23 15:58:26.076381 : nstoSetupTimeout:ATO enabled for ctx=0x0x14c6c20, val=120000(millisecs)          --修改為120后
2019-05-23 15:58:26.079273 : nstoSetupTimeout:ATO enabled for ctx=0x0x14c6c20, val=120000(millisecs)

確認成功關閉trace

lsnrctl trace off

 

回滾操作

如果需要修改回60,執行:

lsnrctl set inbound_connect_timeout 60
lsnrctl save_config

 

悲劇

悲劇的是仍然不能解決問題,哈哈!

關閉監聽ADR

參考:https://www.cndba.cn/dave/article/1942  


vi $RDBMS/network/admin/listener.ora
  
  
  
          
DIAG_ADR_ENABLED_LISTENER=OFF

INBOUND_CONNECT_TIMEOUT_LISTENER=180 #如果listener名字為LISTENER2,修改為DIAG_ADR_ENABLED_LISTENER2


vi $ORACLE_HOME/network/admin/sqlnet.ora

DIAG_ADR_ENABLED=OFF

SQLNET.INBOUND_CONNECT_TIMEOUT=180  


重啟監聽

lsnrctl stop;lsnrctl start


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM