一、環境
公司網站系統使用的是IIS + Oracle
但公司某系統使用的是Sqlserver 2000, 但其數據需要做成報表放到網站上,為簡化編程,使用Oracle做透明網關,定期從Sqlserver 抓取數據的方式
A: Web Server
B: Oralce DB Server
C: Sqlserver 2000 DB Server
- OS: Windows Server 2003
- IP: 10.108.5.100
- 安裝軟體: Sqlserver 2000
這里面A和C的安裝配置都很簡單,主要說下B機器 Oracle透明網關的配置
二、Oracle透明網關配置
1. gateway安裝
當然是要先安裝好我們的Oracle DB,做好其它業務。然后再來安裝Gateway
2. 配置 E:\Oracle\product\11.2.0\tg_1\dg4msql\admin\initdg4msql.ora
HS_FDS_CONNECT_INFO=[10.108.5.100].MSSQLSERVER.SQLDB HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER
Oracle Gateway在此文件中默認將sqlserver 2000的IP,實例名,數據庫名以 / 分隔,這種設置后續會報錯,改為以 . 分隔則OK
#HS_FDS_CONNECT_INFO=[10.108.5.100]/MSSQLSERVER/SQLDB
3. 配置E:\Oracle\product\11.2.0\tg_1\NETWORK\ADMIN\listener.ora
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = dg4msql) #此處為配置文件SID,要與initdg4msql.ora中的名字對應 (ORACLE_HOME = E:\Oracle\product\11.2.0\tg_1) (PROGRAM = dg4msql) #此處為配置文件目錄名稱,Oracle 11g中都為dg4msql,不需變更(注1) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.108.3.20)(PORT = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522)) ) ) ADR_BASE_LISTENER = E:\Oracle\product\11.2.0\tg_1
注1:如果將此處的dg4msql變掉,在最后通過Oracle訪問SQL SERVER時會報以下錯誤
ORA-28545: 連接代理時 Net8 診斷到錯誤
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: 緊接着 2 lines
4. 配置E:\Oracle\product\11.2.0\tg_1\NETWORK\ADMIN\tnsnames.ora
dg4msql = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.108.3.20)(PORT = 1522)) ) (CONNECT_DATA = (SERVICE_NAME = dg4msql) ) (HS = OK) )
5. 配置E:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = E:\Oracle\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:E:\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) #以下是其它業務的DB (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = E:\Oracle\product\11.2.0\dbhome_1) (SID_NAME = ORCL) ) #以下是透明網關的設置 (SID_DESC = (SID_NAME = dg4msql) (ORACLE_HOME = E:\Oracle\product\11.2.0\dbhome_1) (PROGRAM = dg4msql) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.108.3.20)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) ADR_BASE_LISTENER = E:\Oracle
6. 配置E:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
dg4msql = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.108.3.20)(PORT = 1522)) ) (CONNECT_DATA = (SERVICE_NAME = dg4msql) ) (HS = OK) ) ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) )
7. 建立DB link
-- Create database link create database link SQLSERVERLINK connect to sa identified by password using 'dg4msql';