要如何讓Oracle也可以整合 MS SQL Server 呢? 在Oracle有提供一套工具,10g版本稱之為 Oracle Transparent Gateway,到了11g之後改名為 Oracle Database Gateway,如果有購買Oracle DB的話,官方是可以免費提供使用的,不需額外購買,主要是讓Oracle可以做 DB-Link 。提供了許多異質資料庫的整合,詳細可查閱 Oracle Database Gateway 文件說明檔。
到 Oracle 官方網站下載,然後安裝 Oracle Database Gateway,選擇你所需要連結的資料庫類型。
再來就是預設會幫你建立一個連結設定
然後直接安裝就可以了,要一段時間
再來就是修改二個重要的檔案,首先是在 oracle\product\11.2.0\ts_1\dg4msql\admin,會有一個initdg4msql.ora檔。
修改為
HS_FDS_CONNECT_INFO=127.0.0.1//ERP
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
然後再修改檔案名稱initdg4msql.ora改為自已喜歡的 initerp.ora。
第二個檔案就是修改 oracle\product\11.2.0\tg_1\NETWORK\ADMIN\ 裡面的listener.ora檔。
直接在最下面加上
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=erp)
(ORACLE_HOME=D:\Oracle\product\11.2.0\tg_1)
(PROGRAM=dg4msql)
)
)
之後再重新啟動 LISTENER。
lsnrctl stop (停止)
lsnrctl start (啟動)
這樣就完成了 Oracle Database Gateway 的安裝和設定了。
再來就是第二部份,Oracle主機的部份。
首先就是要先建立連線服務的名稱,修改Oracle主機 oracle\product\11.2.0\dbhome_1\network\admin 的tnsnames.ora檔。
在最底下增加
ERP =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))
(CONNECT_DATA=(SID=erp))
(HS=OK)
)
最後就是建立DB-Link,在SQL PLUS下指令,我試sa帳號好像不能使用,不過還是建議建立一個帳號比較好。
CREATE PUBLIC DATABASE LINK ERP CONNECT TO user IDENTIFIED BY password USING 'erp';
測試看看吧~~
select * from table_name@erp;
有結果啦~~
需要注意 Oracle 的所有 Object 英文是不區分大小寫的,但是 SQL Server 是有大小寫之分,
當執行 SQL 指令時, Oracle 會自動轉換為大寫的方式來執行,
必需要加上雙引號 " 的方式才能夠找到正確的 Table 名稱。
select * from "table_name"@erp;