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

TNSPING 逾時/回應緩慢問題診斷與解決

     編輯:DB2 教學

TNSPING 逾時/回應緩慢問題診斷與解決

當執行 tnsping 指令時出現高延遲(如 266,310 毫秒),甚至逾時失敗,通常是因為 Listener 日誌檔案過大導致。本文提供快速診斷與解決方案。

現象重現

E:\s01\app\oracle\product\11.2.0\dbhome_1\BIN>tnsping CENORCL
TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 25-MAY-2015 10:26:59
...
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = W01SQL0601.pharmatechs.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = cenorcl)))
OK (266310 msec)

回應時間高達 266 秒,明顯異常。

根因分析

Oracle Listener 預設將所有連線嘗試記錄至 listener.log。當該檔案大小超過 4GB(32 位元系統限制)或檔案系統無法高效處理巨型檔案時,Listener 寫入日誌會產生嚴重阻塞,導致新連線請求處理緩慢,進而引發 TNSPING 高延遲。

解決步驟

  1. 停止 Listener 服務:
    lsnrctl stop
  2. 備份或刪除超大的 listener.log(路徑通常在 $ORACLE_HOME/network/log/ 或 $ADR_BASE/diag/tnslsnr//listener/trace/):
    rm listener.log 或 mv listener.log listener.log.bak
  3. 重新啟動 Listener:
    lsnrctl start

執行完成後,再次執行 tnsping 即可恢復正常毫秒級回應。

長效預防機制

  • 啟用日誌輪轉:在 listener.ora 中設定 LOGGING_LISTENER = OFF 關閉非必要日誌,或配置 ADR 自動清理策略(DIAG_ADR_ENABLED = ON)。
  • 定期清理排程:建立 crontab/Windows 排程任務,每週檢查日誌大小並執行歸檔清理。
  • 監控告警:將 Listener 日誌大小納入監控系統,設定閾值告警(如超過 1GB 觸發通知)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved