从Oracle 12c到SQLServer 2012的异构数据库链接

时间:2017-07-06 08:06:38

标签: sql-server oracle odbc

我的问题:我想将Oracle 12c Enterprise与SQLServer 2012连接起来。我尝试了不同的教程,但我没有成功。在我使用异构服务的最新方法中,当我尝试查询某些内容时出现以下错误:

从conf @ PAS中选择​​;

ORA-28545:无法检索NETWORK / NCR消息65535的文本

conf是SQL Server中的一个表,PAS是我的数据库链接的名称。

我遵循的不同指南说我必须更改3个文件才能建立连接。我将在下面发布:

注意:我的两个数据库都在同一台机器上运行。

的listener.ora:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\OracleDB\product\12.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\OracleDB\product\12.1.0\dbhome_1\bin\oraclr12.dll")
    )
    (SID_DESC =
        (SID_NAME=PAS) 
        (ORACLE_HOME = C:\OracleDB\product\12.1.0\dbhome_1) 
        (PROGRAM = dg4odbc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = PASSRV1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

的tnsnames.ora:

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = PASSRV1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

PAS =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1433))
      (CONNECT_DATA=(SID=PAS))
      (HS=OK)
    )

initPAS.ora:

HS_FDS_CONNECT_INFO = PAS
HS_FDS_TRACE_LEVEL = OFF

我使用此命令创建了链接:

CREATE DATABASE LINK PAS CONNECT TO "user" IDENTIFIED BY "password" USING 'PAS';

问题是,我并不是真的知道错误的原因,我也不知道如何解决它。所以我希望你们中的一个可以帮助我。

如果有更简单的方法来创建链接,如果你告诉我,我将不胜感激。我愿意接受建议。

谢谢!

2 个答案:

答案 0 :(得分:0)

我通过使用oracle网关并按照简单的教程解决了这个问题。

答案 1 :(得分:0)

我以前遇到类似问题,请先尝试tnspingPAS

cmd> tnsping PAS

如果您没有任何问题,请尝试更改PAS 1433的端口SQL Server已在默认配置中使用。尝试启动监听器,没有任何错误。

考虑到SQL Server的oracle数据库网关有额外的成本,如果从oracle安装install cd 5,您可能会遇到oracle audit的问题。