.Net ODAC 11g 异常 - >> ora-12514:TNS:侦听器当前不知道连接描述符中请求的服务



我们有一个32位的.Net windows应用程序,它使用ODAC 10g(1.x)连接到后端的10g数据库。此部署中一切正常。

我们正在建立一台新的开发机器。这台机器上安装了ORACLE 11g(64位)。我们在连接数据库时遇到问题。

这是我们用来连接数据库的代码块:

dataString = "user id=xxx;password="xxx";data source=localhost:1521/ORCL";
using (OracleConnection oraconn = new OracleConnection(dataConn))
{
    oraconn.Open();
    Oracle.DataAccess.Client.OracleCommand cmd = new OracleCommand(sOraSQL, oraconn);
    cmd.CommandType = CommandType.Text;
    Oracle.DataAccess.Client.OracleDataAdapter da = new OracleDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    oraconn.Close();
    return dt;
}

我们在"oraconn.Open()"命令上得到一个异常

ora-12514:TNS:侦听器当前不知道连接描述符中请求的服务

TNSNAMES.ORA文件如下所示:

# tnsnames.ora Network Configuration File: C:appDjMproduct11.2.0dbhome_1    networkadmintnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.168.1.100)
    )
  )

这就是SQLNET.ORA文件的样子:

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES = (NTS)

连接字符串如下所示:

"user id=xxx;password="xxx";data source=localhost:1521/ORCL"

注意:

我们能够运行SQLDeveloper并指向相同的SID(ORCL),我们可以很好地连接到DB实例。

我们还能够在原来的机器上安装11g 32位ODAC,它在那里工作得很好。

这必须是与tnsnames相关的配置或类似的东西。

尝试使用连接字符串,如:

Data Source=ORCL;User Id=User;Password=Password;

以下是oracle的更多示例。

最新更新