oracle 常用命令之tnsping

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地址的情况下)

Zotero插件安装保姆级教程:从Jasminum到Sci-Hub,一站式搞定文献管理 本文提供Zotero插件安装的保姆级教程,从Jasminum到Sci-Hub,一站式搞定文献管理。通过详细配置和实战案例,帮助用户高效构建文献工作流,提升研究效率。重点介绍了元数据抓取、PDF管理、文献分析和知识产出等关键插件的使用方法。 阅读详情

相关推荐

SAP农产品增值税进项税解决方案

(三)购进农产品用于生产经营且不构成货物实体的(包括包装物、辅助材料、燃料、低值易耗品等),用于生产适用13%税率货物的扣除率为10%,用于生产适用9%税率货物的扣除率为9%。具体计算公式为: 当期允许抵扣农产品增值税进项税额=当期耗用农产品数量×农产品平均购买单价×扣除率/(1+9%)

weixin_44228539的博客 1170

tnsping命令详解

TnspingOracle提供的诊断连接动作的重要方法。我们在客户端上使用tnsping,可以快速的定位连接过程中错误,进行问题判断。从功能上看,tnsping能够帮助我们解决几个方面问题:   ü  本地Oracle Net配置文件解析:sqlnet.ora、tnsname.ora是我们客户端最重要的两个配置文件。由于历史的原因,Oracle基础配置文件很多是文本格式,Oracle N

yinzhipeng123的博客 2万+

【光子AI 2026 企业级 Agent 架构指南】别再把 Skill 当 Tool:Agent Skills × MCP 企业级落地全指南(最新定义澄清 + 场景大全 + 选型决策树+安全工程清单)

摘要: 2026年企业级AI架构迎来两大核心标准——Agent Skills与MCP(Model Context Protocol),分别解决流程标准化与系统集成难题。Agent Skills通过“文件夹化能力包”(SOP+脚本+模板)固化专家流程,确保输出一致性;MCP则以类USB-C的协议统一外部系统接入,降低集成成本。两者差异显著:Skills专注程序性知识(如财报生成),MCP侧重动态连接(如跨平台数据调用)。实际场景中,复杂需求(如智能客服)需组合使用——MCP为骨架提供连接能力,Skills为大

AI天才研究院 2404

orale的tnsping与TCP/IP的ping命令的比较

orale的tnsping与TCP/IP的ping命令的比较摘自CNOUG ORACLE网友SunnyXu 的文章 http://www.cnoug.org/viewthread.php?tid=57920&highlight=比较orale的tnsping与TCP/IP的ping命令:--------------------------------------------------

MKing's Blog 2785

tnsping用法

1、测试数据库服务的命令:       命令格式: tnsping  IP地址:端口号/数据库服务名 [count] tnsping  网络服务名 [count] 比如:tnsping localhost:1521/study       tnsping studydb      tnsping命令:如果能够ping通,则说明客户端能解析listener的机器名,而且liste

evilcry2012的专栏 4万+

oracle tnsping命令

oracle tnsping命令 1、测试数据库服务的命令:       控制台 tnsping命令 IP地址   端口号 数据库服务名称       cmd->tnsping 192.168.1.123:1521/oracle10g tnsping命令:如果能够ping通,则说明客户端能解析listener的机器名,而且lister也已经启动,但是并不能说明数据库已经打开,而且tsnpin

塔山上的山 1086

Oracletnsping命令解析

Oracle Net 工具(命令tnsping,是一个OSI会话层的工具,它用来: 1)验证名字解析(name resolution,是oracle自己的网络服务名) 2)远程的listener是否启动 1.远程tnsping 2.关闭监听 3.启动监听,重新验证 总结: 1.tnsping 命令可以检查tcp协议是否已同,俗称我

orichisonic的专栏 1万+

Windows 2008 R2上安装Oracle 11g2 For Windows (x64) (11.2.0.1.0)

Windows 2008 R2 安装配置Oracle 11g2 For Windows (x64)  其中部分源自网上 首先在官网下载oracle11G R2 并解压两个包,将win64_11gR2_database_2of2\database\stage\Components中的内容拷贝到win64_11gR2_database_1of2\database\stage\Component

hongtaq的专栏 1255

oracle客户端连接mysql数据库_配置ORACLE 客户端连接到数据库

--=================================--配置ORACLE客户端连接到数据库--=================================Oracle客户端连接到Oracle数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQLserver运行于Windows平台,故很多配置直接集成到了操作系统之中。所以无需配置客户端...

weixin_29962473的博客 477

oracle tnsping用法

tnsping.查看远程的listener是否启动    用法: tnsping 连接名  次数 连接名:tnsnames.ora里配置的连接名 次数:测试次数 示例: C:\Documents and Settings\Administrator>tnsping test 2 TNS Ping Utility for 32-bit Windows: Version 9.2.0.8

hxuntao的专栏 1万+

oracletnsping与TCPIP的ping命令的比较

orale的tnsping与TCPIP的ping命令的比较        比较orale的tnsping与TCP/IP的ping命令:   -----------------------------------------------------------------------------   Oracle Net 工具(命令tnsping,是一个OSI会话层的工具,它用来:

sxtobj的专栏 1216

Oracle tnsping 03505,tnsping 命令

C:\Users\nowhill>tnsping test_sunTNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 -Production on 03-12月-2010 09:49:43Copyright (c) 1997,2007,Oracle.All rights reserved.已使用的参数文件:d:\oracle\p...

weixin_39606244的博客 187

tnsping命令作用和适用场景

在操作系统上直接运行tnsping命令,就可以得到它的使用方法,如下所示: [ora10g@capaa admin]$ tnsping TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 08-JUL-2012 12:03:42 Copyright (c) 1997, 2005, Oracle. All right...

huangbaokang的博客 2516

 比较orale的tnsping与TCP/IP的ping命令

    比较orale的tnsping与TCP/IP的ping命令:  -----------------------------------------------------------------------------  Oracle Net 工具(命令tnsping,是一个OSI会话层的工具,它用来:  1)验证名字解析(name resolution,当然

看上去很美 1009

Oracletnsping通的条件

tnsping通代表当前主机可解析目标实例的网络服务名(可在当前主机实例环境变量下用netmgr创建),且目标实例的监听已启动(目标数据库+ASM环境变量下,netmgr可配置)3.tnsping数据库的监听已启动;(lsnrctl status ;1.两主机网卡配置正确(ping ,可以互相ping通)4.LIinux iptables防火墙已关闭。2.已在当前实例创建了目标实例的网络服务名;

m0_72787342的博客 526

连接oracle服务 tnsping报错处理

连接oracle服务 tnsping报错处理

完颜振江 595

tnsping命令介绍

什么是tnsping? 可以参考官方文档的具体介绍 http://docs.oracle.com/cd/E11882_01/network.112/e41945/connect.htm#NETAG378 tnsping 实际上就是一个小工具,用来决定是否一个Oracle Net 网络服务(service)可以被接受。 从某种意义上来说,tnsping 针对的 sqlnet连接,就好比为我们常用的ping 命令来检查IP,主机名网络连接情况。 我们来做一个有趣的试验: 先来看看以下

liujinwei2005的专栏 1万+

oralce 客户端安装tnsping

因为只是简单的jdbc连接远端的oracle数据库,基本都没有安装oracle客户端. 但是服务报错提示连接失败,网络策略已开通,Telnet ip 端口是有反馈的. 想安装下client排查下原因. oracle client的安装比较简单,直接下载zip格式进行解压缩 下载地址参考:https://www.oracle.com/database/technologies/instant...

3925

oracle ping 超时_Oracle“TNS-12535:TNS:操作超时”故障的解决办法

在客户端安装完毕ldquo;Oracle Clientrdquo;,通过CMD运行ldquo;tnsping enmoedurdquo;,检测与Oracle数据库服务器的连接,系系统环境:OEL6.5_x86数据库版本:Oracle 11g 11.2.0.3.0客户端环境:Windows7 旗舰版 x86_64一、[故障现象]在客户端安装完毕“Oracle Client”,通过CMD运行“tnsp...

weixin_36160690的博客 717

tnsping orcl什么意思

"tnsping orcl" 是一个在 Oracle 数据库环境中使用的命令。它的作用是测试 Oracle 服务名 "orcl" 的网络连通性。如果连通性测试成功,则会返回一条信息表明测试成功;如果失败,则会返回一条错误信息。通过使用 tnsping 命令,可以帮助确定网络配置是否正确、服务是否正常运行等。 ...

weixin_42589700的博客 353

oracle instant client,tnsping,tnsnames.ora和ORACLE_HOME

前段时间要远程连接oracle数据库,可是又不想在自己电脑上完整安装oracleclient,于是到oracle官网下载了轻量级clientinstant client。这玩意没有图形界面,全靠sqlplus远程连接server,所以不占地方,正好满足我这样的追求“简单就好”的强迫症患者需求。 可是呢,可能是server那边没开监听port,我在自己的机子上尝试了各种配置,包含tnsna...

weixin_34194551的博客 476

2015年全国shp数据-停车场_point.zip

2015年全国shp数据-停车场_point.zip

龙尚4G模块 U8300C驱动

龙尚4G模块 U8300C WIN10驱动

上一篇: oracle 常用命令之lsnrctl
下一篇: Ubuntu Linux下设置IP的配置命令
ghostjohn
博客等级 码龄20年 1粉丝 25原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值