Oracle與MsSQL之間的Transparent Gateway配置

昨天使用MsSQL連接Oracle感覺並不是特別好用,所以今天一早就來查找資料,發現最多的就是使用Oracle的透明網關來配置的。由於時間倉促今天只能在本機上測試,所以我就把網上別人的一篇關於配置的先帖過來。

(一)安裝Transparent Gateway for Windows SQL Server:

*如果在Oracle主目錄下有tg4msql文件夾,那麼不需要重新安裝。

1. 啓動Oracle安裝盤disk 5裏面的setup.exe。
2. 按Next兩次,選擇Oracle 9i Database 9.2.0.1.0,按Next。
3. 選擇Custom,按Next。
4. 按Oracle Transparent Gateway 9.2.0.1.0旁邊的"+",選擇Oracle Transparent Gateway for Microsoft SQL Server 9.2.0.1.0,按Next。
5. 接着安裝。
6. 安裝完畢之後,在Oracle主目錄下,會有tg4msql文件夾。

(二)配置:
我的環境:
Oracle 服務器:
    OS: Windows XP (SP2)
    IP: 192.168.1.180
    PORT: 1521
SQL 服務器:
    OS: Windows 2000
    IP: 192.168.1.213 
    Database Server Name: BIO549
    Database Name: salesdata1

(a)通過tg4msql連接:
    1. 在Oracle主目錄下tg4msql\admin目錄下,拷貝inittg4msql.ora並改名爲init<sid></sid>.ora。例如,我用的SID是MSSQL,那麼我的文件名是initMSSQL.ora。  

    2. 配置init<sid></sid>.ora,以我的例子,如下:
******************************
# This is a sample agent init file that contains the HS parameters that are
# needed for the Transparent Gateway for SQL Server

#
# HS init parameters
#
HS_FDS_CONNECT_INFO="SERVER=BIO549;DATABASE=salesdata1"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
******************************   

    3. 配置Oracle主目錄下network\admin目錄下的listener.ora。以我的例子,如下:
*NEWLISTENER是我新建的LISTENER的名字,默認應該是LISTENER
******************************
# LISTENER.ORA Network Configuration File: C:\oracle\ora92\network\admin\listener.ora
# Generated by Oracle configuration tools.

NEWLISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT = 1521))
      )
    )
  )

SID_LIST_NEWLISTENER =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = C:\oracle\ora92)
      (SID_NAME = MSSQL)
      (PROGRAM = tg4msql)
    )
  )
******************************

    4.配置Oracle主目錄下network\admin目錄下的tnsnames.ora,以我的例子,如下:
******************************
MSSQL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT = 1521))
    (CONNECT_DATA = (SID = MSSQL))
    (HS=OK)
  )
******************************

   5. 重起listener。

   6. 用sqlplus建立並測試Database Link。在命令行中,用以下命令:
sqlplus /nolog
conn sys/webpos as sysdba      ---->用sysdba的身份登陸
alter system set global_names = true;   ---->設置global_names=false不要求建立的數據庫鏈接和目的數據庫的全局名稱一致
create database link test1 connect to sa identified by sa using 'mssql';
select * from salesdata1@test1;

    7.連接成功。其中,connect to後面是用戶名,identified by後面是密碼,using後面是SID。

 

 

我開始配置的時候出現了一些錯誤,最主要就是ora-28545這個錯誤,應該是SID可能有不一致的地方或者使一些其他的錯誤,然後我又參考了一篇Oracle10G中的配置,最後成功。

F:\oracle\ora92\tg4msql\admin\initMSSQL.ora

HS_FDS_CONNECT_INFO="SERVER=minnow;DATABASE=K3"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

F:\oracle\ora92\network\admin\listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = F:\oracle\ora92)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = mssql)
      (ORACLE_HOME = F:\oracle\ora92)
      (PROGRAM = tg4msql)
    )
  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = minnow)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

F:\oracle\ora92\network\admin\tnsnames.ora

MSSQL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = minnow)(PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SID = mssql)
    )
    (HS = OK)
  )

然後用dba登錄PLSql

alter system set global_names = false;  //設置全局名稱

create database link test connect to sa identified by sa using 'mssql';  //創建一個鏈接

select * from ICStockBill@test  //測試數據庫  成功,哈哈。

配置過程中可能會出現不少錯誤,一般就是配置文件中可能性比較大,注意SID的名稱,再就是數據庫版本,實在搞不定就去google錯誤號,配置應該就沒什麼問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章