Oracle透明網關的使用
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 配置文件;
安裝步驟
1、在透明網關服務器上安裝組件;
2、按以下格式修改透明網關服務器上的下列兩個文件
$ORACLE_HOME/tg4msql/inittg4msql.ora
1 HS_FDS_CONNECT_INFO="SERVER=SQL Server服務器IP;DATABASE=SQL數據庫名" 2 HS_FDS_TRACE_LEVEL=OFF 3 HS_FDS_RECOVERY_ACCOUNT=RECOVER 4 HS_FDS_RECOVERY_PWD=RECOVER
$ORACLE_HOME/network/admin/listener.ora
1 LISTENER = 2 (DESCRIPTION_LIST = 3 (DESCRIPTION = 4 (ADDRESS = (PROTOCOL = TCP)(HOST = 本機IP)(PORT = 監聽端口)) 5 ) 6 ) 7 8 SID_LIST_LISTENER = 9 (SID_LIST = 10 (SID_DESC = 11 (SID_NAME = tg4msql) 12 (ORACLE_HOME = $ORACLE_HOME目錄) 13 (PROGRAM = tg4msql) 14 ) 15 )
3、在Oracle服務器上配置tnsname.ora文件:
1 MSSQL = 2 (DESCRIPTION = 3 (ADDRESS_LIST = 4 (ADDRESS =(PROTOCOL = TCP)(HOST = 透明網關IP)(PORT = 監聽端口)) 5 ) 6 (CONNECT_DATA =(SID = tg4msql)) 7 (HS = OK) 8 )
4、在Oracle數據庫中創建DB_Link:
create database link DL名稱 connect to sql用戶名 identified by "sql密碼" using 'MSSQL'