Oracle

連結伺服器的 Oracle 等效項是什麼,您可以加入 SQL Server 嗎?

  • February 9, 2022

在 SQL Server 中,我可以使用連結伺服器創建一個視圖,該視圖是位於完全不同伺服器中的兩個表之間的連接。如果我將其中一台伺服器從 SQL Server 更改為 Oracle,我還能這樣做嗎?

我需要連接表在 Oracle 中

是的你可以。

在 Oracle 中,這稱為*“異構連接”* 這個 Oracle 管理手冊有詳細資訊。

本文詳細介紹了執行上述步驟的範例案例。

基本大綱是:

  1. 在 Oracle 伺服器上安裝 ODBC 驅動程序
  2. 配置 ODBC 以與 SQL Server DB 通信(創建系統 DSN)
  3. 測試 ODBC
  4. 將 Global_Names 參數配置為 false。
  5. 創建 initodbc.ora 文件來配置異構服務
  6. 修改 listener.ora 以連接到 Oracle 和 ODBC 驅動程序
  7. 修改 tnsNames.ora 文件
  8. 重新載入偵聽器以查看上述更改。
  9. 創建從 Oracle 到 ODBC 連接的 DB 連結。
  10. 通過 SQL Select 語句進行測試。

下面是我創建數據庫連結的方法,以便我可以從我的 Oracle 數據庫連接到 SQL Server。

我現有的環境:

  • 執行 Oracle 12c 並安裝了 Oracle Database Gateway for ODBC 組件的 Windows 伺服器。(要檢查,請查看 Oracle 數據庫伺服器。如果 %ORACLE_HOME%\BIN\dg4odbc.exe存在,則可能已經安裝了數據庫網關。)Oracle 實例在我們的組織中可執行且功能齊全,因此非常重要listener.oratnsnames.ora文件配置正確。我跑過去Select * from v$parameter where name = 'global_names'確認該值為false.
  • 執行 Microsoft SQL Server 的單獨 Windows 伺服器。這就是我想從我的 Oracle DB 連接的內容。我配置了一個 SQL Server 身份驗證登錄名(使用者名/密碼)以供從 Oracle 連接時使用,並確保它具有對我要查詢的 SQL Server 數據庫的必要訪問權限。

腳步

  1. 在託管 Oracle 數據庫的 Windows 伺服器上,我打開了 ODBC(64 位)並創建了一個指向我的 Microsoft SQL Server 的系統 DSN。我對其進行了測試,並且連接成功。(提示:確保在此 DSN 連接中將要連接的數據庫設置為預設數據庫,因為如果您有多個數據庫,它可能是 可以從 Oracle 連結訪問的唯一數據庫。)
  2. init?????.ora我在目錄中創建了一個名為的文件%ORACLE_HOME%\hs\admin\,其中?????是我在步驟 1 中創建的系統 DSN 的名稱。該文件包含以下幾行:
HS_FDS_CONNECT_INFO=<System DSN name>
HS_FDS_TRACE_LEVEL=off
  1. 編輯了我listener.ora位於的文件%ORACLE_HOME%\NETWORK\ADMIN\。已經有一堆SID_DESC項目嵌套在(SID_LIST_LISTENER = (SID_LIST = 其中……我們需要為我們的 ODBC 系統 DSN 添加一個(正確嵌套):
(SID_DESC =
 (PROGRAM = dg4odbc) 
 (ORACLE_HOME = <path to your ORACLE_HOME>)
 (SID_NAME = <System DSN name>)
)
  1. 在我的文件中創建了一個條目tnsnames.ora(與 位於同一目錄中listener.ora):
<Whatever name we give this connection>=
 (DESCRIPTION=
   (ADDRESS=
     (PROTOCOL=TCP)
     (HOST=localhost)
     (PORT=1521)
   )
   (CONNECT_DATA=(SID=<System DSN name>))
     (HS=OK)
)
  1. 在 SQL*Plus 或 SQL Developer 中,我創建了一個數據庫連結。這是我輸入連接到目標 SQL Server 所需的憑據的地方:
CREATE PUBLIC DATABASE LINK <Name of DB Link> 
CONNECT TO "user" IDENTIFIED BY "password" 
USING '<Name we gave the connection in tnsnames.ora>';
  1. 打開提升的命令提示符並通過執行lsnrctl stop然後重新啟動 Oracle 偵聽器服務lsnrctl start (不應該影響連接的使用者……)
  2. 打開 SQL Developer 並通過對現在連結的 SQL Server 數據庫執行查詢來對其進行測試(受用於訪問它的帳戶的訪問權限限制)。
--Basic ODBC connectivity test:
select * from dual@<Name we gave link in Step 5>

SELECT * FROM SomeTable@<Name we gave link in Step 5>;

SELECT * FROM <optional schema.>SomeTable@<Name we gave link in Step 5>;

可以在此處找到適當的 Oracle 文件。

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