暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

简单小记:tnsname配置重复导致数据库无法连接问题分析

原创 王小那个鑫 2023-02-21
974

一 背景

今天遇到一个很简单的问题,同事通过sqlplus username/password@TNSNAME的方式,远程连接一个数据库的时候,发现一直报错用户名密码错误,无法登陆。
image.png

二 问题

最初以为就是简单的用户名密码输入错误了,但是根据tnsnames.ora的配置,发现配置是正确的,IP,服务名等配置均正确,同时到对应系统用相同用户名密码登陆,确实也可以正确登陆,但是就是远程无法登陆

三 问题发现并解决

通过ip:port/service_name进行登陆,发现也是可以的。那么基本上可以确定问题就在tnsnames.ora配置的问题上。但是经过仔细排查,tnsnames.ora中的配置又完全是正确的。于是想到使用另外一种方式strace调试的方式来登陆尝试,看看是否能分析出哪里出了错:

strace sqlplus username/password@tnsname

从输出中发现了以下内容:

image.png
在sin_addr=inet_addr中会输出一个ip,该ip则为我们通过tnsnames.ora解析出来要访问的ip,此时发现该ip不是我们想要的ip。

此时,我想验证下这里是不是连接到了不是我们想要的ip上,那么我想到了另一种方式进行验证,即netstat。

netstat -ntp|grep sqlplus

image.png
可以发现,确实从netstat上来看用sqlplus连接,此时也不是我们想要的ip。

那么问题更可以确定出现在tnsnames.ora的配置上了,于是对tnsnames.ora文件进行了全局搜索,果然发现在文件中配置了两个一样的tnsname,但是数据库ip以及信息均不一样,而默认连接到后配置的那个tnsname上去了。

四 问题排查方法总结

作为软件运维人员,就是需要在遇到问题时候,能够快速根据自己的只是发现并确认问题。针对这种问题,目前我使用了两种方法:
1.strace调试;
2.netstat -ntp方式进行访问端口状态查看;
两种方式我都认为还是可以快速定位到问题,那么对于这个问题各位朋友、大佬还有什么好的方法可以快速定位呢?欢迎老板们留言,供小弟参考。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论