已配置tnsnames.ora仍无法tnsping:Oracle EBS跨服务器连通问题
无法从VISEBST服务器tnsping Oracle EBS源服务器VISEBS的排查方案
我来帮你一步步排查这个tnsping失败的问题,先把你提供的两端tnsnames.ora配置信息整理清楚,再逐个分析可能的原因和解决办法:
已提供的配置信息
源服务器(VISEBS)的tnsnames.ora配置
VISEBS= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=xx.xx.xx.149)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=VISEBS) (INSTANCE_NAME=VISEBS) ) ) VISEBST= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=xx.xx.xx.150)(PORT=1521)) (CONNECT_DATA= (SID=VISEBST) ) )
目标服务器(VISEBST)的tnsnames.ora配置(存在截断)
VISEBS= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=xx.xx.xx.149)(PORT=1521)) (CONNEC...
排查与解决步骤
1. 先修复目标服务器上不完整的tnsnames.ora配置
从你给出的内容能明显看到,目标服务器上的VISEBS条目是截断的,(CONNEC...应该是(CONNECT_DATA的不完整写法。这会直接导致tnsping解析失败,建议直接复制源服务器上VISEBS的完整配置到目标服务器的tnsnames.ora中,补全后的配置应该是:
VISEBS= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=xx.xx.xx.149)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=VISEBS) (INSTANCE_NAME=VISEBS) ) )
2. 验证基础网络连通性
在目标服务器VISEBST上,先跳过Oracle的TNS配置,直接测试到源服务器1521端口的连通性:
- 执行命令:
telnet xx.xx.xx.149 1521,如果能成功建立连接,说明网络层面没问题;如果连接被拒绝或超时,需要排查:- 源服务器的防火墙是否开放了1521端口
- 目标服务器到源服务器之间的安全组、路由规则是否允许TCP 1521端口的流量
- 两台服务器之间是否存在网络隔离
- 如果服务器安装了
nc工具,也可以用nc -zv xx.xx.xx.149 1521来更直观地测试端口连通性
3. 确认源服务器的Oracle监听状态
在源服务器VISEBS上,检查Oracle监听是否正常运行并正确配置:
- 执行命令:
lsnrctl status,查看输出中是否包含VISEBS的服务名或实例名,同时确认监听的端口是1521 - 如果监听未启动,执行
lsnrctl start来启动监听;如果监听配置中没有VISEBS条目,需要修改listener.ora并重启监听
4. 正确执行tnsping命令
在目标服务器VISEBST上,确保使用正确的命令格式:
- 基础命令:
tnsping VISEBS - 如果你的Oracle客户端配置了多个
tnsnames.ora路径,或者默认路径不是你修改的文件,可以指定配置文件路径:tnsping VISEBS /path/to/your/tnsnames.ora
5. 检查Oracle环境变量配置
在目标服务器VISEBST上,确认相关环境变量是否正确设置:
- 执行
echo $ORACLE_HOME和echo $TNS_ADMIN,检查ORACLE_HOME是否指向正确的Oracle客户端/服务器安装目录,TNS_ADMIN是否指向tnsnames.ora所在的目录 - 如果
TNS_ADMIN未设置,Oracle会默认从$ORACLE_HOME/network/admin读取配置文件,确保这个路径下的tnsnames.ora是你修改后的完整版本
内容的提问来源于stack exchange,提问作者Gopi Krishna
相关产品推荐
相关产品推荐

