[20171120]關於INBOUND_CONNECT_TIMEOUT設置.txt

来源:http://www.cnblogs.com/lfree/archive/2017/11/21/7871536.html
-Advertisement-
Play Games

[20171120]關於INBOUND_CONNECT_TIMEOUT設置.txt--//上午翻看以前我的發的帖子,發現鏈接:http://www.itpub.net/thread-2066758-1-1.html--//今天再仔細看了一下,註意看了一下別人的回覆,才發現一些細節問題,原始鏈接:-- ...


[20171120]關於INBOUND_CONNECT_TIMEOUT設置.txt

--//上午翻看以前我的發的帖子,發現鏈接:http://www.itpub.net/thread-2066758-1-1.html
--//今天再仔細看了一下,註意看了一下別人的回覆,才發現一些細節問題,原始鏈接:
--//http://www.cnblogs.com/kerrycode/p/5224483.html

關於sqlnet.ora的參數SQLNET.INBOUND_CONNECT_TIMEOUT,它表示等待用戶認證超時的時間,單位是秒,預設值是60秒,如果用戶認證超
時了,伺服器日誌alert.log顯示出錯信息"WARNING: inbound connection timed out (ORA-3136)",sqlnet.log裡面出現TNS-12535:
TNS:operation timed out錯誤信息。

關於listener.ora的參數inbound_connect_timeout_監聽器名,它表示等待用戶連接請求超時的時間,單位是秒,預設值是60秒,如果連
接請求超時了,監聽器日誌listener.log顯示出錯信息"TNS-12525: TNS:listener has not received client's request in time
allowed"。

其中sqlnet.ora裡面的參數為SQLNET.INBOUND_CONNECT_TIMEOUT, listener.ora裡面的參數設置為
INBOUND_CONNECT_TIMEOUT_listener_name ,其中根據監聽名字來替換listener_name。官方文檔關於兩者的介紹如下所示:

SQLNET.INBOUND_CONNECT_TIMEOUT parameter in sqlnet.ora on the database server

Specify the time, in seconds, for a client to connect with the database server and provide the necessary authentication
information. If the client fails to establish a connection and complete authentication in the time specified, then the
database server terminates the connection. In addition, the database server logs the IP address of the client and an
ORA-12170: TNS:Connect timeout occurred error message to the sqlnet.log file. The client receives either an ORA-12547:
TNS:lost contact or an ORA-12637: Packet receive failed error message.

INBOUND_CONNECT_TIMEOUT_listener_name in listener.ora

Specify the time, in seconds, for the client to complete its connect request to the listener after the network
connection had been established.

If the listener does not receive the client request in the time specified, then it terminates the connection. In
addition, the listener logs the IP address of the client and an ORA-12525: TNS:listener has not received client’s
request in time allowed error message to the listener.log file

查看inbound_connect_timeout值

1:查看SQLNET.INBOUND_CONNECT_TIMEOUT的設置值,一般進入$ORACLE_HOME/network/admin下,查看sqlnet.ora參數文件即可。

2:查看監聽INBOUND_CONNECT_TIMEOUT參數,可以查看listener.ora參數文件。但是有時候,例如預設情況,參數文件裡面沒有設置這個
   參數,或是有些動態監聽沒有配置listener.ora,那麼可以使用lsnrctl命令查看,如下所示:

--//下午我仔細看,才發現我以前的測試錯誤在那裡.我以為2個都可以通過telnet ip port的方式測試出來.理解錯誤.^_^ .
--//實際上文檔已經明確說明,看文檔還是不夠認真,理解還是不夠透徹.
--//測試SQLNET.INBOUND_CONNECT_TIMEOUT,需要網路連接,出現超時才會報錯.

1.測試環境:
SCOTT@book> @ &r/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

2.測試一:
--//首先不做任何設置(預設設置)
--//session 3:
$ ps -ef  | grep oracleboo[k]
--//當前沒有任何通過網路連接到資料庫.
--//打開幾個會話:
--//session 1:
$ tail -f alert*.log

--//session 2:
$ cd /u01/app/oracle/product/11.2.0.4/dbhome_1/network/log
--//註意:監聽listener.log的目錄位置,我在監聽配置中加入DIAG_ADR_ENABLED_LISTENER=OFF.
$ tail -f sqlnet.log listener.log

$ date;sqlplus scott/xxxxx@book
Mon Nov 20 16:30:37 CST 2017
SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 20 16:30:38 2017
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
--//不做任何操作,等60秒....

--//session 3:
$ ps -ef  | grep oracleboo[k]
oracle   56566     1  0 16:34 ?        00:00:00 oraclebook (LOCAL=NO)
--//可以發現服務端開啟1個進程.

$ tail -f alert*.log
Mon Nov 20 16:31:38 2017
WARNING: inbound connection timed out (ORA-3136)

$ tail -f sqlnet.log listener.log
==> sqlnet.log <==
***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
        TNS for Linux: Version 11.2.0.4.0 - Production
        Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
        TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
  Time: 20-NOV-2017 16:31:38
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: TNS:operation timed out
    ns secondary err code: 12606
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
  Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.78)(PORT=42714))

--//listener.log沒有相關輸出.
--//註意看時間,相減就是60秒.

$ ps -ef  | grep oracleboo[k]
--//沒有輸出.說明進程已經over.
--//也就是在網路連接錯誤超時的情況下,oracle要通過SQLNET.INBOUND_CONNECT_TIMEOUT參數確定超時認證時間.
--//如果通過telnet(註client ip:192.168.100.40 ) 連接測試:
# date;time telnet 192.168.100.78 1521
Mon Nov 20 16:44:12 CST 2017
Trying 192.168.100.78...
Connected to gxqyydg4 (192.168.100.78).
Escape character is '^]'.

--//session 3:
$ ps -ef  | grep oracleboo[k]
--//可以發現根本沒有相關進程.

# lsof -P -n -i | grep 192.168.100.40
tnslsnr   56702  oracle   15u  IPv4 37111676      0t0  TCP 192.168.100.78:1521->192.168.100.40:40923 (ESTABLISHED)

# ps -ef | grep 5670[2]
oracle   56702     1  0 Nov20 ?        00:00:01 /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/tnslsnr LISTENER -inherit
--//進程號對於監聽進程.

# date;time telnet 192.168.100.78 1521
Tue Nov 21 08:41:12 CST 2017
Trying 192.168.100.78...
Connected to gxqyydg4 (192.168.100.78).
Escape character is '^]'.
Connection closed by foreign host.
real    1m0.106s
user    0m0.001s
sys     0m0.001s

--//你可以發現在伺服器還沒有開啟伺服器進程,僅僅存在一個網路連接.而這個時候實際上監聽配置inbound_connect_timeout_監聽器名起作
--//用.只不過預設設置是60秒.
--//而前面sqlplus scott/xxxxx@book,既打開網路連接,有開啟服務端進程.2者測試就很容易理解了.
--//理解這些,後面的測試就很容易理解.

--//session 2:
$ tail -f sqlnet.log listener.log
==> listener.log <==
21-NOV-2017 08:39:22 * service_update * book * 0
21-NOV-2017 08:42:12 * <unknown connect data> * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.40)(PORT=40923)) * establish * <unknown sid> * 12525
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TNS-12525: TNS:listener has not received client's request in time allowed
 TNS-12535: TNS:operation timed out
  TNS-12606: TNS: Application timeout occurred

--//註意看下劃線內容,sid=<unknown sid>,<unknown connect data>,埠號PORT=40923也能對上.
--//sqlnet.log沒有相關輸出.

--//也就是在監聽配置listener.ora中的inbound_connect_timeout_監聽器名是用戶連接監聽時的超時限制.
--//                sqlnet.ora中SQLNET.INBOUND_CONNECT_TIMEOUT是等待用戶認證超時的時間(註已經通過網路連接).

--//繼續做一個測試說明問題(註:使用本地連接.不做任何操作)
$ date;sqlplus scott/xxxxx
Mon Nov 20 17:07:08 CST 2017
SQL*Plus: Release 11.2.0.4.0 Production on Mon Nov 20 17:07:08 2017
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:

$ ps -ef  | grep oracleboo[k]
oracle   61056 61055  0 08:45 ?        00:00:00 oraclebook (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

# lsof -P -n -i | grep 6105[56]
--//註意前面的連接不同,沒有通過網路連接.

$ sleep 60
$ ps -ef  | grep oracleboo[k]                                                              |
oracle   61056 61055  0 08:45 ?        00:00:00 oraclebook (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

--//你可以發現這樣的進程不會kill掉.也就是不通過網路這個參數不會生效.
--//理解以上測試就明白,實際上2個參數對應是不同的設置,一個針對監聽,一個針對用戶認證.

3.測試二:
--//修改sqlnet.ora加入:
SQLNET.INBOUND_CONNECT_TIMEOUT=30

--//修改listener.ora加入,並且重啟監聽:
INBOUND_CONNECT_TIMEOUT_LISTENER=10

$ lsnrctl stop ;sleep 1;lsnrctl start

# date;time telnet 192.168.100.78 1521
Tue Nov 21 08:52:52 CST 2017
Trying 192.168.100.78...
Connected to gxqyydg4 (192.168.100.78).
Escape character is '^]'.
Connection closed by foreign host.

real    0m10.015s
user    0m0.002s
sys     0m0.000s
--//使用telnet測試,測試是listener.ora設置參數INBOUND_CONNECT_TIMEOUT_LISTENER=10.

$ date;sqlplus scott/xxxxx@book
Tue Nov 21 08:54:29 CST 2017
SQL*Plus: Release 11.2.0.4.0 Production on Tue Nov 21 08:54:29 2017
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:

--//alter.log輸出:
==> sqlnet.log <==
Tue Nov 21 08:54:59 2017
WARNING: inbound connection timed out (ORA-3136)

--//sqlnet.log輸出:
==> sqlnet.log <==
***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
        TNS for Linux: Version 11.2.0.4.0 - Production
        Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
        TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.4.0 - Production
  Time: 21-NOV-2017 08:54:59
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: TNS:operation timed out
    ns secondary err code: 12606
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
  Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.78)(PORT=54593))

--//時間相減就是30秒.說明這樣測試網路連接的用戶認證.
--//其它可以參考鏈接測試http://www.cnblogs.com/kerrycode/p/5224483.html,不再重覆了.

總結:
我主要犯了一個概念上錯誤,認為這個參數INBOUND_CONNECT_TIMEOUT設置針對的超時認證是一樣的東西,實際上2者存在不同.
一個表示等待用戶認證超時的時間,一個表示等待用戶連接請求超時的時間.
講的通俗一點,一個針對監聽,一個針對用戶認證(網路連接已經確立).
另外一個文檔看別人的文檔還是跟認真一點,這樣的錯誤就能很快發現.總之自己還是存在一些概念的混淆混亂...
我不知道還有什麼方法認證這些參數測試!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一. 基本函數 1. 根據 sel 得到 class 的實例方法 2. 根據 sel 得到 class 的函數指針 3. 給 class 添加方法 4. 替換 class 的 sel 對應的函數指針,返回值為 sel 對應的原函數指針 5. 交換兩個 method 6. 直接替換 method 的函 ...
  • 一、Objective C 中的基本類型 首先看下 Objective C 的對象模型,每個 Objective C 對象都是一個指向 Class 的指針。Class 的結構如下: struct objc_class { Class _Nonnull isa OBJC_ISA_AVAILABILIT ...
  • 首先這是我自己第一篇博客,如果有什麼不對的,大家指出,積極修改。 cordova是大家做混合開發最經常使用的一款使用HTML, CSS & JS進行移動App開發多平臺共用一套代碼,中文官方網站(http://cordova.axuer.com/),號外一下最近好多國外網站被牆的太嚴重,回歸正題,下 ...
  • strong和copy是常用到的修飾符,那麼什麼時候用strong,什麼時候用copy,先上一段代碼再說(以下代碼直接在ViewController中寫); 先定義兩個數組 viewDidLoad方法 列印結果 可以看到arraystrong隨著arrayMut的改變而改變了,而arraycopy沒 ...
  • Android 如何將手機屏幕投影到 PC 屏幕上或者投影儀上做演示? 公司開發款APP,要給領導演示,總不能用手機面對面演示吧。所以找了好久,找到一款體驗超好的: Total Control-幫助你使用電控制手機(自行下載,精簡版免費)。 其實這個軟體主要是用來用電腦來操控手機屏幕的,功能強大,也 ...
  • 隨著二手車交易市場呈爆髮式增長,二手車估值需要詳細瞭解車輛的狀況和維修歷史,車架號/vin碼是車輛唯一的身份標識,也是瞭解二手車車況的入口。手機掃描vin碼識別技術給車輛估值平臺提供了便捷的查詢入口,通過構建車況自動化查詢平臺,滿足車商隨時隨地查詢車況的需求。技術交流:187 016 868 57 ...
  • 效果如圖,很常見的一種佈局方式,只是沒有採用radiobutton,方法都很多,很多人都自定義寫在一個view裡面,不過代碼量偏大,所以還是xml寫吧 這樣寫下來感覺代碼量還是挺少的,而且很好擴展,然後在點擊的時候加了個回彈動畫,頓時體驗好多了 public class MainActivity e ...
  • 你全量發佈了一個新版本應用,怎麼在商戶的大面積投訴之前,率先發現閃退趨勢呢? 如果商戶投訴設備運行緩慢,你怎麼分析性能瓶頸呢?坐高鐵到現場嗎? ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...