【问题标题】:Connect MS SQL Server database to Oracle 11g database将 MS SQL Server 数据库连接到 Oracle 11g 数据库
【发布时间】:2017-03-18 10:56:05
【问题描述】:

我正在努力创建从 Oracle 数据库到一个 SQL Server 的数据库链接。

为此,我添加了以下内容:

在文件tnsnames.ora:

sqlUserConn =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
      (CONNECT_DATA=(SID=sqlUserConn))
      (HS=OK)
    )

在文件listener.ora

(SID_DESC=
  (SID_NAME=sqlUserConn)
  (ORACLE_HOME=C:\oraclexe\app\oracle\product\11.2.0\server)
  (PROGRAM=dg4odbc)
)

在文件sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES = (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) 

在文件initsqlUserConn.ora

HS_FDS_CONNECT_INFO = sqlUserConn
HS_FDS_TRACE_LEVEL = OFF

文件tnsnames.ora、sqlnet.ora和listener.ora放在**server\network\admin**,initsqlUserConn.ora放在**server\hs\admin**

我有如下sql语句:

CREATE DATABASE LINK sqlUserConn CONNECT TO "USER" IDENTIFIED BY "PASSWORD" USING 'sqlUserConn';

然后为了测试数据库链接,我正在运行类似于:

Select * from table@sqlUserConn

此命令引发以下错误:

ORA-12154: TNS: 无法解析指定的连接标识符

显然,我做错了什么..但我还是不明白..它应该可以工作,因为我看到很多用户这样做

有人能指出将 SQL Server 数据库链接到 Oracle 11g 的正确解决方案吗?

【问题讨论】:

  • 你是不是在oracle box上创建了数据源名称DSN,指向sql server数据库?它是孤立的吗? lsnrctl status 说明了什么?
  • 我对Oracle数据库比较陌生,所以我不知道“oracle box”是什么意思。如果您是从Windows引用系统DSN,是的,我已经创建了一个名为的系统DSN sqlUserConn。我试图 tnsping 它但仍然没有机会..
  • TNS 监听器(及其配置)仅处理与 Oracle 服务器的连接。 DBLink 也可以连接到 Oracle。
  • 好的,我想我可能已经弄清楚了:首先,DSN 是在 32 位架构上设置的,其次我必须重新启动 PC,因为 lsnrctl 重新加载或 lsnrctl 停止然后启动是实际上并没有做任何事情,现在,使用上面的这些信息,一切正常
  • "oracle box" - 运行 oracle 实例的位置(约 20 个后台进程:smon、pmon 等)。很难回答你的问题。我的 Windows 系统管理员同事正在重新启动以解决问题。这是您在 *nix 平台上避免的事情。日志文件将指导您解决问题。

标签: sql-server oracle oracle11g


【解决方案1】:

首先,确保您使用的是正确的 DSN 架构(32 位或 64 位)。如果使用不正确的架构,它将引发错误。 Windows 上的 Oracle 有一个奇怪的行为,因此命令 lsnrctl reload 或什至使用 lsnrctl stop 然后 lsnrctl start 不会有助于刷新放置在指定文件(tnsnames、侦听器等)中的信息。所以唯一的解决办法是重启,然后检查 dblink 是否正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-03
    • 2011-05-21
    • 1970-01-01
    • 2011-09-01
    • 2013-11-24
    • 2014-04-22
    • 2021-01-14
    • 1970-01-01
    相关资源
    最近更新 更多