安装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命令的输出中。