首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ODP .NET试图连接ORA-12154错误

使用ODP .NET试图连接ORA-12154错误
EN

Stack Overflow用户
提问于 2015-12-10 16:13:41
回答 3查看 16.2K关注 0票数 11

使用ODP .NET试图连接ORA-12154错误

更新:韦恩弗里德的回答为我修正了它。

创建环境变量TNS_ADMIN=D:\oracle\product\12.1.0\dbhome_1\network\admin Sqlplus从注册表读取TNS_ADMIN,但ODP.NET托管驱动程序不读取注册表。另见:OdbcConnection returning Chinese Characters as "?"

您可以检查环境变量是否由以下方法设置:

代码语言:javascript
复制
string tns_admin = Environment.GetEnvironmentVariable("TNS_ADMIN")

我不太明白他提出的联系是如何相关的。

原始问题:

使用ODP .NET试图连接ORA-12154错误

守则:

代码语言:javascript
复制
  OracleConnection oracleConnection = new OracleConnection();
  string connectionString = "User Id=redacted;Password=redacted;Data Source=db6";
  oracleConnection.ConnectionString = connectionString;
  oracleConnection.Open();

错误:

代码语言:javascript
复制
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Oracle.ManagedDataAccess.Client.OracleException: ORA-12154: TNS:could not resolve the connect identifier specified ---> OracleInternal.Network.NetworkException: ORA-12154: TNS:could not resolve the connect identifier specified
   at OracleInternal.Network.AddressResolution..ctor(String TNSAlias, String instanceName)
   at OracleInternal.Network.OracleCommunication.DoConnect(String tnsDescriptor)
   at OracleInternal.Network.OracleCommunication.Connect(String 

我的tnsnames.ora:

代码语言:javascript
复制
# tnsnames.ora Network Configuration File: D:\oracle\product\12.1.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

DB6 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = redacted.redacted.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = db6)
    )
  )

LISTENER_DB6 =
  (ADDRESS = (PROTOCOL = TCP)(HOST = redacted.redacted.com)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

与sql+连接:

代码语言:javascript
复制
C:\Users\Derek.Morin\Documents\Visual Studio 2010\Projects\ScriptCode\Oracle>sqlplus redacted/redacted@localhost/db6

SQL*Plus: Release 12.1.0.1.0 Production on Thu Dec 10 09:10:14 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Last Successful login time: Tue Sep 22 2015 09:41:19 -05:00

Connected to:
Oracle Database 12c Release 12.1.0.1.0 - 64bit Production
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-03 11:19:37

韦恩弗里德的评论帮我解决了问题。因为他没有回来发帖作为回答--我将以他的评论结束这篇文章。

创建环境变量

代码语言:javascript
复制
TNS_ADMIN=D:\oracle\product\12.1.0\dbhome_1\network\admin

sqlplus从注册表读取TNS_ADMIN,但ODP.NET托管驱动程序不读取注册表。另见stackoverflow.com.…/质询/28280883/…-12月10日‘15日16:24

票数 9
EN

Stack Overflow用户

发布于 2018-05-01 01:17:47

我同意杰夫的意见。几天来我一直在努力想办法解决这个问题,这是关键。我搜索了服务器上所有现存的tnsnames.ora文件,重新命名了所有不在%ORACLE_HOME/network/admin中的文件,一切才刚刚开始工作!

我最近卸载了32位Oracle驱动程序并重新安装了64位驱动程序.在短时间内,唯一的tnsnames.ora文件是示例文件(在示例子目录中).也许坏链接(必须在注册表中,我一直都有TNS_ADMIN环境变量)是在这一点上伪造的?不确定,但即使变量似乎对某些人有帮助,但在这个问题上,水可能很混浊。

票数 2
EN

Stack Overflow用户

发布于 2016-06-22 00:23:24

注意:我在一个使用ODP.Net的SSRS项目中遇到了这个问题,在我的例子中,ODP.Net将我的TNS默认为"C:\Program (x86)\Oracle Developer Tools for of 2015\network\admin“(尽管我有一个用于其他方面的TNS_ADMIN环境变量)。我进入该目录,将示例tnsnames.ora和sqlnet.ora文件重命名为不同的文件(即垃圾-tnsnames.ora),它开始工作。太疯狂了!希望这能帮到别人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34206659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档