Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ORA-12557 TNS:无法加载协议适配器_C#_Database_Oracle_Visual Studio_C# 4.0 - Fatal编程技术网

C# ORA-12557 TNS:无法加载协议适配器

C# ORA-12557 TNS:无法加载协议适配器,c#,database,oracle,visual-studio,c#-4.0,C#,Database,Oracle,Visual Studio,C# 4.0,我正试图开发一个针对.NET4框架的C#WindowsForms应用程序。该程序将对Oracle数据库执行一个存储过程,当我尝试打开与数据库的连接时,会出现以下错误 ORA-12557 TNS:无法加载协议适配器 我在VisualStudio2012中开发了这个程序,并成功地使服务器资源管理器连接到数据库,但是我通过应用程序不断收到这个错误 我的机器上有两个Oracle 11g客户端。一个是32位,另一个是64位。我需要两个不同的应用程序,所以它是不可能删除一个。我还尝试在PATH变量中更改Or

我正试图开发一个针对.NET4框架的C#WindowsForms应用程序。该程序将对Oracle数据库执行一个存储过程,当我尝试打开与数据库的连接时,会出现以下错误

ORA-12557 TNS:无法加载协议适配器

我在VisualStudio2012中开发了这个程序,并成功地使服务器资源管理器连接到数据库,但是我通过应用程序不断收到这个错误

我的机器上有两个Oracle 11g客户端。一个是32位,另一个是64位。我需要两个不同的应用程序,所以它是不可能删除一个。我还尝试在PATH变量中更改Oracle主目录的顺序。目前我有一个64位的第一,这是一个我想连接

我正在使用ODP.NET将我的应用程序连接到数据库,并引用了64位应用程序中的dll


据我所知,我已经按照建议做了,但还没有成功地使它发挥作用。如果有人能提供帮助,我们将不胜感激。

ORA-12577错误与Windows环境或Oracle Home PATH有关,因为当我在Oracle_Home\bin中执行sqlplus命令时,该命令运行平稳。 这是因为两个或多个oracle安装(如数据库和配套)在该计算机上的单独oracle_主页中,在您的窗口中取消了oracle_主页值 有关详细信息,请按照以下步骤进行操作,希望您能够获得解决方案。

基本问题是Oracle instant client安装中缺少DLL,而RDBMS服务器安装中存在应用程序所需的DLL。这就是为什么将Oracle homes从client_1切换到db_1是可行的,而不是纯粹的路径问题


sqlplus在这两种情况下都可以工作,因为它使用了两种Oracle安装中都存在的最小DLL集。

这里有一些东西需要检查。如果需要的话,别忘了试试,它能帮我解决问题

  • 确保所有Oracle服务都已启动
  • 确保设置了环境变量(路径,ORACLE\u SID=ORALOCAL,TNS\u ADMIN=C:\Dev\ORACLE\product\11.2.0\dbhome\NETWORK\ADMIN)
  • 尝试按如下方式移动路径环境变量值: “D:\Dev\Oracle\product\11.2.0\dbhome\bin”位于 顺序中的“D:\dev\Oracle\product\11.2.0\client\u 32\bin”

  • 对我来说,我正在使用IIS.net提供程序。我能够通过将oracle64放在oracle32之前来修复sqlplus的问题。这并没有解决.net的问题。我有使用oracle32和oracle64的应用程序。要解决此问题,注册表项HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\ORACLE必须指向\oracle32 home,HKEY\U LOCAL\U MACHINE\SOFTWARE\ORACLE必须指向\ORACLE(64)home。

    我已经阅读了本文,并尝试在PATH变量中更改ORACLE\U home的顺序,如上所述。这很可能是沿着这些路线发生的事情,但在路径中更改它们并不能解决它。好吧,James,我也遇到了同样的问题,我安装了home/db_1 for db install,然后安装home/client_1。在客户端安装后进入系统变量,并将路径从home/client_1更改为home/db_1,但没有收到错误。您是对的。我还必须删除我添加的ORACLE_HOME变量。最有可能解决的另一个问题,我有希望在某个时候不会再出现。然而,将路径按正确的顺序排列是可行的。另一个问题是,在重新启动VisualStudio之前,我没有意识到更新PATH变量不会在我的程序中生效。谢谢为了将来的目的,可能还值得一提的是,我有一个客户机1和客户机2,而不是客户机和数据库。我必须先将client_1 home目录放在前面,然后将client_1 bin目录放在任何client_2目录之前。虽然这对某些人来说可能很明显,但我必须更新ORACLE_home的注册表项。我的环境变量路径都是正确的,但在我的例子中,注册表设置都是为Oracle32而不是Oracle64设置的。注册表位置:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_或Client11g_Home1这不是因为您从“客户端”主页切换到了“数据库”主页。这是因为您从即时客户机主页切换到了具有完整运行时客户机的主页,而数据库主页具有完整的运行时客户机。如果您的客户端home安装了“运行时”客户端而不是“即时”客户端,我敢打赌它会工作。