DCD和TCP keepalive 比较

相同点

  1. 功能基本一样,都是防止空闲会话被防火墙杀死
  2. 配置完成均不会对现有会话产生影响,会话要重新登陆才可以
  3. 都只能配置在数据库服务端

不同点

DCD配置

sqlnet.expire_time

lsnrctl reload 配置生效

TCP keepalive

/etc/sysctl.conf 配置:

net.ipv4.tcp_keepalive_time = 3600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3

sysctl -p 配置生效

TCPDUMP结果

/*
tcp_keepalive
*/
17:06:48.692935 IP 192.168.8.49.40167 > ptest.ncube-lm: Flags [.], ack 4934, win 295, options [nop,nop,TS val 2130653937 ecr 2243044224], length 0
17:06:49.692457 IP ptest.ncube-lm > 192.168.8.49.40167: Flags [.], ack 4665, win 296, options [nop,nop,TS val 2243045264 ecr 2130653937], length 0
/*
DCD
*/
17:32:04.338851 IP ptest.ncube-lm > 192.168.8.49.40443: Flags [P.], seq 4942:4952, ack 4665, win 296, options [nop,nop,TS val 2244559910 ecr 2132109599], length 10
17:32:04.339805 IP 192.168.8.49.40443 > ptest.ncube-lm: Flags [.], ack 4952, win 294, options [nop,nop,TS val 2132169611 ecr 2244559910], length 0

同时配置了DCD和TCP keepalive,只有DCD在工作,测试环境( CentOS release 6.5/Oracle 11.2.0.1)。

RAC模式下,DCD参数必须配置在RDBMS_HOME下,否则不生效

ALert 报错信息

***********************************************************************

Fatal NI connect error 12170.

VERSION INFORMATION:
TNS for Linux: Version 11.2.0.1.0 – Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.1.0 – Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.1.0 – Production
Time: 31-12月-2015 23:05:47
Tracing not turned on.
Tns error struct:
ns main err code: 12535

TNS-12535: TNS: 操作超时
ns secondary err code: 12560
nt main err code: 505

TNS-00505: 操作超时
nt secondary err code: 110
nt OS err code: 0
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=XXX.XXX.XXX.XXX)(PORT=41745))

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注