架構
Oracle Client → Listener → TG4MSQL (Gateway Process) → ODBC Driver → SQL Server
建置步驟
- 安裝 Gateway:OUI 自定義安裝 → 選擇 `Oracle Transparent Gateway` → 選 `Microsoft SQL Server` 組件。
- 配置 Gateway 初始化檔(`$ORACLE_HOME/tg4msql/admin/inittg4msql.ora`):
HS_FDS_CONNECT_INFO = "SERVER=YIRONG-NO1;DATABASE=JSoct"
HS_FDS_TRACE_LEVEL = OFF
HS_FDS_RECOVERY_ACCOUNT = RECOVER
HS_FDS_RECOVERY_PWD = RECOVER
- 可用 Migration Workbench 輔助配置(內建 ODBC DSN 建立)。
- 修改 Listener.ora 註冊 Gateway SID:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC = (SID_NAME=PLSExtProc) (ORACLE_HOME=F:\Oracle\ora92) (PROGRAM=extproc))
(SID_DESC = (GLOBAL_DBNAME=ora9i2) (ORACLE_HOME=F:\Oracle\ora92) (SID_NAME=ora9i2))
(SID_DESC = (GLOBAL_DBNAME=tg4msql) (PROGRAM=tg4msql) (SID_NAME=tg4msql) (ORACLE_HOME=F:\Oracle\ora92))
)
- 建立 TNS 服務名(`tnsnames.ora`):
TG4MSQL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
(CONNECT_DATA = (SID=tg4msql))
(HS = OK)
)
- 建立 Public Database Link(用 SQL Server 認證):
CREATE PUBLIC DATABASE LINK oratoSql
CONNECT TO "sa" IDENTIFIED BY "lanwei"
USING 'TG4MSQL';
- 驗證:
SELECT * FROM sysobjects@oratoSql;
SELECT * FROM mytable@oratoSql;
關鍵點提醒
- Gateway 程式 `tg4msql.exe` 必須在 `ORACLE_HOME/bin` 下,Listener 啟動時會拉起。
- ODBC DSN 需在系統層面建立(System DSN),Gateway 讀取 `HS_FDS_CONNECT_INFO` 字串直連,不依賴 DSN 名稱,但驅動程式必須安裝(SQL Server Native Client / ODBC Driver 17/18)。
- 分散式交易支援需配置 `HS_FDS_RECOVERY_ACCOUNT/PWD` 並確保 MSDTC 服務啟動。
- 字符集轉換:Gateway 依 `NLS_LANG` 與 SQL Server 校對規則轉碼,中文環境建議雙端統一 `ZHS16GBK` / `Chinese_PRC_CI_AS`。
遷移至 12c/19c
- Gateway 獨立安裝包併入 `Oracle Database Gateway for ODBC` (DG4ODBC),通用性更強,支援任意 ODBC 資料源。
- 配置邏輯相同,初始化檔參數前綴統一為 `HS_`。