Oracle
連結伺服器的 Oracle 等效項是什麼,您可以加入 SQL Server 嗎?
在 SQL Server 中,我可以使用連結伺服器創建一個視圖,該視圖是位於完全不同伺服器中的兩個表之間的連接。如果我將其中一台伺服器從 SQL Server 更改為 Oracle,我還能這樣做嗎?
我需要連接表在 Oracle 中
是的你可以。
在 Oracle 中,這稱為*“異構連接”* 這個 Oracle 管理手冊有詳細資訊。
本文詳細介紹了執行上述步驟的範例案例。
基本大綱是:
- 在 Oracle 伺服器上安裝 ODBC 驅動程序
- 配置 ODBC 以與 SQL Server DB 通信(創建系統 DSN)
- 測試 ODBC
- 將 Global_Names 參數配置為 false。
- 創建 initodbc.ora 文件來配置異構服務
- 修改 listener.ora 以連接到 Oracle 和 ODBC 驅動程序
- 修改 tnsNames.ora 文件
- 重新載入偵聽器以查看上述更改。
- 創建從 Oracle 到 ODBC 連接的 DB 連結。
- 通過 SQL Select 語句進行測試。
下面是我創建數據庫連結的方法,以便我可以從我的 Oracle 數據庫連接到 SQL Server。
我現有的環境:
- 執行 Oracle 12c 並安裝了 Oracle Database Gateway for ODBC 組件的 Windows 伺服器。(要檢查,請查看 Oracle 數據庫伺服器。如果
%ORACLE_HOME%\BIN\dg4odbc.exe
存在,則可能已經安裝了數據庫網關。)Oracle 實例在我們的組織中可執行且功能齊全,因此非常重要listener.ora
且tnsnames.ora
文件配置正確。我跑過去Select * from v$parameter where name = 'global_names'
確認該值為false
.- 執行 Microsoft SQL Server 的單獨 Windows 伺服器。這就是我想從我的 Oracle DB 連接的內容。我配置了一個 SQL Server 身份驗證登錄名(使用者名/密碼)以供從 Oracle 連接時使用,並確保它具有對我要查詢的 SQL Server 數據庫的必要訪問權限。
腳步
- 在託管 Oracle 數據庫的 Windows 伺服器上,我打開了 ODBC(64 位)並創建了一個指向我的 Microsoft SQL Server 的系統 DSN。我對其進行了測試,並且連接成功。(提示:確保在此 DSN 連接中將要連接的數據庫設置為預設數據庫,因為如果您有多個數據庫,它
可能是您可以從 Oracle 連結訪問的唯一數據庫。)init?????.ora
我在目錄中創建了一個名為的文件%ORACLE_HOME%\hs\admin\
,其中?????
是我在步驟 1 中創建的系統 DSN 的名稱。該文件包含以下幾行:HS_FDS_CONNECT_INFO=<System DSN name> HS_FDS_TRACE_LEVEL=off
- 編輯了我
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>) )
- 在我的文件中創建了一個條目
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) )
- 在 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>';
- 打開提升的命令提示符並通過執行
lsnrctl stop
然後重新啟動 Oracle 偵聽器服務lsnrctl start
(不應該影響連接的使用者……)- 打開 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 文件。