发布网友 发布时间:2022-05-05 19:12
共2个回答
懂视网 时间:2022-05-05 23:34
前几天在机房连接数据库服务器时,报了rdquo;ORA-12170:TNS:连接超时rdquo;。这个错误费了我两天的时间才把问题解决掉,现在总
前几天在机房连接数据库服务器时,报了”ORA-12170:TNS:连接超时”。这个错误费了我两天的时间才把问题解决掉,现在总结下,希望大家少走些弯路
从错误的信息上看,是肯定是本地的客户端和服务器没有连接好,两个机器的Oracle直接不能通信。这个问题就多了,现总结一下:
一tns的配置文件不对
这个问题是最基本的,这是连接的基础。这个我建议直接从服务器上拷贝,就不会出错了。我见过的就是因为服务器名后有空格,导致了服务器无法解析。
二服务器的防火墙开了
防火墙会组织tns直接的连接,验证可以把服务器的防火墙关了试试看。
三路由的配置问题
这是我今天想说的,也是花了我两天的时间弄明白的地方。对于那些既要用外网上网收发邮件,又要用内网连接服务器的用户,这点尤其重要。
我在机房时,用无线连接外网做上网用,用有线连接内网做连接数据库用。正常情况下,是不能同时实现外网和内网的同时访问的,必须先把路由表的信息设置下,使外网和内网的网关不在同一个子网掩码上。可以在控制台下用 route print 查看本地的路由信息。
大家可能没有看没明白,我举例说明。下面这张图是我连不上服务器时的路由信息,重点是前面的两行,可以明显的看到我的外网的网关(192.168.1.1)和内网的网关(132.77.124.129)在同一网络掩码(0.0.0.0)内,这样路由就无法解析了。
这时可以把外网的无线网络断掉,这样内网就可以连接上了。我正是看到了这点,才明白是网络的原因,不是tns的原因。接下来,,我就该看怎样实现内网和外网的同时访问了。
我用了以下的命令:
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1
route add 132.77.0.0 mask 255.255.0.0 132.77.124.129
route add 132.78.0.0 mask 255.255.0.0 132.77.124.129
route add 10.193.0.0 mask 255.255.0.0 132.77.124.129
可以逐条的在控制台下输入,也可以做成bat文件的形式直接的手工执行。运行完后,我的路由信息如下图所示
同样可以明显的看到我的外网的网关(192.168.1.1)和内网的网关(132.77.124.129)不在同一个网络掩码内了,这样路由就可以解析了。
总结一下,出现这个问题不要慌,要一步步的去找问题的原因。
热心网友 时间:2022-05-05 20:42
tnsnames.ora IP地址修改成你本机现在的IP地址,并重启监听服务,等一会儿-等的时间会比较长估计得要几分钟的样子。
TNS协议是ORACLE服务端和客户端通讯的协议。TNS协议传输可以使用TCP/IP协议、使用SSL的TCP/IP协议、命名管道和IPC协议传输,其中TCP/IP协议传输是使用明文传送。这里我们只分析基于TCP/IP协议上的TNS数据。
ORACLE网络通讯协议TNS有许多版本,并且大部分向下兼容,我们主要oracle 9.2.0.1.0客户和服务间的传输协议,他的协议版本号为312,其兼容到300。
TNS协议有一个通用的头,通用头包含一个请求数据类型。不同的服务请求和数据传输使用不同的请求数据类型。对于通常意义的查询操作一般使用数据类型,当出现错误或其他情况时可能使用其他类型。在分析过程中发现以下类型数据:
1. 查询语句出错会用标记(marker)类型
2. 客户端向服务器请求失败(如不存在的服务ID),服务器会发送拒绝(refuse)类型
3. 客户机登陆会发送连接类型,而服务器返回一个重定向类型数据
4. 当重定向端口连接完成后客户端重现发送连接类型数据,服务器返回接受类型数据,然后能够正常通讯。