【问题标题】:BizTalk WCF ORA-12154: TNS:could not resolve the connect identifier specifiedBizTalk WCF ORA-12154: TNS: 无法解析指定的连接标识符
【发布时间】:2018-06-29 19:46:31
【问题描述】:

我有一个 BizTalk 2013r2 应用程序,其 WCF-Oracle 发送端口在 32 位主机下运行。

在我的测试环境中运行时,它运行良好。但是,在我的开发盒上,我收到以下错误:

“ORA-12154: TNS: 无法解析指定的连接标识符”

发送端口上设置的地址是 "oracledb://test_godw_lincoln/" 。我的理解是ip地址和端口应该从本地的tnsnames.ora文件中解析出来。我正确设置了 TNS_ADMIN 的系统环境变量:

在命令提示符下,如果我输入“set tns_admin”,则会显示以下内容:

TNS_ADMIN=C:\app\biztalk.admin\product\12.1.0\client_1\Network\Admin

如果我打开文件“C:\app\biztalk.admin\product\12.1.0\client_1\Network\Admin\tnsnames.ora”,则会看到以下条目:

test_godw_lincoln =
   (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xxx.xx.xx)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = gotest) 
    )
  )

(我已经替换了真实IP地址)

如果我在同一个开发虚拟机上打开 Sql Developer,那么我可以使用 tnsname 条目“test_godw_lincoln”打开与所需数据库的连接:

我意识到可以不使用 tnsnames.ora 从适配器寻址 Oracle,但我知道如果要使用环境事务(应用程序确实使用它们),那么地址必须通过 tnsnames.ora

关于如何找出这个特定 VM 问题的原因有什么建议吗?

来自 Dmitir 的问题 - 注册表为空:

来自 Felix 的建议 - 我能够从 Visual Studio 服务器资源管理器在同一开发服务器上创建连接:

但是,如果我尝试从“使用适配器服务”向导(添加生成的项目)进行连接,则会收到 ORA-12154 错误:

【问题讨论】:

  • 检查您的系统环境变量 TNS_ADMIN 是否具有正确的值,而不是用户环境变量。
  • 感谢您的评论 Felix 但是是的,它是一个系统环境变量
  • 嗨 Ravi,我从这里运行了 Sql,得到了 SID=329 和 SYS_CONTEXT=gotest。不知道这有什么帮助。我怀疑问题的根本原因可能是一些 64 / 32 位库不匹配 - 但这只是一个猜测
  • 尝试在连接字符串中指定来自tnsnames.ora "oracledb:// (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xxx.xx.xx)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = gotest)))"的DB的完整描述

标签: oracle biztalk tnsnames


【解决方案1】:

在所有这些更改之后,您是否重新启动了主机实例?

【讨论】:

  • 是的,我已经重新启动了发送端口的主机实例 - 没有变化:(
  • 重要的是不要忘记!这会强制 BizTalk 重新加载程序集及其设置,可能会重新加载 oracle 连接设置。感谢您的意见!
【解决方案2】:

也尝试不使用 tnsname 进行连接,连接字符串格式如下:host:port/database_name

【讨论】:

  • 是的,我可以使用替代格式进行连接,但我需要知道为什么我无法通过此 VM 上的 tnsnames 进行连接 - 而我可以通过来自不同 VM 的 tnsnames 连接到同一个数据库。
  • 这是因为连接必须通过需要环境事务的 tnsnames 进行。
  • 好。这个环境变量怎么样: TNS_ADMIN = /home/oracle/network/admin ,它已经添加了吗?还尝试在其他环境中测试您的 tns 条目,以确保格式正确(并更改连接字符串数据)
【解决方案3】:

这归结为 tnsnames.ora 文件的一个神秘问题。 @Hichamveo 的建议有所帮助,而是在工作环境中尝试我的错误 tnsnames.ora 文件,我从有效的环境中复制了 tnsnames 文件。我发现 dev VM 然后开始工作 - 所以我知道问题出在 tnsnames.ora 文件而不是 ODAC / ODP.Net 程序集。

然后,我花了相当长的时间试图弄清楚坏 tnsnames 文件到底出了什么问题。我使用了文件比较工具并在http://brantwills.github.io/tns-check/ 尝试了一个 linter,但这些都没有问题。

【讨论】:

  • 太棒了。很高兴我的贡献有助于进步:)
猜你喜欢
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
相关资源
最近更新 更多