在oracle中通過鏈接服務器(dblink)訪問sql server
2013-10-16
一、 工作環境:
<1> Oracle數據庫版本:Oracle 11g 運行環境 :IBM小型機 AIX 6.1
<2> SQL數據庫版本: SQL 2005 R2 運行環境: HP DL 580 G6
二、 操作方式:利用透明網關,建立dblink ,訪問SQL SERVER
- 1. 透明網關簡介
ORACLE實現異構服務的技術叫做透明網關(Transparent Gateway),利用透明網關可以實現和SQL SERVER、SYBASE、DB2等多種數據庫的互聯。因此透明網關也是Oracle數據倉庫和數據遷移中的一個重要組成部分。
透明網關的體系結構也很簡單,在ORACLE和SQL SERVER之間使用ORACLE透明網關服務器實現互連互通,其中透明網關服務器可以與ORACLE或SQL SERVER數據庫在同一台主機上,也可以是在獨立的一台主機上。
- 2. 透明網關安裝
首先在官網上先下載個透明網關。網址(11g):
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
據說10g和11g的要單獨下,9i的安裝光盤里面有。另外找不到10g的透明網關,不確定11g的透明網關能否用於10g的數據庫,本地環境無法測試。
- 3. [安裝步驟]
步驟這里就不一個個截圖了,基本就是“下一步”,下面是選組件的,選SQL SERVER的就可以了。安裝結束后有監視器的設置,可以直接跳過。
三、
[透明網關目錄:D:\app\HIS_LK\product\11.2.0\tg_1\]
[Oracle目錄:D:\app\HIS_LK\product\11.2.0\dbhome_1]
- 4. 配置透明網關的監聽listener.ora
其中listener.ora便是監聽文件,配置他即可。
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = #SID是監聽的標識,這個是默認名稱,用了配本地的SQL SERVER (SID_NAME = dg4msql) (PROGRAM = dg4msql)#默認不變 (ORACLE_HOME = D:\app\HIS_LK\product\11.2.0\tg_1)#透明網關安裝目錄 #(GLOBAL_DBNAME = dg4msql) ) (SID_DESC = #SID是監聽的標識,這個是新名稱,用了配遠程SQL SERVER (SID_NAME = kftest) (PROGRAM = dg4msql) (ORACLE_HOME = D:\app\HIS_LK\product\11.2.0\tg_1) #(GLOBAL_DBNAME = dg4msql) ) )
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = #host是透明網關服務器,可用ip。 #port為端口,oracle本身使用了1521端口,這里用1522 (ADDRESS = (PROTOCOL = TCP)(HOST = HIS_LK-PC)(PORT = 1522)) ) )
|
- 5. 配置透明網關的數據庫文件
Admin文件夾下默認存在安裝透明網關時的數據庫文件initdg4msql.ora。
數據文件命名規則:init+ SID(SID就是第3步中配置的SID_NAME),需要多個連接就建多個文件即可。
initdg4msql.ora文件內容:
#注意,連接的開頭不需要server=,網上很多寫了這個,其實不用寫,寫了會報錯 HS_FDS_CONNECT_INFO="HIS_LK-PC\\MYMSSQL;DATABASE=THIS4_TEST" HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER
|
initkftest.ora文件內容:
HS_FDS_CONNECT_INFO="172.16.40.117\\MSSQLSERVER2008;DATABASE=THIS4_TEST" HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER
|
1. 6. 配置服務器的服務名配置文件tnsnames.ora
Oracle目錄文件夾
在tnsnames.ora文件中增加以下內容即可
DG4MSQL =#名稱,可自擬,這里和SID取成一樣, (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = HIS_LK-PC)(PORT = 1522)) ) (CONNECT_DATA = (SERVICE_NAME = dg4msql) ) (HS = OK) ) kftest = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = HIS_LK-PC)(PORT = 1522)) ) (CONNECT_DATA = (SERVICE_NAME = kftest) ) (HS = OK) )
|
1.7. 創建服務器連接
語法
CREATE DATABASE LINK 連接名 CONNECT TO "user" IDENTIFIED BY "password" USING 'tg4msql'
|
舉例:
CREATE DATABASE LINK kftest CONNECT TO "sa" IDENTIFIED BY " " USING ' kftest'
[說明]
這邊很郁悶,oracle不讓輸入空密碼,這里輸了個空格,測試的時候改了下sa的登錄密碼。這個沒查處理方法。
刪除連接語法
DROP PUBLIC DATABASE LINK 連接名
|
1.8. 查詢測試
select * from wz_kfmck@kftest
請參考:在SQL Server 2005中連接Oracle,完成查詢、插入操作(SQL中訪問Orcale)