6

当我尝试连接 Oracle 数据库时发现错误 Visual studio 2010

http://i.stack.imgur.com/BtIKu.jpg

http://i.stack.imgur.com/q6ffE.jpg

这是 TNSNAMES.ORA:

TNS_ALIAS=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =188.11.32.22)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

这是 sqlnet.ora

# sqlnet.ora Network Configuration File: F:\app\user\product\11.2.0\client_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# 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)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

我现在该怎么办??

4

3 回答 3

4

设置 Connection 字符串的 DataSource 属性时需要使用简写版本。TNSNames 文件中的条目将转换为此

var conBuiler = new OracleConnectionStringBuilder();
//DataSource = "HOST:PORT/SERVICE_NAME"
conBuilder.DataSource = "example.domain.com:1521/x99.domain.com"
conBuilder.UserId = "SomeUser";
conBuilder.Password = "Password123";

var orCon = new OracleConnection(conBuilder.ConnectionString);
于 2014-08-14T18:10:21.253 回答
4

这是旧帖子,但由于我处于同样的情况,而且这个论坛在谷歌搜索中排名靠前,所以我决定发布我的解决方案。

我尝试向 Oracle 服务器发送 XML 请求并从一个实例中获取:ORA-12504: TNS:listener is not given the SERVICE_NAME in CONNECT_DATA

问题出在 FQDN service_name 中。它试图通过 EZCONNECT 解决它,但在 Oracle 11g 中,EZCONNECT 根本不发送服务名称。

解决方案: 1. 在 "$ORACLE_HOME\database\network\admin\sqlnet.ora" 中只使用 NAMES.DIRECTORY_PATH 中的 TNSNAMES,如:

NAMES.DIRECTORY_PATH= (TNSNAMES)
  1. 在“$ORACLE_HOME\database\network\admin\tnsnames.ora”中创建一个带有 FQDN 的附加部分。喜欢:

    示例 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = example.domain.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = x99.domain.com) (SID=X)) )

    Example.DOMAIN.COM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = example.domain.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = x99.domain.com) (SID =X)))

  2. 使用 tnsping utilite ping 两个名称: 1) tnsping 示例;2) tnsping example.domain.com - 两个名字都必须回答。

注意!使用您自己的 HOST、SERVICE_NAME 和 SID ;)

我希望它可以帮助某人。

BR

劳尔

于 2014-01-16T20:28:41.477 回答
0

我在连接到 oracle 即时客户端时遇到了类似的问题,1) 在 Suse/Redhat 机器中连接到 Oracle 时出现问题使用 <export TWO_TASK=//xxxx.xxx.xxxx.xxxx:1521/service_name> xxx.xxx.xxx -> 代表服务器名称/地址

这里的服务名称是在 Oracle 中创建并在 tnsnames.ora 文件中引用的数据库

下面是 tnsnames.ora 文件的内容 ORDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = server_name)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORDB) )

2) 相同的问题在 Solaris Sparc 机器中以不同的方式解决。

更新 ../odbc.ini 文件

[dsn_name]

添加服务器名称参数

于 2018-04-24T06:10:50.483 回答