[20200218]ENABLE=BROKEN在連線串中.txt

lfree發表於2020-02-18

[20200218]ENABLE=BROKEN在連線串中.txt

--//昨天看https://blog.dbi-services.com/sqlnet-expire_time-and-enablebroken/
--//轉抄:
Those parameters, SQLNET.EXPIRE_TIME in sqlnet.ora and ENABLE=BROKEN in a connection description exist for a long time
but may have changed in behavior. They are both related to detecting dead TCP connections with keep-alive probes. The
former from the server, and the latter from the client.

--//這些引數,SQLNET。sqlnet.or a中的EXIRE_TIME和連線描述中的ENABLE=BROKEN存在很長一段時間但可能在行為上發生了變化。它們
--//都與用保持活的探針檢測死TCP連線有關。前者來自伺服器,後者來自客戶端。

--//我曾經提到,連結:http://blog.itpub.net/267265/viewspace-2662867/=>[20191106]12c DCD SQLNET.EXPIRE_TIME.txt
--//12之前DCD使用TNS包來"ping"客戶端,並且依賴底層TCP堆疊,這有時可能需要更長的時間。現在,在12c中,這種情況已經改變,
--//DCD探針由TCP Stack實現。DCD探測現在將使用TCP KEEPALIVE套接字選項來檢查連線是否仍然可用。

--//我個人認為12c的這種改進更加科學.不會出現11g的情況,如果11g實際上最大間隔是2*EXPIRE_TIME.
--//換一句話講12c自動將sqlnet.ora中的SQLNET.EXPIRE_TIME設定為探測之間的時間量(以分鐘為單位)。

--//我個人從來沒有在連線串中設定ENABLE=BROKEN,我仔細看連結:https://blog.dbi-services.com/sqlnet-expire_time-and-enablebroken/
--//重複對方測試:

1.環境:
在linux下實際上使用如下引數:
$ echo /proc/sys/net/ipv4/tcp_keepalive* | xargs   -n 1  strings -1 -f
/proc/sys/net/ipv4/tcp_keepalive_intvl: 10
/proc/sys/net/ipv4/tcp_keepalive_probes: 4
/proc/sys/net/ipv4/tcp_keepalive_time: 20

$  cat $ORACLE_HOME/network/admin/sqlnet.ora | grep SQLNET.EXPIRE_TIME
# SQLNET.EXPIRE_TIME = 1
--//注意:註解SQLNET.EXPIRE_TIME = 1

2.測試無ENABLE=BROKEN的情況:

$ rlwrap sqlplus  scott/book@"(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=book)(SERVER = DEDICATED))(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))"
--//注意我增加(SERVER = DEDICATED),保證使用DEDICATED模式連線:
SCOTT@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
--//注意我的服務端是11g。

SCOTT@book> @ spid
       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
       296        319 46346                    DEDICATED 46348       21        129 alter system kill session '296,319' immediate;

$ netstat -np  | grep sqlplus
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1417              127.0.0.1:1521              ESTABLISHED 46346/sqlplus

 $ netstat -np  | grep 1417
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1417              127.0.0.1:1521              ESTABLISHED 46346/sqlplus
tcp        0      0 127.0.0.1:1521              127.0.0.1:1417              ESTABLISHED 46348/oraclebook

# tcpdump -vvnni lo port 1417
tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
09:19:47.120266 IP (tos 0x0, ttl  64, id 35513, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0x843e), 3700102688:3700102688(0) ack 1995699216 win 385 <nop,nop,timestamp 604555264 604535232>
09:19:47.120432 IP (tos 0x0, ttl  64, id 43674, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1417 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x20dd), 1:1(0) ack 1 win 385 <nop,nop,timestamp 604555264 604495137>

SCOTT@book> set time on escape on
09:20:09 SCOTT@book>

# tcpdump -vvnni lo port 1417
tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
--//不執行任何命令等觀察:
09:19:47.120266 IP (tos 0x0, ttl  64, id 35513, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0x843e), 3700102688:3700102688(0) ack 1995699216 win 385 <nop,nop,timestamp 604555264 604535232>
09:19:47.120432 IP (tos 0x0, ttl  64, id 43674, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1417 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x20dd), 1:1(0) ack 1 win 385 <nop,nop,timestamp 604555264 604495137>
~~~~~~~~~~~~~~~
09:20:07.152745 IP (tos 0x0, ttl  64, id 35514, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0xe7bd), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604575296 604555264>
09:20:07.152765 IP (tos 0x0, ttl  64, id 43675, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1417 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0xd29c), 1:1(0) ack 1 win 385 <nop,nop,timestamp 604575296 604495137>
~~~~~~~~~~~~~~~~
09:20:27.185370 IP (tos 0x0, ttl  64, id 35515, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0x4b3c), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604595329 604575296>
09:20:27.185388 IP (tos 0x0, ttl  64, id 43676, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1417 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x845b), 1:1(0) ack 1 win 385 <nop,nop,timestamp 604595329 604495137>
09:20:47.217453 IP (tos 0x0, ttl  64, id 35516, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0xaeba), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604615361 604595329>
09:20:47.217471 IP (tos 0x0, ttl  64, id 43677, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1417 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x361b), 1:1(0) ack 1 win 385 <nop,nop,timestamp 604615361 604495137>
09:21:07.248171 IP (tos 0x0, ttl  64, id 35517, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0x123b), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604635392 604615361>
09:21:07.248193 IP (tos 0x0, ttl  64, id 43678, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1417 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0xe7db), 1:1(0) ack 1 win 385 <nop,nop,timestamp 604635392 604495137>
--//間隔20秒傳送探測包,檢查網路是否正常,從服務段發起。與核心引數/proc/sys/net/ipv4/tcp_keepalive_time: 20有關。
--//注意看下劃線之間內容,從服務端發起,客戶端接收。

# tcpdump -vvnni lo port 1417
...
09:24:07.536211 IP (tos 0x0, ttl  64, id 35526, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0x91b6), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604815680 604795648>
09:24:07.536232 IP (tos 0x0, ttl  64, id 43687, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1417 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x2799), 1:1(0) ack 1 win 385 <nop,nop,timestamp 604815680 604495137>
09:24:27.568219 IP (tos 0x0, ttl  64, id 35527, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0xf535), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604835712 604815680>
09:24:27.568238 IP (tos 0x0, ttl  64, id 43688, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1417 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0xd958), 1:1(0) ack 1 win 385 <nop,nop,timestamp 604835712 604495137>
--//這裡設定防火牆規則,阻塞服務端到client的連線。
# iptables -I INPUT 1 -p tcp --dport 1417 -j DROP
09:24:47.600219 IP (tos 0x0, ttl  64, id 35528, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0x58b5), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604855744 604835712>
09:24:57.616220 IP (tos 0x0, ttl  64, id 35529, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0x3195), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604865760 604835712>
09:25:07.632221 IP (tos 0x0, ttl  64, id 35530, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0x0a75), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604875776 604835712>
09:25:17.648218 IP (tos 0x0, ttl  64, id 35531, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: ., cksum 0xfe28 (incorrect (-> 0xe354), 0:0(0) ack 1 win 385 <nop,nop,timestamp 604885792 604835712>
09:25:27.664230 IP (tos 0x0, ttl  64, id 35532, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xfe28 (incorrect (-> 0xbc2f), 1:1(0) ack 1 win 385 <nop,nop,timestamp 604895808 604835712>
--//間隔變成了10秒,傳送探測包,探測4次。因為這時網路已經不通。
$ echo /proc/sys/net/ipv4/tcp_keepalive* | xargs   -n 1  strings -1 -f
/proc/sys/net/ipv4/tcp_keepalive_intvl: 10
/proc/sys/net/ipv4/tcp_keepalive_probes: 4
/proc/sys/net/ipv4/tcp_keepalive_time: 20

$ netstat -npo  | grep 1417
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1417              127.0.0.1:1521              ESTABLISHED 46346/sqlplus       off (0.00/0/0)
--//你可以發現現在服務端程式已經消失
$ ps -ef | grep 4634[8]

--//如果這時client有命令執行,看看發生什麼情況呢?

09:20:09 SCOTT@book> select sysdate from dual
09:31:29   2  ;

# tcpdump -vvnni lo port 1417
...
09:31:30.969789 IP (tos 0x0, ttl  64, id 43689, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605259113 604495137>
09:31:30.969818 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:31:31.171207 IP (tos 0x0, ttl  64, id 43690, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605259315 604495137>
09:31:31.171235 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:31:31.576202 IP (tos 0x0, ttl  64, id 43691, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605259720 604495137>
09:31:31.576229 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:31:32.386179 IP (tos 0x0, ttl  64, id 43692, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605260530 604495137>
09:31:32.386206 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:31:34.008203 IP (tos 0x0, ttl  64, id 43693, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605262152 604495137>
09:31:34.008252 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:31:37.248243 IP (tos 0x0, ttl  64, id 43694, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605265392 604495137>
09:31:37.248272 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:31:43.728164 IP (tos 0x0, ttl  64, id 43695, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605271872 604495137>
09:31:43.728189 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:31:56.688182 IP (tos 0x0, ttl  64, id 43696, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605284832 604495137>
09:31:56.688210 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:32:22.576293 IP (tos 0x0, ttl  64, id 43697, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605310720 604495137>
09:32:22.576326 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:33:14.416169 IP (tos 0x0, ttl  64, id 43698, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605362560 604495137>
09:33:14.416218 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:34:57.968188 IP (tos 0x0, ttl  64, id 43699, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605466112 604495137>
09:34:57.968221 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:36:58.288221 IP (tos 0x0, ttl  64, id 43700, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605586432 604495137>
09:36:58.288256 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:38:58.608216 IP (tos 0x0, ttl  64, id 43701, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605706752 604495137>
09:38:58.608250 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:40:58.928247 IP (tos 0x0, ttl  64, id 43702, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605827072 604495137>
09:40:58.928302 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:42:59.248255 IP (tos 0x0, ttl  64, id 43703, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 605947392 604495137>
09:42:59.248290 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
09:44:59.568184 IP (tos 0x0, ttl  64, id 43704, offset 0, flags [DF], proto: TCP (6), length: 358) 127.0.0.1.1417 > 127.0.0.1.1521: P 1:307(306) ack 1 win 385 <nop,nop,timestamp 606067712 604495137>
09:44:59.568217 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) 127.0.0.1.1521 > 127.0.0.1.1417: R, cksum 0xb3b7 (correct), 3700102689:3700102689(0) win 0
--//16次。(44-31)*60+59-30 = 809秒。另外可以注意時間間隔會越來越大。最後1次120秒。

$ netstat -npo  | grep 1417
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0    306 127.0.0.1:1417              127.0.0.1:1521              ESTABLISHED 46346/sqlplus       on (37.99/8/0)

$ netstat -npo  | grep 1417
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0    306 127.0.0.1:1417              127.0.0.1:1521              ESTABLISHED 46346/sqlplus       on (22.63/8/0)

$ netstat -npo  | grep 1417
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0    306 127.0.0.1:1417              127.0.0.1:1521              ESTABLISHED 46346/sqlplus       on (20.36/9/0)

$ netstat -npo  | grep 1417
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0    306 127.0.0.1:1417              127.0.0.1:1521              ESTABLISHED 46346/sqlplus       on (11.55/10/0)

$ netstat -npo  | grep 1417
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0    306 127.0.0.1:1417              127.0.0.1:1521              ESTABLISHED 46346/sqlplus       on (78.83/14/0)

$ netstat -npo  | grep 1417
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)

--//on後面的數字(第1個表示探測的時間間隔,如果不斷執行可以發現不斷減少,第2個表示探測次數)
--//我在連結http://blog.itpub.net/267265/viewspace-2150555/有描述這個現象。大約需要927秒,客戶段報錯。

09:20:09 SCOTT@book> select sysdate from dual
09:31:29   2  ;
select sysdate from dual
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 46348
Session ID: 296 Serial number: 319
09:46:59 SCOTT@book>

--//提示時間是09:46:59,前面少算120秒,809+120 = 929,基本與我前面測試927秒接近。
--//(46-31)*60+59-29 = 930.

09:46:59 SCOTT@book> select sysdate from dual ;
ERROR:
ORA-03114: not connected to ORACLE

--//連線已經斷開。

3.測試ENABLE=BROKEN的情況:
# iptables -D INPUT  1
rlwrap sqlplus  scott/book@"(DESCRIPTION=(ENABLE=BROKEN)(CONNECT_DATA=(SERVICE_NAME=book)(SERVER = DEDICATED))(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))"

SCOTT@book> @ spid
       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
        58        585 46995                    DEDICATED 46997       28        245 alter system kill session '58,585' immediate;

$ netstat -np  | grep sqlplus
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus

$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus       keepalive (9.48/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:2560              ESTABLISHED 46997/oraclebook    keepalive (9.51/0/0)

# tcpdump -vvnni lo port 2560
tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes

SCOTT@book> set time on escape on
10:55:03 SCOTT@book>

# tcpdump -vvnni lo port 2560
tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
10:54:54.992573 IP (tos 0x0, ttl  64, id 63732, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x3a5f), 2007468150:2007468150(0) ack 4186535938 win 385 <nop,nop,timestamp 610263136 610243104>
10:54:54.992575 IP (tos 0x0, ttl  64, id 52212, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x3a3e), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610263136 610243136>
10:54:55.024174 IP (tos 0x0, ttl  64, id 52213, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x3a1f), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610263168 610243136>
10:54:55.024193 IP (tos 0x0, ttl  64, id 63733, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0xebfd), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610263168 610263136>
~~~~~~~~~~~~~~~~~~~~~~~~~~
10:55:15.024332 IP (tos 0x0, ttl  64, id 63734, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x9dde), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610283168 610263136>
10:55:15.024368 IP (tos 0x0, ttl  64, id 52214, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x9dbd), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610283168 610263168>
10:55:15.056201 IP (tos 0x0, ttl  64, id 52215, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x9d9e), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610283200 610263168>
10:55:15.056219 IP (tos 0x0, ttl  64, id 63735, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x4f7d), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610283200 610283168>
~~~~~~~~~~~~~~~~~~~~~~~~~~
10:55:35.056497 IP (tos 0x0, ttl  64, id 63736, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x015e), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610303200 610283168>
10:55:35.056572 IP (tos 0x0, ttl  64, id 52216, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x013d), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610303200 610283200>
10:55:35.088172 IP (tos 0x0, ttl  64, id 52217, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x011e), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610303232 610283200>
10:55:35.088192 IP (tos 0x0, ttl  64, id 63737, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0xb2fc), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610303232 610303200>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10:55:55.088507 IP (tos 0x0, ttl  64, id 63738, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x64dd), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610323232 610303200>
10:55:55.088582 IP (tos 0x0, ttl  64, id 52218, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x64bc), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610323232 610303232>
10:55:55.120174 IP (tos 0x0, ttl  64, id 52219, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x649d), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610323264 610303232>
10:55:55.120193 IP (tos 0x0, ttl  64, id 63739, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x167c), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610323264 610323232>
--//間隔20秒。如果你仔細看相同時間的有4個包,看下劃線部分。1組是客戶端發起,1組是服務端發起,。講的通俗一點就是雙向檢查。

# iptables -I INPUT 1 -p tcp --dport 2560 -j DROP
...
10:56:15.120166 IP (tos 0x0, ttl  64, id 63740, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0xc85c), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610343264 610323232>
10:56:15.120293 IP (tos 0x0, ttl  64, id 52220, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0xc83b), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610343264 610323264>
10:56:15.152207 IP (tos 0x0, ttl  64, id 52221, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0xc81c), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610343296 610323264>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10:56:25.136167 IP (tos 0x0, ttl  64, id 63741, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0xa13c), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610353280 610323232>
10:56:25.136256 IP (tos 0x0, ttl  64, id 52222, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0xa11b), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610353280 610323264>
10:56:25.168204 IP (tos 0x0, ttl  64, id 52223, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0xa0fc), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610353312 610323264>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--//注意看下劃線之間內容,第3個包沒有回來的包(iptables已經drop了)。
10:56:35.152178 IP (tos 0x0, ttl  64, id 63742, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x7a1c), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610363296 610323232>
10:56:35.152268 IP (tos 0x0, ttl  64, id 52224, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x79fb), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610363296 610323264>
10:56:35.184215 IP (tos 0x0, ttl  64, id 52225, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x79dc), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610363328 610323264>
10:56:45.168173 IP (tos 0x0, ttl  64, id 63743, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: ., cksum 0xfe28 (incorrect (-> 0x52fc), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610373312 610323232>
10:56:45.168261 IP (tos 0x0, ttl  64, id 52226, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x52db), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610373312 610323264>
10:56:45.200215 IP (tos 0x0, ttl  64, id 52227, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.1521 > 127.0.0.1.2560: ., cksum 0xfe28 (incorrect (-> 0x52bc), 0:0(0) ack 1 win 385 <nop,nop,timestamp 610373344 610323264>
10:56:55.184173 IP (tos 0x0, ttl  64, id 63744, offset 0, flags [DF], proto: TCP (6), length: 52) 127.0.0.1.2560 > 127.0.0.1.1521: R, cksum 0xfe28 (incorrect (-> 0x2bd7), 1:1(0) ack 1 win 385 <nop,nop,timestamp 610383328 610323232>
~~~~~~~~~~~~~~
--//看到的是客戶端,伺服器的包。
--//也就是這樣僅僅40秒,探測4次,網路已經斷開。

$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1521              127.0.0.1:2560              ESTABLISHED 46997/oraclebook    keepalive (7.69/0/1)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus       keepalive (7.66/0/1)
$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1521              127.0.0.1:2560              ESTABLISHED 46997/oraclebook    keepalive (6.99/0/1)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus       keepalive (6.95/0/1)
$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1521              127.0.0.1:2560              ESTABLISHED 46997/oraclebook    keepalive (1.45/0/3)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus       keepalive (1.42/0/3)
$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1521              127.0.0.1:2560              ESTABLISHED 46997/oraclebook    keepalive (0.83/0/3)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus       keepalive (0.80/0/3)
$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1521              127.0.0.1:2560              ESTABLISHED 46997/oraclebook    keepalive (0.16/0/3)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus       keepalive (0.12/0/3)
..
$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1521              127.0.0.1:2560              ESTABLISHED 46997/oraclebook    keepalive (2.32/0/4)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus       keepalive (2.28/0/4)
$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1521              127.0.0.1:2560              ESTABLISHED 46997/oraclebook    keepalive (1.60/0/4)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus       keepalive (1.56/0/4)
$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:1521              127.0.0.1:2560              ESTABLISHED 46997/oraclebook    keepalive (0.93/0/4)
tcp        0      0 127.0.0.1:2560              127.0.0.1:1521              ESTABLISHED 46995/sqlplus       keepalive (0.89/0/4)

[oracle@gxqyydg4 IP=100.78 ~/hrp430/testx ] $ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
--//第3個引數4。

$ netstat -npo  | grep 2560
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
--//連線已經斷開。

10:55:03 SCOTT@book> select sysdate from dual ;
select sysdate from dual
*
ERROR at line 1:
ORA-03135: connection lost contact
Process ID: 46997
Session ID: 58 Serial number: 585
--//直接斷開。

總結:
--//https://blog.dbi-services.com/sqlnet-expire_time-and-enablebroken/
In summary:

On the server, the keep-alive is always enabled and SQLNET.EXPIRE_TIME is used to reduce the tcp_keepalive_time    defined
by the system, because it is probably too long.

--//在伺服器上,始終啟用keep-alive和SQLNET.EXPIRE_TIME是用來減少tcp_keepalive_time定義的透過這個系統,因為它可能太長了。

On the client, the keep-alive is enabled only when (ENABLE=BROKEN) is in the connection description, and uses the
tcp_keepalive_time from the system. Without it, the broken connection will be detected only when attempting a user call.

--//在客戶端上,只有在連線描述中(ENABLE=BROKEN)並使用來自系統的tcp_keepalive_time。沒有它,只有在嘗試使用者呼叫時才會檢測
--//到中斷的連線。

Setting SQLNET.EXPIRE_TIME to a few minutes (like 10) is a good idea because you don't want to keep resources and locks
on the server when a simple ping can ensure that the connection is lost and we have to rollback. If we don't, then the
dead connections may disappear only after 2 hours and 12 minutes (the idle time + the probes). On the client-side, it is
also a good idea to add (ENABLE=BROKEN) so that idle sessions that have lost contact have a chance to know it before
trying to use them. This is a performance gain if it helps to avoid sending a "select 1 from dual" each time you grab a
connection from the pool

--//設定SQLNET.EXPIRE_TIME。把時間設定到幾分鐘(比如10分鐘)是個好主意,因為你不想保留資源和鎖在伺服器上,當一個簡單的ping
--//可以確保連線丟失時,我們必須回滾。如果我們沒有,那麼只有在2小時12分鐘後(探針的空閒時間),死連線才可能消失。在客戶端
--//,它是還有一個好主意是新增(Enable=Broken),這樣那些失去聯絡的空閒會話就有機會在之前瞭解它試圖使用它們。這是一個效能
--//增益,如果它有助於避免傳送一個"select 1 from dual",每次你抓住一個從連線池.

And, most important: the documentation is imprecise, which means that the behavior can change without notification. This
is a test on specific OS, specific driver, specific version,… Do not take the results from this post, but now you know
how to check in your environment.

--//而且,最重要的是:文件是不精確的,這意味著行為可以在沒有通知的情況下改變。這個是對特定作業系統、特定驅動程式、特定版
--//本的測試,...不要接受這篇文章的結果,但現在你知道了如何檢查你的環境。

--//換一句話設定SQLNET.EXPIRE_TIME 和在連線串中加入(Enable=Broken),是一個不錯的方法。
--//寫的有點亂。許多概念不是很清楚,不知道別人能看懂嗎?^_^ 。

--//補充測試:

--//如果沒有(ENABLE=BROKEN).
$ seq 100 | xargs -IQ bash -c "netstat -npo 2>/dev/null | grep 6162| egrep 'oraclebook|sqlplus' ;sleep 1"
tcp        0      0 127.0.0.1:6162              127.0.0.1:1521              ESTABLISHED 49543/sqlplus       off (0.00/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6162              ESTABLISHED 49545/oraclebook    keepalive (8.11/0/0)
tcp        0      0 127.0.0.1:6162              127.0.0.1:1521              ESTABLISHED 49543/sqlplus       off (0.00/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6162              ESTABLISHED 49545/oraclebook    keepalive (7.08/0/0)
tcp        0      0 127.0.0.1:6162              127.0.0.1:1521              ESTABLISHED 49543/sqlplus       off (0.00/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6162              ESTABLISHED 49545/oraclebook    keepalive (6.06/0/0)
tcp        0      0 127.0.0.1:6162              127.0.0.1:1521              ESTABLISHED 49543/sqlplus       off (0.00/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6162              ESTABLISHED 49545/oraclebook    keepalive (5.04/0/0)
tcp        0      0 127.0.0.1:6162              127.0.0.1:1521              ESTABLISHED 49543/sqlplus       off (0.00/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6162              ESTABLISHED 49545/oraclebook    keepalive (4.02/0/0)
tcp        0      0 127.0.0.1:6162              127.0.0.1:1521              ESTABLISHED 49543/sqlplus       off (0.00/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6162              ESTABLISHED 49545/oraclebook    keepalive (2.99/0/0)
^C
--//主意看最後一列。sqlplus那行 顯示的是off。
--//如果設定(ENABLE=BROKEN).
$ seq 100 | xargs -IQ bash -c "netstat -npo 2>/dev/null | grep 6079| egrep 'oraclebook|sqlplus' ;sleep 1"
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (3.29/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (3.35/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (2.27/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (2.33/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (1.24/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (1.31/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (0.22/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (0.29/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (9.21/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (9.28/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (8.19/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (8.26/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (7.17/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (7.23/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (6.15/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (6.21/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (5.13/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (5.19/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (4.10/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (4.17/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (3.08/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (3.14/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (2.06/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (2.12/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (1.04/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (1.10/0/0)
tcp        0      0 127.0.0.1:6079              127.0.0.1:1521              ESTABLISHED 48858/sqlplus       keepalive (0.01/0/0)
tcp        0      0 127.0.0.1:1521              127.0.0.1:6079              ESTABLISHED 48860/oraclebook    keepalive (0.08/0/0)
^C

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2676076/,如需轉載,請註明出處,否則將追究法律責任。

相關文章