前几天在机房连接数据库服务器时,报了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:连接超时解决一例