oracle11g gateway for sql server2005配置

guyuanli發表於2009-12-30

最近一個專案用到了透明閘道器,這裡把配置過程簡單記錄下來,供大家參考。

oracle的透明閘道器是oracle直接訪問異構資料庫的利器。在9i中,透明閘道器是包含在資料庫安裝程式中的,在安裝資料庫軟體過程中可以選擇;10g和11g中,oracle把透明閘道器獨立出來,需要單獨下載安裝。

本文主要討論在oracle下如何配置透明閘道器去訪問sqlserver資料庫。在11g之前,for sqlserver的透明閘道器只能安裝在windows作業系統上,從11g開始,for sqlserver的透明閘道器也可以安裝在linux/unix系統中。

在本例中,涉及到二個伺服器:
ORACLE DB伺服器: OS: solaris + ORACLE 11060 IP: 10.10.10.1

SQLSERVER伺服器: OS: WINDOWS 2003 + SQLSERVER 2005 IP: 10.10.10.2

[@more@]

如果ORACLE DB伺服器作業系統是WINDOWS的話,可以把透明閘道器安裝在ORACLE資料伺服器上。

下面是詳細步驟:
一、透明閘道器連線到一個sqlserver上

1、下載透明閘道器
11g下,透明網管是一個單獨的元件,需要單獨下載安裝。

2、安裝
在10.10.10.1安裝透明閘道器:
解壓後,進入目錄,點選setup.exe,啟動安裝介面,安裝oracle transparent gateway for microsoft sql server;
下一步,輸入sqlserver地址和sqlserver 資料庫名,這裡你可以輸入正確的,也可以隨便輸入,或者留空,我們可以安裝完成後再配置。
安裝完後,會彈出配置監聽介面,因為我們要手工配置,點選取消即可。

3、在10.10.10.1配置透明閘道器引數檔案

預設情況下,安裝透明閘道器時會生成一個預設的引數檔案:initdg4msql.ora,它的sid是tg4mssql,你可以使用這個檔案,也可以新建一個檔案。本例選擇新建檔案。
進入$ORACLE_HOME/dg4msql/admin目錄我這裡是:/oracle/product/11.1.0.6/Db_1/dg4msql/admin

新建這個檔案:initjss.ora,把它理解為oracle的引數檔案就可以,檔案格式為init.ora。
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server

#
# HS init parameters
#
HS_FDS_CONNECT_INFO= gfyxxstjxt:1433//jss

# alternate connect format is hostname/serverinstance/databasename
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

HS_FDS_CONNECT_INFO的設定有多種格式,如:
HS_FDS_CONNECT_INFO=server_name.db_name,但這種寫法server_name不能為IP,且埠必須為預設的1433,如:
HS_FDS_CONNECT_INFO=sqlserver.jss

注意:這裡面/etc/hosts檔案的內容是
::1 localhost
127.0.0.1 localhost
10.10.10.1 i2dev i2dev.hisense.com loghost
10.10.10.2 gfyxxstjxt

4、在10.10.10.1配置監聽
進入$ORACLE_HOME/network/admin下,編輯listener.ora檔案:
# listener.ora Network Configuration File: /oracle/product/11.1.0.6/Db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = i2dev)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = Jacktj)
(ORACLE_HOME = /oracle/product/11.1.0.6/Db_1)
(PROGRAM = dg4msql)
)
(SID_DESC =
(SID_NAME = jss)
(ORACLE_HOME = /oracle/product/11.1.0.6/Db_1)
(PROGRAM = dg4msql)
)
)

5、啟動監聽
/oracle/product/11.1.0.6/Db_1/bin/lsnrctl start

/oracle/product/11.1.0.6/Db_1/bin/lsnrctl start
監聽端點概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=suk)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc)))
服務摘要..
服務 "PLSExtProc" 包含 1 個例程。
例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
服務 "jss" 包含 1 個例程。
例程 "jss", 狀態 UNKNOWN, 包含此服務的 1 個處理程式...
命令執行成功

至此,在透明閘道器上的工作就算完成了。

6、在10.10.10.1上配置tnsname.ora

新增如下內容:

db =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.41.123)(PORT = 1521))
)
(CONNECT_DATA = (SID = jss))
(HS=OK)
)

7、在10.10.10.1建立資料庫連結

SQL> create database link dbjss connect to 使用者名稱 identified by "密碼" using 'db';

8、在10.10.10.1測試連線

SQL> select * from ;

當從oracle資料庫上發出這個sql時,實際上透過tnsname.ora配置的jss資訊轉到10.10.10.2上,當10.10.10.2的監聽監聽到10.10.10.1的請求時,再次透過initjss.ora配置的HS_FDS_CONNECT_INFO資訊轉到sqlserver資料庫上,最終把使用者需要的資料返回。

如果這個sql有記錄返回,說明透明閘道器沒有問題。


總結一下:

在這次安裝過程中遇到了兩個錯誤:

1.ORA-28500 這個問題是initdg4msql.ora檔案中的HS_FDS_CONNECT_INFO引數要寫成如下格式:

HS_FDS_CONNECT_INFO=://
並且埠一定要指定
2.ORA-28545 這個問題是tnsnames.ora和listener.ora中的SID名稱和要和init.ora檔名中的SID對應

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7490392/viewspace-1030128/,如需轉載,請註明出處,否則將追究法律責任。

相關文章