有關Oracle透明網關的若干使用方法介紹
2024-08-29 13:36:28
供稿:網友
 
             
  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 的服務器和客戶端的程序不是一個版本引起的。
                         我正在測試。