[20180124]测试SQLNET.EXPIRE_TIME参数3

[20180124]测试SQLNET.EXPIRE_TIME参数3.txt

--//昨天测试SQLNET.EXPIRE_TIME参数时,链接如下:
http://blog.itpub.net/267265/viewspace-2150431/
http://blog.itpub.net/267265/viewspace-2150434/

--//两次测试发现发出网络监测包的间隔时间是862秒.997秒.按照以前的理解最大间隔是2*SQLNET.EXPIRE_TIME参数值,而我定义
--//SQLNET.EXPIRE_TIME=5,这样最大间隔是5*2*60 = 600秒.决定对以前的测试重新验证看看.

--//更正说明:实际上这个参数要修改oracle用户的$ORACLE_HOME/network/admin/sqlnet.ora,而里面的定义如下:
$  cat $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.EXPIRE_TIME=10

--//这样结果基本一致.加上我当时执行一些命令查看端口号,消耗一点时间.注意为什么不是读取grid用户的
--//$ORACLE_HOME/network/admin/sqlnet.ora文件的SQLNET.EXPIRE_TIME = 5参数,另外写blog探究.
--//也就是我大概知道为什么前面的测试实际上读取的是oracle用户的$ORACLE_HOME/network/admin/sqlnet.ora.

1.环境:
--//数据库服务器SQLNET.EXPIRE_TIME=1.注意如果修改参数,必须重启监听才生效.
$ grep -i SQLNET.EXPIRE_TIME sqlnet.ora
SQLNET.EXPIRE_TIME = 1

--//而我在执行sqlplus连接数据库前,先启动如下命令:
# tcpdump -i eth0 host 192.168.98.6 and not port 22 -nn -vv

--//在client端执行:
C:\> sqlplus scott/book@78

--//server端检查:
# tcpdump -i eth0 host 192.168.98.6 and not port 22 -nn -vv
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:16:22.398597 IP (tos 0x0, ttl 127, id 18198, offset 0, flags [DF], proto: TCP (6), length: 52) 192.168.98.6.52445 > 192.168.100.78.1521: S, cksum 0x2eb3 (correct), 2963559754:2963559754(0) win 8192
15:16:22.398793 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 52) 192.168.100.78.1521 > 192.168.98.6.52445: S, cksum 0x47cc (incorrect (-> 0xa7a8), 266362380:266362380(0) ack 2963559755 win 14600
--//....client 执行sqlplus 连接发出的包. 太长截断...
15:16:22.495949 IP (tos 0x0, ttl  64, id 17953, offset 0, flags [DF], proto: TCP (6), length: 57) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47d1 (incorrect (-> 0xd829), 6608:6625(17) ack 7936 win 330
15:16:22.692196 IP (tos 0x0, ttl 127, id 18244, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa8f0 (correct), 7936:7936(0) ack 6625 win 16307
--//不执行任何命令.等.....

15:18:22.442904 IP (tos 0x0, ttl  64, id 17954, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xe12d), 6625:6635(10) ack 7936 win 330
15:18:22.642793 IP (tos 0x0, ttl 127, id 20169, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa8e9 (correct), 7936:7936(0) ack 6635 win 16304
15:19:22.453071 IP (tos 0x0, ttl  64, id 17955, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xe123), 6635:6645(10) ack 7936 win 330
15:19:22.653064 IP (tos 0x0, ttl 127, id 21172, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa8e1 (correct), 7936:7936(0) ack 6645 win 16302
15:20:22.463420 IP (tos 0x0, ttl  64, id 17956, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xe119), 6645:6655(10) ack 7936 win 330
15:20:22.663614 IP (tos 0x0, ttl 127, id 22084, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa8da (correct), 7936:7936(0) ack 6655 win 16299
15:21:22.473592 IP (tos 0x0, ttl  64, id 17957, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xe10f), 6655:6665(10) ack 7936 win 330
15:21:22.673418 IP (tos 0x0, ttl 127, id 24477, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa8d2 (correct), 7936:7936(0) ack 6665 win 16297

--//可以发现第一次间隔2分钟,以后间隔1分钟. 突然我明白为什么第1次间隔2分钟.通过下面的测试说明问题:

2.继续测试:
# tcpdump -i eth0 host 192.168.98.6 and not port 22 -nn -vv
..
15:29:22.545029 IP (tos 0x0, ttl  64, id 17965, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xe0bf), 6735:6745(10) ack 7936 win 330
15:29:22.748454 IP (tos 0x0, ttl 127, id 32187, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa896 (correct), 7936:7936(0) ack 6745 win 16277
15:30:22.555223 IP (tos 0x0, ttl  64, id 17966, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xe0b5), 6745:6755(10) ack 7936 win 330
15:30:22.758630 IP (tos 0x0, ttl 127, id 328, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa88f (correct), 7936:7936(0) ack 6755 win 16274
--//等待出现监测包出现时client端执行如下:
SCOTT@78> select sysdate from dual ;
SYSDATE
-------------------
2018-01-24 15:30:26
--//下面5个是执行select sysdate from dual ;相关的包.时间也是可以对上的.
15:30:26.372134 IP (tos 0x0, ttl 127, id 388, offset 0, flags [DF], proto: TCP (6), length: 303) 192.168.98.6.52445 > 192.168.100.78.1521: P 7936:8199(263) ack 6755 win 16274
15:30:26.372644 IP (tos 0x0, ttl  64, id 17967, offset 0, flags [DF], proto: TCP (6), length: 308) 192.168.100.78.1521 > 192.168.98.6.52445: P 6755:7023(268) ack 8199 win 330
15:30:26.373110 IP (tos 0x0, ttl 127, id 389, offset 0, flags [DF], proto: TCP (6), length: 61) 192.168.98.6.52445 > 192.168.100.78.1521: P, cksum 0x86be (correct), 8199:8220(21) ack 7023 win 16207
15:30:26.373228 IP (tos 0x0, ttl  64, id 17968, offset 0, flags [DF], proto: TCP (6), length: 142) 192.168.100.78.1521 > 192.168.98.6.52445: P 7023:7125(102) ack 8220 win 330
15:30:26.577899 IP (tos 0x0, ttl 127, id 396, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa65d (correct), 8220:8220(0) ack 7125 win 16182
--//继续等...
15:32:22.575500 IP (tos 0x0, ttl  64, id 17969, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xde1d), 7125:7135(10) ack 8220 win 330
15:32:22.773247 IP (tos 0x0, ttl 127, id 4182, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa656 (correct), 8220:8220(0) ack 7135 win 16179
15:33:22.585665 IP (tos 0x0, ttl  64, id 17970, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xde13), 7135:7145(10) ack 8220 win 330
15:33:22.788446 IP (tos 0x0, ttl 127, id 5189, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0xa64e (correct), 8220:8220(0) ack 7145 win 16177

--//可以看出规律,测试环境是SQLNET.EXPIRE_TIME=1.
--//也就是在15:30:22 - 15:31:22 (1分钟时间内如果client端发起连接,通俗讲执行sql语句),这个1分钟内不会发出从服务器端发监测包.
--//这样到下1分钟(15:31:22 - 15:32:22),如果client没有发起连接,再发出监测包.这样看到的间隔就是接近2分钟.

--//再通俗讲如果在间隔时间内如果有client端发出数据包,服务端的监测包就不会发,这样看到的情况最大间隔就是
--//2 * SQLNET.EXPIRE_TIME.实际上我以前一直以为最大间隙是仅仅出现在开始第1次实际上可以出现任何时间段.

--//自己总算理解为什么SQLNET.EXPIRE_TIME=N,最大间隔是2 * N 分钟.
--//也就是如果网络在没有任何发包的情况下20分钟断开,你必须设置SQLNET.EXPIRE_TIME<=10的原因.

--//再补充例子:
# tcpdump -i eth0 host 192.168.98.6 and not port 22 -nn -vv
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
..


15:50:22.738630 IP (tos 0x0, ttl  64, id 17989, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xd83b), 8025:8035(10) ack 8826 win 330
15:50:22.941540 IP (tos 0x0, ttl 127, id 25143, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0x9fe7 (correct), 8826:8826(0) ack 8035 win 16320

--//在client在2018-01-24 15:51:17执行如下:
SCOTT@78> select sysdate from dual ;
SYSDATE
-------------------
2018-01-24 15:51:17
----

15:51:17.164205 IP (tos 0x0, ttl 127, id 25908, offset 0, flags [DF], proto: TCP (6), length: 322) 192.168.98.6.52445 > 192.168.100.78.1521: P 8826:9108(282) ack 8035 win 16320
15:51:17.164643 IP (tos 0x0, ttl  64, id 17990, offset 0, flags [DF], proto: TCP (6), length: 308) 192.168.100.78.1521 > 192.168.98.6.52445: P 8035:8303(268) ack 9108 win 330
15:51:17.165043 IP (tos 0x0, ttl 127, id 25909, offset 0, flags [DF], proto: TCP (6), length: 61) 192.168.98.6.52445 > 192.168.100.78.1521: P, cksum 0x7503 (correct), 9108:9129(21) ack 8303 win 16253
15:51:17.165165 IP (tos 0x0, ttl  64, id 17991, offset 0, flags [DF], proto: TCP (6), length: 142) 192.168.100.78.1521 > 192.168.98.6.52445: P 8303:8405(102) ack 9129 win 330
15:51:17.368482 IP (tos 0x0, ttl 127, id 25913, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0x9da3 (correct), 9129:9129(0) ack 8405 win 16227
--//等...可以发现15:51:22服务端发出的监测包被忽略..如果到15:52:22时间client没有发包,服务端再次发出监测包.
15:52:22.758917 IP (tos 0x0, ttl  64, id 17992, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xd590), 8405:8415(10) ack 9129 win 330
15:52:22.958995 IP (tos 0x0, ttl 127, id 28030, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0x9d9b (correct), 9129:9129(0) ack 8415 win 16225
15:53:22.759044 IP (tos 0x0, ttl  64, id 17993, offset 0, flags [DF], proto: TCP (6), length: 50) 192.168.100.78.1521 > 192.168.98.6.52445: P, cksum 0x47ca (incorrect (-> 0xd586), 8415:8425(10) ack 9129 win 330
15:53:22.959345 IP (tos 0x0, ttl 127, id 29625, offset 0, flags [DF], proto: TCP (6), length: 40) 192.168.98.6.52445 > 192.168.100.78.1521: ., cksum 0x9d94 (correct), 9129:9129(0) ack 8425 win 16222

--//但是仅仅理解间隔最大2 * SQLNET.EXPIRE_TIME的情况,还是没法解析我前面遇到的问题.....

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2150499/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/267265/viewspace-2150499/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值