不敢相信我不得不问这个问题,但我不能为我的生活连接到Oracle 11g数据库.
以下在使用时起作用System.Data.OracleClient- 但显然这是折旧的.使用完全相同的代码但使用时Oracle.DataAccess.OracleClient我得到以下错误
{"ORA-12545: Connect failed because target host or object does not exist"}
Run Code Online (Sandbox Code Playgroud)
这是我的代码
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]);
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决我做错的事吗?
我必须将程序更改为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))
Run Code Online (Sandbox Code Playgroud)
UPDATE
我尝试使用Oracle Sql开发人员进行连接.只要我使用TNS连接类型,这就行,但如果我使用Basic连接类型则不起作用.
另外我注意到在我的服务中有2个叫
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,很久以前我可能已经安装了这个,但是如果引起问题,我现在肯定不需要它
谢谢
编辑
让我们尝试一些别的东西。
It's possible that ODP.NET doesn't know where to find your Oracle Home because it is not defined in your PATH environment variable, or if it is not set in the registry.
Check your PATH and make sure it contains your Oracle Home directory, and "Oracle Home\bin". For the registry, look for HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\. In it there should be a key called HOME0 with a string value of ORACLE_HOME. Make sure it points to your Oracle Home.
| 归档时间: |
|
| 查看次数: |
82635 次 |
| 最近记录: |