1

我有一个令人沮丧的错误。我正在从 Winforms 应用程序和 Asp.net 页面连接到 Oracle(或尝试)。
Winforms - 没问题,Asp.Net - 很多问题。

我得到的错误(从 IIS 运行)是:

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

对我来说,这条消息可能表明我的连接字符串错误或 Oracle 已关闭,或防火墙问题,但我使用的是同一台机器上的 Winforms 工作的相同连接字符串和代码。

知道其他可能导致此错误的想法吗?

失败的代码:

string conn = "User Id=172.xx.xx.xxx ;Password=xxx;Data Source=(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=xx)(PORT=1521)) (CONNECT_DATA=(SID=xxx))); 
OracleConnection oc = new OracleConnection(conn);

编辑:
全栈:

ORA-12545: Connect failed because target host or object does not exist 
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

     Exception Details: Oracle.DataAccess.Client.OracleException: ORA-12545: Connect failed because target host or object does not exist

Source Error: 


 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 



[OracleException (0x80004005): ORA-12545: Connect failed because target host or object does not exist]
   Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) +1563
   Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src) +59
   Oracle.DataAccess.Client.OracleConnection.Open() +4899
   UDWWeb.Pages.Availability.Button1_Click(Object sender, EventArgs e) +49
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
4

3 回答 3

1

而不是在数据源中提供这样的 Tns。将其放入(Oracle 客户端文件夹)-> 产品-> 网络 -> 管理员 -> tnsnames.ora 文件中。

然后您可以像使用 Sql 数据源一样使用 OleDbConnection。例如:

Provider=OraOLEDB.Oracle.1;Password=***;Persist Security Info=True;User ID=***;Data Source=DataSource_Name_in_TNS_File
于 2013-09-20T08:23:55.477 回答
1

首先,执行以下检查:

1.) making sure that your listener is running (lsnrcrl stat)
2.) testing connectivity with ping, and then tnsping.
3.) verifying connectivity via the DNS (e.g. /etc/hosts)
4.) make sure to check your tnsnames.ora parms.

确保ADDRESS参数输入正确;最可能不正确的参数是节点名称。确保服务器的可执行文件存在。如果协议是 TCP/IP,请编辑 TNSNAMES.ORA 文件以将主机名更改为数字 IP 地址,然后重试。

最后,再次检查您的 ConnectionString。例如,当使用 asp.net 时,它的格式如下所示。(Web.config 示例)

<add name="OracleConnectionString"
  connectionString="Data Source=OracleServer1;Persist 
    Security Info=True;Password="******";User ID=User1"
  providerName="System.Data.OracleClient" /> 

检查此详细说明。

于 2013-09-20T08:31:08.833 回答
1

我也遇到了同样的问题,该应用程序正在我的本地 PC 上运行,但是当我将它上传到服务器上时,我遇到了同样的错误。

我只是通过在我的连接字符串中写入完整的主机名来解决它,例如host=abcd.exchange.com。不要写一个短名称,如host=abcd.

于 2014-11-06T17:30:19.093 回答