Oracle 11g透明網關連接Sqlserver 2000


一、環境

公司網站系統使用的是IIS + Oracle

但公司某系統使用的是Sqlserver 2000, 但其數據需要做成報表放到網站上,為簡化編程,使用Oracle做透明網關,定期從Sqlserver 抓取數據的方式

A: Web Server

  • OS: Windows Server 2008
  • IP: 10.108.3.10
  • 安裝軟體:IIS, Oracle Client
  • image

B: Oralce DB Server

  • OS: Windows Server 2008
  • IP: 10.108.3.20
  • 安裝軟體: Oracle DB, Oracle Gateway
  • image

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

image

image

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';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM