国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

orale的tnsping與TCP/IP的ping命令的比較

2024-07-21 02:33:49
字體:
來源:轉載
供稿:網友
  比較orale的tnsping與TCP/ip的ping命令:  -----------------------------------------------------------------------------
  Oracle Net 工具(命令)tnsping,是一個OSI會話層的工具,它用來:   1)驗證名字解析(name resolution,當然是oracle自己的網絡服務名)  2)遠程的listener是否啟動  在驗證上面兩項功能方面,它是DBA手頭上一個比較得心應手的工具。Oracle 網絡接口支持不同的網絡與傳輸協議,其中我們最熟悉的就是TCP/IP.這篇文章只描述TCP/IP 協議族,然而,在oracle網絡接口支持的其它協議下,tnsping的功能是一樣的。  Tnsping 可以用在多個網絡協議上,但是本文只討論TCP/IP網絡協議  -----------------------------------------------------------------------------
  ORACLE TNSPING
  -----------------------------------------------------------------------------  Oracle的tnsping測試程序,在通訊時使用TCP協議。TCP 是面向連接的OSI傳輸層協議。面向連接的協議在初始建立連接的階段需要進行初始的序列號的交換,這就是我們通常所指的三次握手。即tnsping測試程序在與listener進行通訊時會產生三次握手現象。  當在命令行中發出了tnsping命令后,會執行oracle 網絡別名(即網絡服務名,主機連接字符串)的解析工作。這個解析工作會在本地的tnsnames.ora文件或ORACLE的命令服務器或ORACLE LDAP(目錄服務)中進行。解析的目的是得到目標listener所在的機器名(IP地址)和listener偵聽的端口號。  一旦得到listener的機器名與端口號,就可以打開一個到目標機器與端口的TCP連接。為了打開這個TCP連接,listener的機器名必須被解析為ip地址(當然這只有在解析出的listener的連接地址為機器名時才這樣做),然后TCP/IP執行三次握手來完成這次連接。  在連接建立之后,Tnsping工具然后就發送一個Oracle TNS 連接包給Oracle Listener,Listener然后就回應一個TNS 拒絕包(Refuse packet),在兩個機器間的TCP/IP連接就結束了。從oracle 網絡別名的解析到結束TCP/IP連接之間的總的耗費的時間就顯示在tnsping命令的輸出中。  一個例子:  C:/>tnsping V817  4  TNS Ping Utility for 32-bit Windows:  Version 8.1.7.0.0 - PRodUCtion on 18-MAY-2001 14:27:57  (c) Copyright 1997 Oracle Corporation.  All rights reserved.  Attempting to contact  ADDRESS=(PROTOCOL=TCP)(HOST=abadah.us.oracle.com)(PORT=1521))  OK (1770 msec)  OK (10 msec)  OK (0 msec)  OK (10 msec)  上面這個例子顯示第一次tnsping需要1770毫秒,這些時間由在tnsnames.ora文件中解析V817網絡別名需要的時間、利用DNS解析listener機器名“ abadah”需要的時間,三次TCP/IP握手需要的時間、TNS Connect 和Refuse packets傳輸需要的時間、斷開TCP/IP連接需要的時間。第二次tnsping只花費了10毫秒,這是因為所有的信息 (V817別名與IP地址)都已經在cache中了,然而Tnsping程序仍然做 TCP的連接與斷開操作。  -----------------------------------------------------------------------------
  TCP/IP PING
  -----------------------------------------------------------------------------  Transmission Control Protocol/Internet 協議族 (TCP/IP) 有一個稱為ping的工具。它是到TCP/IP 協議族中ICMP(Internet Control Message Protocol)協議的命令行接口。  根據RFC 792:  "有時候,一個網關或目的地址需要同源地址進行通訊,如:為了給源地址一個關于在處理數據報的過程中產生的錯誤。為了這種目的,就需要使用ICMP協議。 ICMP需要網際協議(IP)的支持,這使它看起來就像一個更高層的協議,然而,ICMP實際上是IP的一個組成部分,在IP的每個模塊中必須實現它。  Ping命令的作用之一就是收集不同大小的IP數據包在網絡上傳輸一個往返需要的時間。這可以用來估計網絡的大體性能和響應時間。  Ping命令使用IP,而不是TCP,這樣就不需要TCP的3次握手機制,當運行ping命令時,它只發送與接收一個ip數據包,這比oracle的tnsping程序運行時需要更少的數據包。
  Ping的第一個的response time經常比平均response time要長,這是因為第一次一般需要對ping的機器名進行解析。這個解析可以通過本地的hosts文件、DNS服務器或其它方法實現。  一個ping的例子:  Pinging abadah.us.oracle.com [144.25.223.156] with 32 bytes of data:  Reply from AAA.BBB.CCC.DDD: bytes=32 time<40ms TTL=255  Reply from AAA.BBB.CCC.DDD: bytes=32 time<10ms TTL=255  Reply from AAA.BBB.CCC.DDD: bytes=32 time<10ms TTL=255  Reply from AAA.BBB.CCC.DDD: bytes=32 time<10ms TTL=255  上面的例子顯示第一次的ping時間需要40毫秒,這包括DNS解析的時間。  從上面的介紹我們可以得出:  1.tnsping需要使用TCP,所以需要3次握手建立連接,而ping只使用IP,所以不需要3次握手,這也就解釋了為什么有的機器不能ping通,但是用tnsping確能測試通。  2.Tnsping通,并不能說明客戶端能與數據庫建立連接。因為  ping通只能說明客戶端能解析listener的機器名,而且lister也已經啟動,但是并不能說明數據庫已經打開,而且tsnping的過程與真正客戶端連接的過程也不一致。  但是假如不能用tnsping通,則肯定連接不到數據庫。  關于第2條可以用tns-12545錯誤來說明:  TNS-12545 (ORA-12545): Connect failed because target host or object does not exist  原因:  客戶端不能正確解析服務器的機器名。該錯誤一般出現在客戶端沒有設置或沒有正確設置域名服務器的情況下出現。  解決辦法:  疑問:出現這種情況時,有時可以用tnsping 測程序測試網絡服務名可以通過,但還是不能用程序連接數據庫,你會感到很希奇。有時即使將客戶端的tnsnames.ora中的服務器的機器名換為ip地址,還是會報錯,這會令人感到更加迷惑,會不會系統有問題?  要真正解決這個問題,需要知道客戶端與服務器端在建立連接時所的數據流。并需要了解redirect session的概念。  當一個客戶端連接在window上的數據庫,或以共享連接的模式連接在unix上的數據庫時(此時數據庫為MTS模式),客戶端的連接會發生重定向現象,也就是listener在接受客戶端的連接后,會發送一個重定向的包給客戶端,然后客戶端利用這個重定向包中提供的信息(服務器的ip(或機器名)和端口等信息)重新發起一個真正的到數據庫的連接。當將客戶端的tnsnames.ora中的服務器的機器名換為ip地址,客戶端的連接還是會報ora- 12545錯的罪魁禍首就是這個重定向包中的內容。  當客戶端連接window上的數據庫,或以共享連接的模式連接在unix上的數據庫時,因為tnsnames.ora中為服務器的ip地址,所以不存在名字解析的問題,客戶端的連接請求會到達listener,這也就是tnsping 測試程序測試網絡服務名可以通過的原因,因為tnsping測試程序不會產生重定向問題。在listener接受客戶端的連接后,會跟據客戶請求的連接模式(專用連接還是共享連接)和操作系統對socket的實現的情況,決定是否需要將客戶端的連接進行重定向,假如需要進行重定向,則會產生一個重定向包,該包中包含的服務器的地址信息為從listener.ora文件中得到的listener偵聽的地址(根據listener.ora中的配置可能為服務器的機器名,也可能為服務器的ip地址),該包中還包含客戶端應該重定向連接的端口信息(同listener偵聽的端口可能不為同一個),客戶端在收到這個重定向包后,解析出應該重新連接的服務器地址(機器名或ip)和端口,重新利用解析出的信息建立一個新的連接,此時假如客戶端得到的為服務器的機器名并且沒有配置域名解析,就會因為解析不出服務器的ip地址,從而導致產生ora-12545錯誤。  所以,假如假如要徹底解決ora-12545錯誤,需要:  1) 配置一個域名服務器,并正確的設置客戶端機器的域名服務器  2) 將服務器的機器名與ip配置在客戶端的hosts文件中。  3) 將客戶端tnsnames.ora和listener.ora中的地址部分都改為ip地址,而不是用機器名  4) 將客戶端的連接改為專用連接,這樣會避免redirect 現象。(適用與客戶端tnsnames.ora中為服務器的ip地址的情況下)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海南省| 大方县| 南丰县| 凤山市| 隆子县| 湟中县| 砀山县| 象山县| 哈尔滨市| 确山县| 平武县| 清水县| 安西县| 永靖县| 伽师县| 靖西县| 肥西县| 萨迦县| 抚州市| 太白县| 扎囊县| 禹城市| 小金县| 澳门| 富平县| 裕民县| 徐水县| 泾阳县| 宁南县| 闽清县| 文山县| 建始县| 台湾省| 武定县| 阜新| 祁门县| 海林市| 义马市| 成安县| 友谊县| 昌黎县|