Oracle错误:TNS:侦听器未在CONNECT_DATA 1中获得SERVICE_NAME

Sol*_*ion 6 .net sql oracle

当我尝试连接Oracle数据库时,我发现错误Visual stutio 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)
    )
  )
Run Code Online (Sandbox Code Playgroud)

这是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)
Run Code Online (Sandbox Code Playgroud)

我现在应该怎么做??

小智 4

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

我尝试向 Oracle 服务器发送 XML 请求,并从一个实例获取: ORA-12504: TNS:listener was 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)
Run Code Online (Sandbox Code Playgroud)
  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) ) )

    示例.域.COM = (描述 = (地址列表 = (地址 = (协议 = TCP)(主机 = example.domain.com)(端口 = 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

劳尔