Sql-Server

逐步建立SQL Server 2014和Oracle 12c之間的連接

  • November 28, 2016

我有兩台伺服器(兩台伺服器都在 Windows 作業系統上):

  1. Server_A執行 Oracle 12c
  2. Server_B執行 SQL Server 2014

我希望這些伺服器能夠互相看到,所以我可以從中選擇任何我想要的東西Server_AServer_B反之亦然。

希望能夠執行 SELECT 查詢(不是 INSERT、UPDATE、DELETE 或任何 DDL 查詢),並且如果可能的話還希望能夠執行程序。

我們有什麼選擇或技術來解決這個問題,哪一個更好?

告訴我是否必須在每台伺服器上設置我必須安裝的任何軟體或任何配置。

我很感激逐步解釋說明。

部分答案(從 Oracle 中選擇 SQL Server 表):

在 Oracle 端,您可以創建一個數據庫連結來查看 SQL Server 中的數據。由於這是一個 5 步過程,因此我還包括了一些調試步驟,我在從 SQL Server 診斷數據庫連結時使用這些步驟來追踪故障所在。

在 Oracle 機器上:

1) 設置到 SQL Server 的 ODBC 連接

開始 => 控制面板 => 管理工具 => 數據源 (ODBC) => 系統 DSN => 添加 => SQL Server)

調試:按下 ODBC 連接視窗中的測試連接按鈕

2)創建指向ODBC連接的HS文件

在 %oracle_home%\hs\admin 中,創建一個名為init<name>.ora. 一個典型的 HS 文件通常只包含:

HS_FDS_CONNECT_INFO = <name of the ODBC connection name>
HS_FDS_TRACE_LEVEL = OFF

調試:更改 HS_FDS_TRACE_LEVEL = ON,然後在 %oracle_home%\hs\trace 中檢查相應的跟踪文件

3) 在 listener.ora 中添加一個條目

如果 SID_LIST_LISTENER 中已經存在 SID_DESC,您可以在其下方添加一個新的。

SID_LIST_LISTENER =
 (SID_LIST=
   (SID_DESC=
     (SID_NAME=...)
     (ORACLE_HOME=...)
     (PROGRAM=...)
   )
   (SID_DESC=
     (SID_NAME=<name of the ODBC connection>)
     (ORACLE_HOME=<full path for oracleHome>)
     (PROGRAM=dg4odbc)
   )
 )

調試:檢查監聽器日誌

c:> lsnrctl 重新載入

4) 添加一個 TNSEntry

<Name> =
  (DESCRIPTION=
     (ADDRESS=(PROTOCOL=TCP)(HOST=<Host>)(PORT=<port>))
     (CONNECT_DATA= (SID=<ODBC connection name>))
     (HS=OK)
  )

調試c:\> tnsping <tns entry name>

5)創建數據庫連結

create database link <name> connect to DUMMY identified by " " using '<tns entry name>';

調試:SQL> select * from dual@<dblinkname>;

在 10g 之前,我們曾經能夠簡單地create database link <name> using '<tns entry>';但是connect as identified by從 11g 開始該部分成為必需的,即使您輸入的任何內容都沒有使用(因為它在 ODBC 連接中使用 SQL Server 的登錄憑據)。

它有點舊,但是當我學習這個過程時,我發現以下教程非常有幫助:Installing and configure Oracle Heterogeneous Services for SQLServer

一旦數據庫連結正常工作,在 Oracle 端,您就可以在 SQL Server 表上創建視圖/同義詞/物化視圖(僅完全刷新)以便於訪問。

至於其他方式(如何從 SQL Server 查看 Oracle 中的數據),我不確定,因為我只是 Oracle DBA ……

引用自:https://dba.stackexchange.com/questions/111985