Oracle 的 TCP.SEND_TIMEOUT 参数
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 |