You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLPlus:TNS格式与常规连接参数的差异及连接失败问题

SQLPlus两种连接方式的差异及连接失败排查

两种SQLPlus连接方式的核心差异

1. 完整TNS描述符连接

这种方式直接传递完整的Oracle网络连接参数,无需依赖本地tnsnames.ora配置:

sqlplus user/pass@"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.70.44.28)(PORT=1521)))(CONNECT_DATA=(SID=mdm)(SERVER=DEDICATED)))"
  • 特点:参数完全明确,指定了TCP协议、目标IP/端口、SID、服务器模式(DEDICATED),客户端直接按配置建立连接,无额外解析逻辑。

2. 简易EZCONNECT格式连接

这是Oracle提供的简化连接语法,省略了完整TNS结构:

sqlplus user/pass@10.70.44.28:1521:mdm
  • 特点:客户端会自动将该字符串解析为TNS描述,但解析过程中会触发反向DNS查询(即使输入的是IP地址),依赖客户端的DNS或本地hosts配置。

连接失败原因分析

简易格式连接失败(报错ORA-12545)的核心原因在于跟踪日志中的nttbnd2addr: *** hostname lookup failure! ***:

  • 简易EZCONNECT格式的解析逻辑:Oracle客户端会尝试对输入的IP地址执行反向DNS解析,获取对应的主机名,若本地DNS服务器无法完成反向解析,或客户端未配置正确的hosts映射,就会触发主机名查找失败,最终返回ORA-12545(目标主机或对象不存在)。
  • 完整TNS描述符连接无此问题:因为该方式明确指定HOST=10.70.44.28,客户端直接使用IP建立TCP连接,不会触发反向DNS查询,因此能正常连接。

解决方法

  • 继续使用完整TNS描述符连接(已验证可行)
  • 禁用客户端反向DNS解析:在Oracle客户端的sqlnet.ora文件中添加以下配置:
    SQLNET.NO_DNS=ON
    
    该参数会阻止客户端对IP地址执行反向DNS查询,修复EZCONNECT格式的连接问题。
  • 配置本地hosts映射:在客户端机器的hosts文件中添加目标IP与任意主机名的映射(例如10.70.44.28 oracle-mdm),确保反向解析能成功。

内容的提问来源于stack exchange,提问作者ValeryC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:52:55