[20260311]sqlnet.ora设置sqlnet.expire_time与tcp_keepalive_time关系.txt
--//以前对netstat的输出不理解,为什么里面显示keepalive达不到设置的时间,总被分成2部分。
--//今天无意中的观察,明白其中的奥秘,希望这次能讲解清楚。
--//一般设置的方法有2种:
--//方法1.修改/etc/sysctl.conf:
# grep "^net.ipv4.tcp" /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time =100
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 4
--//方法2.修改$ORACLE_HOME/network/admin/sqlnet.ora:
sqlnet.expire_time=N
--//N单位是分钟,注意实际上发包间隔2*N.在以前一些文章有论述.
--//另外一点12cR2开始,设置sqlnet.expire_time实际上开始TCP KEEPALIVE套接字选项来检查连接是否仍然可用。
--//2*N的时间间隔不再有效,变成N时间间隔.
--//换一句话讲12cR2以后的版本,设置sqlnet.expire_time=N与方法1类似。
--//通过测试说明问题:
1.环境:
SCOTT@book01p> @ ver2
==============================
PORT_STRING : x86_64/Linux 2.4.xx
VERSION : 21.0.0.0.0
BANNER : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID : 0
PL/SQL procedure successfully completed.
$ egrep -v "^#|^$" /u01/app/oracle/homes/OraDB21Home1/network/admin/sqlnet.ora
DEFAULT_SDU_SIZE = 1048576
ADR_BASE = /u01/app/oracle
SQLNET.EXPIRE_TIME=1
# cat $(which ts.awk)
# /bin/bash
gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }'
2.测试:
--//打开新终端,以root用户登录:
--//建立使用tmux,分成2个pane显示,这样观察更加直接一下。
# seq 1000 | xargs -IQ bash -c "netstat -tnpo | egrep oraclebook | ts.awk;sleep 1"
--//注我测试环境很好控制,当前没有输出。
--//打开新终端,以oracle用户登录:
$ rlsql scott/book@book01p
SQL*Plus: Release 21.0.0.0.0 - Production on Thu Mar 12 08:47:44 2026
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Last Successful login time: Thu Mar 12 2026 08:46:42 +08:00
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
--//执行完成不输入任何sql语句命令,查看前面执行的输出。
# seq 4000 | xargs -IQ bash -c "netstat -tnpo | egrep oraclebook | ts.awk;sleep 1"
[2026-03-12 08:47:45] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (59.35/0/0)
[2026-03-12 08:47:46] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (58.33/0/0)
[2026-03-12 08:47:47] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (57.31/0/0)
[2026-03-12 08:47:48] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (56.29/0/0)
[2026-03-12 08:47:49] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (55.27/0/0)
[2026-03-12 08:47:50] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (54.24/0/0)
[2026-03-12 08:47:51] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (53.22/0/0)
[2026-03-12 08:47:52] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (52.19/0/0)
[2026-03-12 08:47:53] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (51.17/0/0)
[2026-03-12 08:47:54] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (50.15/0/0)
[2026-03-12 08:47:55] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (49.13/0/0)
[2026-03-12 08:47:56] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (48.11/0/0)
[2026-03-12 08:47:57] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (47.08/0/0)
....
[2026-03-12 08:48:42] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (2.00/0/0)
[2026-03-12 08:48:44] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (0.99/0/0)
[2026-03-12 08:48:45] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (0.06/0/0)
[2026-03-12 08:48:46] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (5.04/0/0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-12 08:48:47] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (4.02/0/0)
[2026-03-12 08:48:48] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (3.01/0/0)
[2026-03-12 08:48:49] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (2.00/0/0)
[2026-03-12 08:48:50] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (0.97/0/0)
[2026-03-12 08:48:51] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (53.96/0/0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-12 08:48:52] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (52.94/0/0)
[2026-03-12 08:48:53] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (51.90/0/0)
[2026-03-12 08:48:54] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (50.89/0/0)
[2026-03-12 08:48:55] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (49.86/0/0)
[2026-03-12 08:48:56] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (48.84/0/0)
[2026-03-12 08:48:57] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (47.82/0/0)
--//开始keepalive=60,然后开始递减。接着分成2部分。并不是从60开始,分别6秒,54秒2部分。
--//如果不输入任何sql语句执行,循环往复下去。
SCOTT@book01p> select sysdate from dual ;
SYSDATE
-------------------
2026-03-12 08:53:09
--//执行语句时间是2026-03-12 08:53:09.然后不输入任何sql语句执行.
[2026-03-12 08:53:08] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (37.75/0/0)
[2026-03-12 08:53:09] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (36.73/0/0)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[2026-03-12 08:53:10] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (35.71/0/0)
[2026-03-12 08:53:11] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (34.69/0/0)
[2026-03-12 08:53:12] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (33.68/0/0)
[2026-03-12 08:53:13] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (32.64/0/0)
[2026-03-12 08:53:14] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (31.61/0/0)
....
[2026-03-12 08:53:43] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (2.86/0/0)
[2026-03-12 08:53:44] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (1.84/0/0)
[2026-03-12 08:53:45] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (0.82/0/0)
[2026-03-12 08:53:46] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (22.82/0/0)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[2026-03-12 08:53:47] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (21.80/0/0)
[2026-03-12 08:53:48] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (20.78/0/0)
[2026-03-12 08:53:49] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (19.76/0/0)
.......
--//下次keepalive从60-36.73 = 23.27开始递减。
--//接着分成2部分。并不是从60开始,分别6秒,54秒2部分。
[2026-03-12 08:57:09] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (6.00/0/0)
[2026-03-12 08:57:10] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (4.97/0/0)
[2026-03-12 08:57:11] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (3.96/0/0)
[2026-03-12 08:57:12] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (2.94/0/0)
[2026-03-12 08:57:13] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (1.90/0/0)
[2026-03-12 08:57:14] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (0.88/0/0)
[2026-03-12 08:57:15] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (54.01/0/0)
[2026-03-12 08:57:16] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (53.00/0/0)
[2026-03-12 08:57:17] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (51.99/0/0)
[2026-03-12 08:57:18] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (50.96/0/0)
--//如果在6秒那个时间段执行,下一个54秒的循环,就是相加。
SCOTT@book01p> select sysdate from dual ;
SYSDATE
-------------------
2026-03-12 09:01:32
[2026-03-12 09:01:31] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (3.87/0/0)
[2026-03-12 09:01:32] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (2.85/0/0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-12 09:01:33] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (1.84/0/0)
[2026-03-12 09:01:34] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (0.83/0/0)
[2026-03-12 09:01:35] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (56.96/0/0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-12 09:01:36] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (55.93/0/0)
[2026-03-12 09:01:37] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (54.91/0/0)
[2026-03-12 09:01:39] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (53.89/0/0)
[2026-03-12 09:01:40] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (52.88/0/0)
[2026-03-12 09:01:41] tcp 0 0 127.0.0.1:1521 127.0.0.1:25022 ESTABLISHED 8921/oraclebook keepalive (51.86/0/0)
--//下次keepalive从 6-2.85+54 = 57.15开始递减。
--// 60-2.85 = 57.15
--//如果设置SQLNET.EXPIRE_TIME=2,昨天做的测试。
[2026-03-11 17:24:00] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (0.56/0/0)
[2026-03-11 17:24:01] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (5.55/0/0)
[2026-03-11 17:24:02] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (4.52/0/0)
[2026-03-11 17:24:03] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (3.50/0/0)
[2026-03-11 17:24:04] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (2.47/0/0)
[2026-03-11 17:24:05] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (1.45/0/0)
[2026-03-11 17:24:06] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (0.42/0/0)
[2026-03-11 17:24:07] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (113.69/0/0)
[2026-03-11 17:24:08] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (112.66/0/0)
[2026-03-11 17:24:09] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (111.63/0/0)
[2026-03-11 17:24:10] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (110.61/0/0)
[2026-03-11 17:24:11] tcp 0 0 127.0.0.1:1521 127.0.0.1:47947 ESTABLISHED 14034/oraclebook keepalive (109.58/0/0)
--//keepalive的显示总是被拆分为6,剩下部分。
--//设置SQLNET.EXPIRE_TIME=3类似:
[2026-03-11 17:37:56] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (3.08/0/0)
[2026-03-11 17:37:57] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (2.02/0/0)
[2026-03-11 17:37:58] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (0.99/0/0)
[2026-03-11 17:37:59] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (5.98/0/0)
[2026-03-11 17:38:00] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (4.94/0/0)
[2026-03-11 17:38:01] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (3.90/0/0)
[2026-03-11 17:38:02] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (2.87/0/0)
[2026-03-11 17:38:03] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (1.85/0/0)
[2026-03-11 17:38:04] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (0.83/0/0)
[2026-03-11 17:38:05] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (174.01/0/0)
[2026-03-11 17:38:06] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (172.99/0/0)
[2026-03-11 17:38:07] tcp 0 0 127.0.0.1:1521 127.0.0.1:47949 ESTABLISHED 15664/oraclebook keepalive (171.96/0/0)
--//tcp_keepalive_time为什么这样设计呢?
$ strace -f -o xxx.txt sqlplus scott/book@book01p
quit
$ grep -i TCP_KEEP xxx.txt
14243 setsockopt(9, SOL_TCP, TCP_KEEPIDLE, [60], 4) = 0
14243 setsockopt(9, SOL_TCP, TCP_KEEPINTVL, [6], 4) = 0
14243 setsockopt(9, SOL_TCP, TCP_KEEPCNT, [10], 4) = 0
--//设置TCP_KEEPIDLE=60,TCP_KEEPINTVL=6,TCP_KEEPCNT=10,我以前的理解是在前面探测60秒网络不通的情况下,探测6秒,如此探测
--//10次,不通网络断开。也就是后面2个参数仅仅在网络存在问题时有效。
# cat /etc/sysctl.d/99-sysctl.conf
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 3
--//修改以上参数。注解sqlnet.ora的SQLNET.EXPIRE_TIME=1
# sysctl -p /etc/sysctl.d/99-sysctl.conf
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 3
--//重新测试:
# seq 4000 | xargs -IQ bash -c "netstat -tnpo | egrep oraclebook | ts.awk;sleep 1"
[2026-03-12 09:31:34] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (59.51/0/0)
[2026-03-12 09:31:35] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (58.48/0/0)
[2026-03-12 09:31:36] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (57.46/0/0)
[2026-03-12 09:31:37] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (56.44/0/0)
[2026-03-12 09:31:38] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (55.41/0/0)
[2026-03-12 09:31:39] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (54.37/0/0)
[2026-03-12 09:31:40] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (53.35/0/0)
[2026-03-12 09:31:41] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (52.32/0/0)
[2026-03-12 09:31:42] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (51.31/0/0)
...
[2026-03-12 09:32:26] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (8.06/0/0)
[2026-03-12 09:32:27] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (7.05/0/0)
[2026-03-12 09:32:28] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (6.03/0/0)
[2026-03-12 09:32:29] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (5.02/0/0)
[2026-03-12 09:32:30] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (3.99/0/0)
[2026-03-12 09:32:31] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (2.98/0/0)
[2026-03-12 09:32:32] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (1.95/0/0)
[2026-03-12 09:32:33] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (0.93/0/0)
[2026-03-12 09:32:34] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (10.00/0/0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-12 09:32:35] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (8.99/0/0)
[2026-03-12 09:32:36] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (7.97/0/0)
[2026-03-12 09:32:37] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (6.96/0/0)
[2026-03-12 09:32:38] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (5.95/0/0)
[2026-03-12 09:32:39] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (4.91/0/0)
[2026-03-12 09:32:40] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (3.88/0/0)
[2026-03-12 09:32:41] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (2.87/0/0)
[2026-03-12 09:32:42] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (1.84/0/0)
[2026-03-12 09:32:43] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (0.82/0/0)
[2026-03-12 09:32:44] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (49.91/0/0)
`````````````````````````````````````````````````````````````````
[2026-03-12 09:32:45] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (48.89/0/0)
[2026-03-12 09:32:46] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (47.88/0/0)
--//确实如此,看来我以前的理解存在小小的问题。
--//以后正常的情况下反复循环。
[2026-03-12 09:45:24] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (1.14/0/0)
[2026-03-12 09:45:25] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (0.13/0/0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[2026-03-12 09:45:26] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (9.15/0/0)
[2026-03-12 09:45:27] tcp 0 0 127.0.0.1:1521 127.0.0.1:25028 ESTABLISHED 14806/oraclebook keepalive (8.13/0/0)
--//在这个时刻发送探测包。
# tcpdump -i lo port 1521 -nnn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
09:44:25.807086 IP 127.0.0.1.1521 > 127.0.0.1.25028: Flags [.], ack 1383766704, win 1595, options [nop,nop,TS val 4462342 ecr 4402186], length 0
09:44:25.807096 IP 127.0.0.1.25028 > 127.0.0.1.1521: Flags [.], ack 1, win 1764, options [nop,nop,TS val 4462342 ecr 4342010], length 0
09:45:25.983979 IP 127.0.0.1.1521 > 127.0.0.1.25028: Flags [.], ack 1, win 1595, options [nop,nop,TS val 4522519 ecr 4462342], length 0
09:45:25.983991 IP 127.0.0.1.25028 > 127.0.0.1.1521: Flags [.], ack 1, win 1764, options [nop,nop,TS val 4522519 ecr 4342010], length 0
--//时间间隔60秒。