不敢相信我必须问这个问题,但是我终生无法连接到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/