2011年10月13日

讓 Oracle 也可以連結 SQL Server 讀取資料

要如何讓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;

2 則留言:

  1. 您好,請問一下SQL Server 資料庫伺服器主機名稱和SQL Server 資料庫有何不同,這個地方我不太清楚我要填什麼??
    那一個要填SQL Server 的個體識別碼??
    SQL Server 資料庫伺服器主機名稱指的是電腦名稱嗎??

    回覆刪除