【问题标题】:Error in creating a DBLINK Oracle to SQL Server创建 DBLINK Oracle 到 SQL Server 时出错
【发布时间】:2020-09-25 12:37:11
【问题描述】:

我正在创建 DBLINK Oracle(11gR2)(Windows Server 2008) 到 SQL Server(Windows 10)。

我已经安装了 Oracle 网关。

我在 ODBC 数据源管理器中创建了一种数据字体,并且连接正常。他的名字是 Integra。

我修改了文件 listener.ora、tnsnames.ora、sqlnet.ora 和 initIntegra.ora。

按照我的设置:

服务器 Oracle 无 IP:192.168.1.22

Server SQLServer no Ip: 192.168.1.18

Listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
(SID_DESC =
  (SID_NAME = CLRExtProc)
  (ORACLE_HOME = D:\app\product\11.2.0\dbhome_1)
  (PROGRAM = extproc)
  (ENVS = "EXTPROC_DLLS=ONLY:D:\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
  (SID_NAME = CLRExtProc)
  (ORACLE_HOME = D:\app\product\11.2.0\dbhome_1)
  (PROGRAM = extproc)
  (ENVS = "EXTPROC_DLLS=ONLY:D:\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
  (SID_NAME = )
  (ORACLE_HOME = D:\app\product\11.2.0\dbhome_1)
  (PROGRAM = dg4odbc)
)
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = Serverlab3)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = D:\app

tnsnames.ora

Integra =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = Integra)
    )
  )

initIntegra.ora

# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC
#
# HS init parameters
#
#
HS_FDS_CONNECT_INFO= Integra
#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>

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)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

创建 DBLINK

CREATE DATABASE LINK INTEGRA CONNECT TO "sa" IDENTIFIED BY "senha" USING 'Integra';

select * from tabela@INTEGRA;

SQL 错误 [28546] [99999]:ORA-28546:连接初始化失败,可能是 Net8 管理员错误。 ORA-02063: INTEGRA 的前一行*

注意:我在 ODBC 管理器中的数据源名称是 Integra。并且ODBC windows 管理员的连接测试工作完美。

一个问题: 在 TNSNAMES 中,HOST 必须是 LOCALHOST 和 PORT 1521?

谢谢。

【问题讨论】:

  • 请用英文发帖。
  • @desertnaut 怎么了?
  • 除了您的帖子不是英文,您的意思是(在编辑之前)?我不确定,没有仔细看...
  • @desertnaut 我已经更新了英文版
  • 我看到了;我不明白你为什么问“出了什么问题”,因为你可能已经知道了。

标签: oracle odbc listener dblink tnsnames


【解决方案1】:

我发现太多问题无法在评论中列出。有些与您的问题有关,有些只是表示粗心或不理解。

您的网关是安装在 Oracle 机器、MSSQL 机器还是其他机器上?我问是因为它很可能安装在任何地方。在我的商店中,我有多个指向多个 MSSQL 数据库的 oracle 链接,我的网关位于“中性”机器上。就像我说的,没关系,如果通信路径的每个链接都在走,我们需要保持直线。

  1. 在 listener.ora 的 SID_LIST 部分中,'SID_NAME = CLRExtProc' 有两个相同的条目

  2. 在 listener.ora 的 SID_LIST 部分中,没有 SID_NAME "(SID_NAME = )" 似乎是网关条目。

  3. 在 listener.ora 中,您使用 (HOST=Serverlab3) 配置了侦听器。 Serverlab3 是否解析为 IP 地址?

  4. 数据库的ORACLE_HOME/network/admin中的tnsnames.ora是否有db链接?

  5. 您显示的 tnsnames 条目具有“(HOST = localhost)”。这意味着请求将循环回请求机器并转到地址 127.0.0.1。您可能应该更正它以指定侦听器的实际主机名或 IP 地址。

  6. 在您的 tnsames 中,您通过服务名称指定了连接。使用网关时,这是您应该指定 SID 的一种情况。

您问过“一个问题:在 TNSNAMES 中,HOST 必须是 LOCALHOST 和 PORT 1521”。 HOST 必须指定运行监听器和网关的主机。 PORT 必须是配置侦听器的端口,很少有充分的理由将其设置为 1521 以外的任何端口。

我在https://edstevensdba.wordpress.com/2018/09/19/the-oracle-transparent-gateway/有一个更长的文章,附有图片

【讨论】:

  • 对,正在响应项目。 1)好的。 2)在我的环境中我是对的,我只是复制错了。 3) 是的,出于隐私原因,我将其缩写。 4) 好的 5) 好的,已更正。 6) 好的,已更正。我基本上遵循了您的链接,并且效果很好。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多