安裝Oracle完畢後,使用tnsping orcl測試服務
發現報錯
- C:\Documents and Settings\abc>tnsping orcl
- TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Product
- 2011 10:39:11
- Copyright (c) 1997, 2007, Oracle. All rights reserved.
- 已使用的參數文件:
- c:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
- TNS-03505: 無法解析名稱
發現C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN目錄下面就只有一個sqlnet.ora文件,缺少了配置連接數據庫的連接字符串的TNSNAMES.ORA文件
從C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\SAMPLE目錄下面拷貝一個TNSNAMES.ORA文件修改裏面的參數配置如下
- ORCL =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
- (CONNECT_DATA =
- (SERVER = DEDICATED)
- (SERVICE_NAME = orcl)
- )
- )
- EXTPROC_CONNECTION_DATA =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
- )
- (CONNECT_DATA =
- (SID = PLSExtProc)
- (PRESENTATION = RO)
- )
- )
再次執行tnsping orcl
- C:\Documents and Settings\abc>tnsping orcl
- TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 17-11月-
- 2011 11:04:58
- Copyright (c) 1997, 2007, Oracle. All rights reserved.
- 已使用的參數文件:
- c:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
- 已使用 TNSNAMES 適配器來解析別名
- Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.
- 1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
- OK (30 毫秒)
PS:
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命令的輸出中。