双网卡环境导致Oracle连接异常

现在就是流行向最高水平看齐,这次项目的部署,好好的SQL Server扔了(有正版授权的企业版,神啊...),逢人就夸:“俺们那上的可是最顶级的Oracle Database System!”。看了看价钱,也确实蛮顶级的,60万,吓得直接就没敢含到项目整体预算里。

可是贵的东西就好用么?未必。这个建筑在Java上,满身UNIX气息的东西,一副死板的面孔。装的时候就被叮嘱要注意,装不好LISTENER就可能起不来...还好哥们我还练过,Windows版的也没有Linux的那么陌生,折腾了几次都很正常。不过嘛,欺负新手的东西,总要给人下马威的,今天下午在上面装ArcSDE的时候,硬是连不到数据库上了,猛报错TNS:无法解析名字。

这很蹊跷,用管理页面看,监听很正常的在运行,用连接字串进行连接,也很正常登入和操作。这至少证明数据库实例和监听是有在工作的,可是究竟是什么导致无法连接呢?根据出错信息,使用tnsping尝试,发现tnsping orcl(默认启动数据库的SID)返回同样的错误。这下就把问题锁定在名解析下,Oracle网络服务的TNS名解析,一般使用LDAP或者本地的tnsnames.ora文件,由于网络中并没有配置Oracle LDAP服务,因此打开tnsnames.ora察看,里面的“ORCL=”条目并没有看出什么问题,使用Oracle的Net Manager工具,可以看到监听的配置listener.ora中和tnsnames.ora里ORCL条目的配置完全一致,主机名、端口号都没有什么异常。

这种情况下,只好反复重启服务和修改配置尝试,可并没有效果,还差点把Oracle给弄糟,有几次监听都起不来了,吓得我一头汗。绝望之中不小心将tnsping当成了普通的ping命令,键入“tnsping 主机名”,忽然间来了精神,神奇的发现返回的结果中,主机名被EZCONNECT解析为一个奇怪的IP地址。我这才发现,服务器的网络管理中有2个网卡,一个是实际网卡,IP为一般使用的正确IP,另一个是我已经离开的同事不知道因为什么装的Microsoft Loopback Adapter,配置的IP地址正是那个奇怪的IP。

立即上网查资料,发现由于Oracle必须把主机名解析为一个IP,而主机名在双网卡跨网段的情况下是工作不正常的,因为一个名不可能被解析为2个地址,就造成了监听在双网卡情况下工作不正常。我这次的情况就是双网卡网段不同造成了混乱,监听的名解析正好被绑定到了那个没有实际作用的奇怪IP上,从正常网卡进行的使用主机名的连接全部失败,而直接使用IP作为连接字段的连接却成功了。

一开始还打算通过纠正Windows的hosts文件来强制名解析回到正确的IP上,不料却又引起了EZCONNECT的混乱。吃够了教训后,将监听的配置使用IP地址重写,并同时绑定到两个网卡的IP上,然后将tnsnames.ora中条目内的主机名也改为IP地址,测试终于OK

时间: 2024-10-08 20:39:35

双网卡环境导致Oracle连接异常的相关文章

Oracle归档日志满了导致Oracle连接(ORA-00257)报错处理

最近一段时间,有收到一台Oracle服务器的连接告警, 刚刚开始还以为是Oracle的监听被关闭导致,结果连上服务器看下Oracle的监听进程正常,自己连接一次发现有报ORA-00257错,又去监控系统中在看下日志再用sqlplus连上Oracle后查了下,知道是Oracle的归档日志写满闪回区导致Oracle连接异常,查看归档日志方法如下: SQL> show parameter db_recovery_file_dest; #查看归档日志的物理路径及闪回区的大小 SQL> select f

关于双网卡SFTP传输无法连接服务器的问题

可以按照如下方法设置网卡优先顺序,把接入A网络的1号网卡设置为1,B网络的2号网卡设置为2,界面如下: 1号网卡设置 2号网卡设置 或者通过删除或添加永久路由表的方式处理route print打印路由表,查看是否有永久路由如果发现有192.x.x.x或者192.168.x.x的永久路由的话,用如下命令删除route delete 192.168.0.0 mask 255.255.0.0 192.168.1.1 或者将命令保存为bat处理route delete *route add 192.16

SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败

原文:SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败 先感谢一下我的同事们最先发现此问题,鸣谢:向飞.志刚.海云 最近在生产环境发现一个诡异的问题: 环境:WINDOWS 2012+SQLSERVER 2012 SP1,双节点的故障转移群集+单节点的SQLSERVER 2012 SP1实例(镜像) 生产数据库是从SQLSERVER 2008R2迁移到2012的,迁移过程很顺利,按照一般经验,可能导致数据库所有者丢失,因此在迁移后手动修改数据库所有者为sa,与

Oracle RAC 环境下的连接管理(转) --- 防止原文连接失效

崔华老师的文章!!! 这篇文章详细介绍了Oracle RAC环境下的连接管理,分别介绍了什么是 Connect Time Load Balancing.Runtime Connection Load Balancing.Connect Time Connection Failover 和 Runtime Connection Failover,以及里面所涉及到的 TAF.ONS.FCF.FAN.LBA 等诸多知识点.本文主要是针对 Oracle RAC 11gR2 环境下的连接管理,但同时也会对

Oracle 使用本地IP地址连接异常的解决方法

前几天的安装的Oracle测试环境,今天发现不能使用本地IP连接,连接提示错误 "Oracle the network adapter could not establish the connection" 这个问题折腾我时间比较长,网上很多资料都不太适合我的情况.不过最后还是被找到了 花了很多时间在其他方面没有锁定问题根源. 1 开始以为是防火墙 server client端都排除 2 oracle client端问题 (ubuntu 安装的client端) 3 最后用程序测试发现还

模拟linux 双网卡双ip,实现multipath多路径连接存储

模拟linux 双网卡双ip,实现multipath多路径连接存储 系统(Centos6.5:oracle-1): eth0:192.168.21.23/24 eth1:172.16.112.17/24 存储Ip:  192.168.21.230 首先要配置iscsi存储,再其次一下操作,我这里配置了两个ISCIS存储 网卡路由配置 由于只能有一个网关,所以要添加静态路由实现双网卡通信 1.编辑网卡eth0,eth1 设置好配置文件,不添加默认网关 # vi /etc/sysconfig/net

嵌入式linux开发环境搭建(一)——双网卡的网络设置

嵌入式linux开发环境搭建(一)--双网卡的网络设置 一.linux发行版为ubuntu-14.04.4-server-amd64版本 安装ubuntu 二.网络设置 1.虚拟机添加双网卡 eth0桥接无线网卡用于Ubuntu上网,eth1桥接有线网卡用于连接开发板.eth0和eth1网卡设置如下图所示: 2.设置网络 先查看网卡:ifconfig | more 如果没有显示eth0.eth1网卡,则用ifconfig eth0 up;ifconfig eth1 up激活网卡eth0.eth1

SELinux导致PHP连接MySQL异常Can't connect to MySQL server的解决方法

今天上班遇到的问题,新配的Linux服务器,php.Apache和一系列扩展插件装好后,在本地好好的程序移上去就一直抱数据库连接错误,而用sql命令却能连接上去, 做了一个简单的判断数据库连接页面还是不行,证明不是程序问题,而是php的哪里问题了,就在网上查了大半天 有些方法都不合情况后面偶然发现SELinux这个东西 查了下这个有限制httpd对外访问的权限:具体如下 输入命令:getsebool -a|grep -i httpd 里面会有一个 httpd_can_network_connec

解决"System.AccessViolationException”类型的未经处理的异常在 未知模块(IIS Worker Process 已停止工作)导致无法连接远程数据库的问题

解决方法: 用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身份运行,这个重置LSP连接) 解决"System.AccessViolationException"类型的未经处理的异常在 未知模块(IIS Worker Process 已停止工作)导致无法连接远程数据库的问题