不敢相信我必须问这个问题,但是我终生无法连接到Oracle 11g数据库。

以下在使用System.Data.OracleClient时有效-但显然已弃用了。
当使用完全相同的代码但使用Oracle.DataAccess.OracleClient时,出现以下错误

{"ORA-12545: Connect failed because target host or object does not exist"}

这是我的代码
using (OracleConnection con = new OracleConnection("Data Source=orac;User Id=SYSTEM; Password=Pass;"))
        {
            con.Open();
            Console.WriteLine("Connection opened");

            OracleCommand cmd2 = new OracleCommand("SELECT * FROM SYSTEM.TABLE", con);
            OracleDataReader oracleDataReader = cmd2.ExecuteReader();

            while (oracleDataReader.Read())
            {
                Console.WriteLine(oracleDataReader[0]);
            }
        }

有人可以帮我解决我做错的事情吗?

我必须将程序更改为32位才能加载Oracle.DataAccess.dll

这甚至是要使用的正确库吗???

谢谢

编辑

tnsnames.ora文件如下:
# tnsnames.ora Network Configuration File:
C:\app\UserName\product\11.2.0\dbhome_3\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORAC =
 (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
(CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orac.example.com)
)
 )

LISTENER_ORAC =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))

更新

我尝试使用Oracle Sql开发人员进行连接。只要我使用TNS连接类型,此方法就起作用,但如果使用基本连接类型,则不起作用。

我也注意到在我的服务中有两个叫

OracleOraDb11g_home1TNSListener
OracleOraDb11g_home2TNSListener

我相信orac dbhome是home3,这可能是问题吗?
如果是这样,有人知道我将如何解决它吗?

谢谢

更新
在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\中,有两个属性(默认)和inst_loc。有几个文件夹,其中两个分别称为“KEY_OraDb11g_home1”和“KEY_OraDb11g_home2”,它们都包含一个名为ORACLE_HOME的属性,它们是:

KEY_OraDb11g_home1-ORACLE_HOME = C:\app\UserName\product\11.2.0\dbhome_2
KEY_OraDb11g_home2-ORACLE_HOME = C:\app\UserName\product\11.2.0\dbhome_3

home1中Db的SID是一个称为OracleDev的东西,我可能很早以前就已经安装了它,但是如果它引起了问题,我现在肯定不需要它了。

谢谢

最佳答案

编辑

让我们尝试其他事情。

ODP.NET可能不知道在哪里可以找到Oracle Home,因为它不是在 PATH环境变量中定义的,或者未在注册表中设置的。

检查您的PATH,并确保它包含您的Oracle Home目录和“Oracle Home\bin”。对于注册表,请查找HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\。其中应该有一个名为HOME0的键,其字符串值为ORACLE_HOME。确保它指向您的Oracle Home。

关于c# - ORA-12545 : Connect failed because target host or object does not exist - No error on System. Data.OracleClient,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18252635/

10-17 00:47