【问题标题】:Connecting Oracle to SQL Server via database link通过数据库链接将 Oracle 连接到 SQL Server
【发布时间】:2011-09-01 01:18:53
【问题描述】:

我正在尝试从 Oracle 10G(在 UNIX 上)连接到 SQL Server 数据库(在 Windows 上)。我看过手册,我承认我发现文档很难理解。似乎有几个选项可供使用,但没有文档描述每个选项的工作原理。

作为一个例子,我得到了以下关于我需要连接的数据库(即 SQL Server 数据库)的信息

  • 用户名
  • 密码
  • 数据库名称 [假设数据库名称为 data_extract]

为了连接上面我做了以下更改

$ORACLE_HOME/hs/admin/inithsodbc.ora

  HS_FDS_CONNECT_INFO = data_extract
  HS_FDS_TRACE_LEVEL = 0

$ORACLE_HOME/network/admin/tnsnames.ora

  sqlserver.db =
          (DESCRIPTION =
                  (ADDRESS = (protocol=tcp)(host=10.10.10.10)(port=49400))
                          (connect_data = (sid=data_extract))
                          (hs=ok)
          )

$ORACLE_HOME/network/admin/listener.ora

  LISTENER =
    (DESCRIPTION_LIST =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = merlin)(PORT = 1525))
      )
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
    )

  SID_LIST_LISTENER =
    (SID_LIST =
      (SID_DESC =
        (SID_NAME = PLSExtProc)
        (ORACLE_HOME = /u/app/oracle/product/10.2.0/db)
        (PROGRAM = extproc)
      )
      (SID_DESC =
        (GLOBAL_DBNAME = db1.mydb.co.uk)
        (ORACLE_HOME = /u/app/oracle/product/10.2.0/db)
        (SID_NAME = billdb)
      )
      (SID_DESC =
          (SID_NAME = data_extract)
          (ORACLE_HOME = /u/app/oracle/product/10.2.0/db)
          (program = hsodbc)
      )
    )

注意:在 listener.ora 中,我只添加了最后一个 SID_DESC 条目。

然后我继续创建数据库链接,如下所示

  create database link sqlservdb using 'sqlserver.db';

当我尝试访问表时,出现以下错误

  sqlplus> select * from TESTTABLE@sqlservdb;
  select * from TESTTABLE@sqlservdb
                             *
  ERROR at line 1:
  ORA-28545: error diagnosed by Net8 when connecting to an agent
  Unable to retrieve text of NETWORK/NCR message 65535
  ORA-02063: preceding 2 lines from ORASQLSERVER

我不确定的几件事

  • 从oracle db到sql server db访问sql server的用户名和密码在哪里指定
  • 在 Internet 上阅读后,我可以看到一些人引用了 DSN 数据源。我被告知,我所拥有的信息就是我所需要的。这是正确的还是我需要别的东西?
  • 我在 inithsodbc.ora 和 tnsnames.ora 中指定的 sid 实际上是 sql server 数据库。它是否正确?

任何有关上述内容的帮助将不胜感激。谢谢

【问题讨论】:

  • 你的oracle数据库运行在什么平台上?
  • Oracle 10G 在 Unix 上运行,SQL Server 数据库在 Windows 上运行。谢谢
  • 您是否尝试提供用户/密码? CREATE DATABASE LINK sqlservdb CONNECT TO myuser IDENTIFIED BY mypass USING 'sqlserver.db'; 您是否尝试使用不带点的连接名称(例如 sqlserver)?
  • 有人可以确认我是否需要安装第 3 方驱动程序才能正常工作。我在几篇文章中看到相互矛盾的信息。

标签: sql-server database oracle heterogeneous-services


【解决方案1】:

我使用了必须在 Oracle UNIX 机器上配置的 Data Direct 驱动程序。您必须在 UNIX 中创建 ODBC 连接才能看到 SQL Server。 (至少我一直是这样做的)

【讨论】:

    【解决方案2】:

    为了创建到 SQL Server 的数据库链接,您必须将连接名称和密码用双引号括起来,如下所示:

    create database link mysqlink 
    connect to "myuser" identified by "mypassword" using 'servername';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 2017-03-18
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      相关资源
      最近更新 更多