Oracle 的 TCP.SEND_TIMEOUT 參數
一 參數基本概念
TCP.SEND_TIMEOUT
是 Oracle Net Services 中的一個重要參數,用于控制 TCP 數據發送操作的最長等待時間。
二 關鍵特性
特性 | 說明 |
---|---|
參數類型 | sqlnet.ora 配置文件參數 |
默認值 | none (無超時限制) |
單位 | ms, sec, min, 默認單位為秒 |
適用對象 | 客戶端和服務器端均可配置 |
三 參數作用
-
控制數據發送操作的最長等待時間
- 當網絡擁塞或接收方處理緩慢時,防止發送方無限期等待
- 避免會話長時間掛起在數據發送階段
-
主要影響以下操作:
- SQL 查詢結果返回
- 批量數據加載
- 數據庫鏈接操作
- 分布式事務
-
與以下錯誤相關:
ORA-12535: TNS:operation timed out
ORA-12608: TNS: Send timeout occurred
四 配置方法
4.1 在 sqlnet.ora 中設置
# 示例:設置為60秒超時
TCP.SEND_TIMEOUT=60
4.2 查看當前設置
-- 在數據庫中查看(需要DBA權限)
SELECT name, value
FROM v$parameter
WHERE name LIKE '%timeout%';-- 或直接檢查sqlnet.ora文件
五 最佳實踐建議
-
典型配置方案:
# 對于穩定內網環境 TCP.SEND_TIMEOUT=0 # 無超時# 對于不穩定網絡環境 TCP.SEND_TIMEOUT=120
-
調整建議:
- 批量作業:建議設置較大值(300秒以上)
- OLTP系統:可設置較小值(60-120秒)
- 跨廣域網:需要根據實際網絡延遲調整
-
問題診斷:
# 啟用網絡跟蹤 SQLNET.TRACE_LEVEL=16 SQLNET.TRACE_DIRECTORY=/oracle/trace
六 注意事項
- 性能影響:
- 設置過小會導致頻繁超時中斷
- 設置過大會掩蓋真正的網絡問題
七 與其他數據庫的對比
數據庫 | 類似參數 | 默認值 | 配置方式 |
---|---|---|---|
Oracle | TCP.SEND_TIMEOUT | 0 | sqlnet.ora |
MySQL | net_write_timeout | 60 | my.cnf |
PostgreSQL | tcp_user_timeout | 0 | postgresql.conf |