欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

ORA-12170:TNS:连接超时解决一例

程序员文章站 2022-05-13 15:37:48
...

前几天在机房连接数据库服务器时,报了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)内,这样路由就无法解析了。

ORA-12170:TNS:连接超时解决一例

这时可以把外网的无线网络断掉,这样内网就可以连接上了。我正是看到了这点,才明白是网络的原因,不是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文件的形式直接的手工执行。运行完后,我的路由信息如下图所示

ORA-12170:TNS:连接超时解决一例

同样可以明显的看到我的外网的网关(192.168.1.1)和内网的网关(132.77.124.129)不在同一个网络掩码内了,这样路由就可以解析了。

总结一下,出现这个问题不要慌,要一步步的去找问题的原因。

ORA-12170:TNS:连接超时解决一例