[20141219]關於sqlnet.expire_time.txt
[20141219]關於sqlnet.expire_time.txt
***********************************************************************
Fatal NI connect error 12537, connecting to:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.xxx.xxx)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xxxx.com)(CID=(PROGRAM=oracle)(HOST=xxx)(USER=oracle11g))))
VERSION INFORMATION:
TNS for Linux: Version 11.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
Time: 18-APR-2014 11:05:46
Tracing not turned on.
Tns error struct:
ns main err code: 12537
TNS-12537: TNS:connection closed
ns secondary err code: 12560
nt main err code: 507
TNS-00507: Connection closed
nt secondary err code: 0
nt OS err code: 0
--如果應該經常出現這樣的錯誤,主要問題可能出現在內網的防火牆設定,如果應用保持連線而長時間沒有操作,一些網路裝置就會斷開連線,
--解決方法就是透過設定服務端的sqlnet.ora檔案的sqlnet.expire_time引數,來主動向客戶端傳送檢測請求,如果客戶端還活著,則不做操
--作,如果檢測發現客戶端的連線已經不存在或沒有反映,則回收這個session的資源。這樣,如果DCD的檢測時間小於防火牆設定的空閒連線
--最大存活時間,那麼由於DCD檢測客戶端存活性需要從服務端傳送一個空包到客戶端,防火牆就會重新計算這個連線的空閒時間,就不
--會中斷這個會話了。設定DCD需要在服務端的sqlnet.ora檔案中新增以下資訊:
sqlnet.expire_time = 5
這個值的單位是分鐘,這裡設定的是每五分鐘服務端會向已連線資料庫的session所在的客戶端傳送一個空包,來檢測客戶端的存活性,
如果防火牆限制的空閒連線時間大於5分鐘,那麼連線到資料庫的會話就不會因為大於5分鐘的空閒時間而被中斷。這種方案完全可以解決
這個問題,但這種方法需要重新註冊監聽。
--簡單做一個測試:
1.修改 sqlnet.ora檔案,加入:
SQLNET.EXPIRE_TIME=1
重啟監聽。
2.遠端開啟連線資料庫,不做任何操作。
3.在服務端執行如下命令:
# tcpdump -i eth0 -nnn host 192.168.xxx.xxx and port 1521
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
11:13:11.436128 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 2119621137:2119621147(10) ack 2682317414 win 16060
11:13:11.636552 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 10 win 63492
11:14:11.437488 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 10:20(10) ack 1 win 16060
11:14:11.637790 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 20 win 63482
11:15:11.437914 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 20:30(10) ack 1 win 16060
11:15:11.637900 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 30 win 63472
11:16:11.438691 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 30:40(10) ack 1 win 16060
11:16:11.637143 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 40 win 63462
11:17:11.439824 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 40:50(10) ack 1 win 16060
11:17:11.639376 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 50 win 63452
11:18:11.441028 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 50:60(10) ack 1 win 16060
11:18:11.640484 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 60 win 63442
11:19:11.441949 IP 192.168.yyy.yyy.1521 > 192.168.xxx.xxx.64247: P 60:70(10) ack 1 win 16060
11:19:11.641719 IP 192.168.xxx.xxx.64247 > 192.168.yyy.yyy.1521: . ack 70 win 63432
--可以看到每隔1分鐘,服務端向客戶端發起連線,檢測客戶端是否存在。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1373080/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20141219]result cache與view.txtView
- 關於IT,關於技術
- 關於~
- 關於
- [20191106]12c DCD SQLNET.EXPIRE_TIME.txtSQL
- 關於RedisRedis
- 關於REMREM
- 關於IntentIntent
- 關於HTMLHTML
- 關於 kafkaKafka
- 關於 UndefinedUndefined
- 關於ScrumScrum
- 關於startActivityForResult
- 關於synchronizedsynchronized
- 關於抽象抽象
- 關於GitGit
- 關於MySQLMySql
- 關於lispLisp
- 關於HAIPAI
- 關於 NSMapTableAPT
- 關於sessionSession
- 關於BuilderUI
- 關於打包
- 關於jbuilderUI
- 關於prototype
- 關於NULLNull
- 關於YUIUI
- 關於 TRTLCriticalSection
- 關於面試面試
- 關於AUC
- 關於RE
- 關於裁員
- 關於RESTREST
- 關於 webmWeb
- 關於NVMe
- 關於namespacenamespace
- 關於列印
- 關於液泡