比较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
C:\>tnsping 10.10.5.11
-----------------------------------------------------------------------------
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服务器或其它方法实现。
从上面的介绍我们可以得出:
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地址的情况下)
相关推荐
标题与描述中的“坚不可摧:Oracle的安全承诺”这一知识点,深入探讨了Oracle公司在信息安全领域内的承诺与实践。Oracle作为全球领先的数据库管理软件提供商,深知数据安全对企业的重要性,因此提出了“坚不可摧”的...
该教材的目标是帮助学生准备DELF B1级别的听力考试,其教学内容与欧洲共同语言参考框架(Cadre européen commun de référence pour les langues)中的B1级别相匹配。 本教材附带一张包含所有音频材料的CD,可...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,以其强大的功能和高效性著称。在本文中,我们将深入探讨Oracle数据库的一些关键知识点,包括其优化技术和内部机制。 首先,Oracle数据库优化是一个复杂而...
JDBC驱动主要有四种类型:类型1(纯Java驱动)、类型2(部分Java,部分本地代码)、类型3(纯Java网络协议驱动)和类型4(纯Java,基于标准的TCP/IP协议)。 综上所述,这个压缩包提供了一站式的解决方案,包含了...
目录 第一章 数据库基础 第二章 Oracle 入门 第三章 查询基础 第四章 单行函数 第五章 分组函数 第六章 多表查询 第七章 子查询 第八章 高级查询 第九章 数据字典 ...第二十八章 其他数据库
5. **网络配置**:IP地址、子网掩码、网关的设置,DNS解析,以及ifconfig、route命令的使用。 6. **脚本编程**:bash shell脚本的基本语法,包括变量、条件判断、循环结构等。 7. **软件安装与管理**:使用apt、yum...
这些工具帮助用户设置TNS(Transparent Network Substrate)以连接到远程Oracle服务器。 4. **响应文件**:"response"目录下的文件可能是预定义的安装响应文件,用于自动化安装过程。通过编辑这些文件,可以预先...
在探讨Oracle数据库中定义者与调用者权限之前,首先需要对这两个概念有一个明确的认识。定义者(Definer)是指编译存储对象的所有者,即PL/SQL程序单元的创建者。而调用者(Invoker)则指的是拥有当前会话权限的模式,这...
- 使用 Enterprise Manager Console 创建网络服务 **ORCL_SDE**,其中主机名为服务器A的名称或IP地址,SID为ORCL(或实际安装时的实例名称)。 - 通过 NET Manager 创建 oracle 服务 **ORCL_SDE** 和监听程序。 **...
- **执行SQL语句**:创建`Statement`对象并执行相应的SQL命令(如INSERT)。 ##### 3. 数据处理与插入 - **数据读取**:从Excel文件中逐行读取数据,并存储到适当的数据结构中(如`Hashtable`)。 - **数据验证*...
2. **网络环境变动**:如电脑名称或IP地址更改,可能导致监听服务无法启动。此时,需更新网络配置文件。在`D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN`目录下,找到`listener.ora`和`tnsnames.ora...
它包括TNS(Transparent Network Substrate)命名服务,允许通过网络透明地访问数据库,同时支持多种协议如TCP/IP、 Named Pipes等。 2. **SQL*Plus**: SQL*Plus是Oracle提供的一个命令行接口,用于执行SQL语句、PL...
需要注意的是,虽然这样的工具能提升效率,但在实际操作中,应确保版本号的更改与代码的更改相匹配,避免出现版本信息与代码内容不一致的情况。此外,良好的文档记录也是确保项目管理有序的关键。 总结来说,Oracle...
1. 数据库连接:Navicat支持多种方式连接Oracle数据库,包括标准TCP/IP协议、SSH隧道和HTTP隧道,确保了在各种网络环境下都能安全地访问数据库。 2. 数据库设计:用户可以使用Navicat创建、修改和管理表、视图、...
### Oracle 10g 数据库安装与配置详细指南 #### 一、Oracle 10g 数据库概述 Oracle 10g(Grid Edition)是由Oracle公司发布的一款关系型数据库管理系统,它提供了强大的数据管理和处理能力,支持多种操作系统平台。...
Orale 常用的命令
这是两个客户端工具,是我在开发工作中最好用也是最常用的客户端工具。 ...ob11优点: 1.全图形化界面操作,包括修改表数据,甚至表结构,表中项目类型和位数,增加删除项目。不用输入alter语句就能实现。...
此命令用于创建一个新的表空间。例如: - `CREATE TABLESPACE "SAMPLE"`:创建一个名为 `SAMPLE` 的表空间。表空间名称应遵循 Oracle 的命名规则。 ##### 2. `LOGGING` 此选项用于指定是否为表空间启用重做日志记录...
确保网络配置正确,包括设置IP地址、子网掩码和网关。 3. **存储配置**:RAC需要共享存储,如NFS、SAN或iSCSI。配置适当的存储策略以满足RAC的要求。 4. **预安装脚本**:运行`preinstall`脚本来配置操作系统,...