首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 10g R2 ORA-3136 連線逾時錯誤診斷與解決

     編輯:Oracle 資料庫基礎

新上線 10.2.0.2 資料庫 alert.log 連續出現 WARNING: inbound connection timed out (ORA-3136),伴隨 sqlnet.log 記錄 TNS-12535: operation timed out。根因:預設 INBOUND_CONNECT_TIMEOUT 過短(60 秒),導致緩慢連線被截斷。

錯誤現象

alert.log:
WARNING: inbound connection timed out (ORA-3136)

sqlnet.log:
Fatal NI connect error 12170
TNS-12535: TNS:operation timed out
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.123)(PORT=58147))

解決方案

  1. listener.ora 設定:
    INBOUND_CONNECT_TIMEOUT_listener_name = 0  -- 0 表停用逾時
  2. sqlnet.ora(Server 端)設定:
    SQLNET.INBOUND_CONNECT_TIMEOUT = 0
  3. 重載 Listener(無需重啟資料庫):
    lsnrctl reload
  4. 驗證:
    lsnrctl show inbound_connect_timeout
    -- 顯示 LISTENER parameter "inbound_connect_timeout" set to 0

安全性權衡

Oracle 建議保留逾時設定以防 DoS 攻擊(惡意佔用連線槽)。若設為 0,需配合防火牆、VALID_NODE_CHECKING_REGISTRATION、TCP.VALIDNODE_CHECKING 等網路層防護。

適用版本

10g R2 (10.2.0.1+) 引入此參數預設值變更,11g/12c/19c 同樣適用。

生產環境建議設定合理值(如 180~300 秒)而非完全停用,兼顧可用性與安全性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved