Oracle 數據庫的透明網關( transparent gateway )是這樣的壹個接口:通過它,我們可以 sqlplus 操縱其他數據庫,如 ms sqlserver 、 sybase 、 infomix 等,實現數據庫的異構服務。我壹直在找 8i 的透明網關,但是沒有; 9i 就有了, 9 i 連接 sqlserver 的透明網關在 9i for nt/2000 的安裝盤上。
本文以 oracle 連接 sqlserver 為例,敘述壹下配置的主要步驟。
網絡結構
服務器壹: sqlserver , ip 為 147.25.8.1 , port 為 1433 ;
服務器二: oracle 9i server 和透明網關, ip 為 147.25.8.11 , port 為 1521 ;
服務器三: oracle server , ip 為 147.25.8.111 , port 為 1521 ;
客戶機: sqlnet + sqlplus ,或其他客戶端軟件。
安裝 / 配置 oracle 9i server 和透明網關
安裝: 在服務器二上安裝 9i server for nt/2000 ,必須選擇透明網關( transparent gateway for ms sqlsvr )。
在服務器二上安裝 sqlsvr 的客戶端程序。
配置: 在服務器二上正常配置 listener , port 口為 1521 ;
在服務器二上配置 listener.ora ,在 SID_LIST 中加入:
( SID_NAME = SID_NAME ) ——— 自己修改
( ORACLE_HOME = 《 ORACLE_HOME 》)
( PROGRAM = tg4msql ) ———- 這是透明網關的目錄
在服務器二上配置透明網關的配置文件(《 ORACLE_HOME 》 \tg4msql\admin\initSID_NAME.ora ),明確:
HS_FDS_CONNECT_INFO = “SERVER = 147.25.8.1;DATABASE = pubs”
在服務器二上配置 sqlsvr 的客戶連接:
SERVER NAME = SERVER NAME ——– 自己修改
SERVER = 147.25.8.1
PORT = 1433
PROTOCOL = TCP/IP SOCKET
在服務器三上配置 tnsnames.ora ,加入壹個 tns :
MSSQL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 147.25.8.11)
(PORT = 1521)))
(CONNECT_DATA =
(SID = SID_NAME)) ——–SID 自己修改(與上文壹致)
(HS = OK)
)
測試
服務器壹: 啟動 sqlserver ,確認用戶 sa 及其密碼(或另外建用戶、建表)。
服務器二: 啟動 listener 。 oracle 數據庫不需要啟動。
服務器三: sqlplus scott/tiger
create database link mssql connect to sa identified by password using ‘mssql’;
select * from sales@mssql;
如果無誤,配置透明網關成功。
其他
使用透明網關只可以用標準的 DML ;
服務器壹二三還可以是壹個服務器,也可以任意組合成兩個服務器;但是服務器二所在的服務器必須是 windows nt/2000 server 平臺;
透明網關可以同時連接多個 sqlsvr ,方法是加入多個 SID_LIST 和相應的 initSID_NAME.ora 配置文件;
可能會遇到中文字符顯示成亂碼的情況,這可能是由於 sqlsvr 的服務器和客戶端的程序不是壹個版本引起的。我正在測試。