Oracle 透明閘道 可讓 Oracle 資料庫透過異質服務 直接存取非 Oracle 資料來源(如 SQL Server)。本文記錄實際部署流程,涵閘道初始化參數、Listener 註冊、DB Link 建立與視圖封裝,供同類異質整合專案參考。
gedi-oainfo / lzmisuser / sa / JSjadmin)10.122.88.7(Oracle Home: E:\OraHome_1)eip_user_vIEw路徑:E:\OraHome_1\tg4msql\admin\initLZMISUSER.ora
HS_FDS_CONNECT_INFO = "SERVER=gedi-oainfo;DATABASE=lzmisuser"
HS_FDS_TRACE_LEVEL = OFF
HS_FDS_RECOVERY_ACCOUNT = RECOVER
HS_FDS_RECOVERY_PWD = RECOVER
關鍵參數:HS_FDS_CONNECT_INFO 需與 ODBC 系統 DSN 連線字串一致。
路徑:E:\OraHome_1\network\admin\listener.ora
(SID_DESC =
(GLOBAL_DBNAME = LZMISUSER)
(SID_NAME = LZMISUSER)
(PROGRAM = tg4msql)
(ORACLE_HOME = E:\OraHome_1)
)
若 Oracle Home 路徑不同(如本機 D:\Oracle\product\10.2.0\tg_1),請依實際安裝位置調整 ORACLE_HOME 參數。
lsnrctl stop
lsnrctl start
lsnrctl status
確認 LZMISUSER 狀態為 READY。
DROP DATABASE LINK LZMIS.US.Oracle.COM;
CREATE DATABASE LINK LZMIS.US.Oracle.COM
CONNECT TO SA IDENTIFIED BY JSJADMIN
USING '(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.122.88.7)(PORT = 1521)))
(CONNECT_DATA = (SID = LZMISUSER))
(HS = OK)
)';
HS = OK 告訴 Oracle 這是異質連線,必須透過閘道處理。
CREATE OR REPLACE VIEW v_lz_user AS
SELECT TRIM("UG_UserGrpName") UG_USERGRPNAME,
TRIM("room") ROOM,
TRIM("SU_UserName") SU_USERNAME,
TRIM("SU_UserCode") SU_USERCODE
FROM eip_user_vIEw@lzmis.us.Oracle.com;
應用端只需查詢 v_lz_user,無需知悉遠端結構與 DB Link 細節。
ALTER TABLE EIP_SYS_USER ADD HRUSER VARCHAR2(2);
COMMENT ON COLUMN EIP_SYS_USER.HRUSER IS '資料是否來自 HR,''y'' 是,''n'' 否';
HS_FDS_CONNECT_INFO 中的分號 ; 若在 Windows 批次檔中需雙寫 ;; 或用雙引號包裹。1521(Listener)與 SQL Server 預設 1433 連接埠。完成上述步驟後,Oracle 即可透過透明閘道無縫存取 SQL Server 資料,實現跨平台資料整合。