ORACLE實現異構服務的技術叫做透明網關(Transparent Gateway),利用透明網關可以實現和SQL SERVER、SYBASE、DB2等多種數據庫的互聯。因此透明網關也是Oracle數據倉庫和數據遷移中的一個重要組成部分。
透明網關的體系結構也很簡單,在ORACLE和SQL SERVER之間使用ORACLE透明網關服務器實現互連互通,其中透明網關服務器可以與ORACLE或SQL SERVER數據庫在同一臺主機上,也可以是在獨立的一臺主機上。
本文ORACLE或SQL SERVER數據庫在同一臺主機上;
SQL Server版本爲SQL Server 2000
Oracle版本爲Oracle9i 9.2.0.1
操作系統版本爲WindowsXP
透明網關的安裝和配置
1、運行Oracle Installation ProductsàUniversal Installer進行透明網關組件的安裝
2、選擇自定義
3、選擇要安裝的透明網關
4、系統提示配置
5、查看C:/oracle/ora92/tg4msql/admin目錄
tg4msql ├─admin--透明網關配置目錄 │tg4msql_tx.sql │ ├─bin--系統配置的東西 ├─nls--定義錯誤的消息 │├─eng │└─jpn ├─demo--提供了一些在SQLServer環境下得demo ├─html--提供了一些SQLServer和Oracle的參考文檔 └─trace--提供系統跟蹤情況 |
6、修改C:/oracle/ora92/tg4msql/admin/inittg4msql.ora
# HS_FDS_CONNECT_INFO="SERVER=host;DATABASE=northwind" HS_FDS_CONNECT_INFO=host.northwind--hostname.databasename HS_FDS_TRACE_LEVEL=DEBUG HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER |
7、修改C:/oracle/ora92/network/admin/listener.ora,增加
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = tg4msql) (ORACLE_HOME = C:/oracle/ora92) (PROGRAM = tg4msql) ) ) |
8、修改C:/oracle/ora92/network/admin/Tnsname.ora,增加
TG4MSQL= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS = (PROTOCOL=TCP)(HOST= host)(PORT=1521)) ) (CONNECT_DATA= (SID=tg4msql) ) (HS=OK) ) |
9、重新啓動偵聽服務
Microsoft Windows XP [版本5.1.2600] (C)版權所有1985-2001 Microsoft Corp. C:Documents and SettingsAdministrator>lsnrctl stop LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 14-10月-2007 16:21 :25 Copyright (c) 1991, 2002, Oracle Corporation.All rights reserved. 正在連接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))) 命令執行成功 C:Documents and SettingsAdministrator>lsnrctl start LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 14-10月-2007 16:21 :38 Copyright (c) 1991, 2002, Oracle Corporation.All rights reserved. 啓動tnslsnr:請稍候... TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production 系統參數文件爲C:/oracle/ora92/network/admin/listener.ora 寫入C:/oracle/ora92/network/log/listener.log的日誌信息 監聽:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc))) 監聽:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521))) 正在連接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))) LISTENER的STATUS ------------------------ 別名LISTENER 版本TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc tion 啓動日期14-10月-2007 16:21:40 正常運行時間0天0小時0分2秒 跟蹤級別off 安全性OFF SNMPOFF 監聽器參數文件C:/oracle/ora92/network/admin/listener.ora 監聽器日誌文件C:/oracle/ora92/network/log/listener.log 監聽端點概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521))) 服務摘要.. 服務"PLSExtProc"包含1個例程。 例程"PLSExtProc",狀態UNKNOWN,包含此服務的1個處理程序... 服務"tg4msql"包含1個例程。 例程"tg4msql",狀態UNKNOWN,包含此服務的1個處理程序... 服務"wbq"包含1個例程。 例程"wbq",狀態UNKNOWN,包含此服務的1個處理程序... 命令執行成功 C:/Documents and Settings/Administrator>lsnrctl status LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 14-10月-2007 16:21 :47 Copyright (c) 1991, 2002, Oracle Corporation.All rights reserved. 正在連接到(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))) LISTENER的STATUS ------------------------ 別名LISTENER 版本TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc tion 啓動日期14-10月-2007 16:21:40 正常運行時間0天0小時0分9秒 跟蹤級別off 安全性OFF SNMPOFF 監聽器參數文件C:/oracle/ora92/network/admin/listener.ora 監聽器日誌文件C:/oracle/ora92/network/log/listener.log 監聽端點概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC0ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1521))) 服務摘要.. 服務"PLSExtProc"包含1個例程。 例程"PLSExtProc",狀態UNKNOWN,包含此服務的1個處理程序... 服務"tg4msql"包含1個例程。 例程"tg4msql",狀態UNKNOWN,包含此服務的1個處理程序... 服務"wbq"包含1個例程。 例程"wbq",狀態UNKNOWN,包含此服務的1個處理程序... 命令執行成功 C:Documents and SettingsAdministrator> |
10、測試解析狀態
C:/Documents and Settings/Administrator>tnsping tg4msql TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0 - Production on 14-10月-2 007 16:29:43 Copyright (c) 1997 Oracle Corporation.All rights reserved. 已使用的參數文件: C:/oracleora92/network/admin/sqlnet.ora 已使用TNSNAMES適配器來解析別名 Attempting to contact (DESCRIPTION= (ADDRESS_LIST = (ADDRESS = (PROTOCOL=TCP)(HO ST= host)(PORT=1521))) (CONNECT_DATA= (SID=tg4msql)) (HS=OK)) OK(20毫秒) |
11、創建數據庫鏈接
CREATE PUBLIC DATABASE LINK MStest CONNECT TO “sa” IDENTIFIED BY “sa” USING ‘tg4msql’; |
12、察看數據庫鏈接
select * from sys.LINK$ |
13、測試
select * from Customers@MStest; |
ODBC透明網關的配置
1、查看C:/oracle/ora92/HS/admin目錄
HS ├─admin--透明網關配置目錄 ││ ├─bin--系統配置的東西 ├─nls--定義錯誤的消息 │├─eng │└─jpn └─trace--提供系統跟蹤情況 |
2、配置ODBC系統DSN。
3、修改C:/oracle/ora92/HS/admin/initSID_NAME.ora
HS_FDS_CONNECT_INFO = 系統DSN名 HS_FDS_TRACE_LEVEL = OFF |
7、修改C:/oracle/ora92/network/admin/listener.ora,增加
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = SID_NAME) --一定要與上一步中的SID_NAME名相同 (ORACLE_HOME = C:/oracle/ora92) (PROGRAM = HSODBC) ) ) |
8、修改C:/oracle/ora92/network/admin/Tnsname.ora,增加
TG4MSQL= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS = (PROTOCOL=TCP)(HOST= host)(PORT=1521)) ) (CONNECT_DATA= (SID=SID_NAME) --對應listener.ora中SID_NAME ) (HS=OK) ) |
透明網關配置的疑難問題
配置過程遇到的異常情況:
ORA-28500:連接ORACLE到非Oracle系統時返回此信息: [Transparent gateway for MSSQL][H006] The init parameter <HS_FDS_CONNECT_INFO> is not set. Please set it in init<orasid>.ora file. ORA-02063:緊接着2 lines(源於MSTEST) |
解決過程,請檢查以下參數
Listener.ora
PROGRAM必須爲tg4msql
SID_NAME爲gateway_sid,也就是說單個透明網關情況下一定是tg4msql,即inittg4msql.ora的名字部分去掉init即可,
Tnsnames.ora
SID爲Listener.ora中的SID_NAME
TNS的名稱可以隨便進行配置。
至於以下這兩個區別,我到現在也沒搞明白L
HS_FDS_CONNECT_INFO="SERVER=local;DATABASE=northwind"
HS_FDS_CONNECT_INFO=host.northwind
*如果你的數據庫系統以前有升級,這次是從光盤直接安裝的新的tg4msql,那麼你在使用tg4msql之前
必須先按照當前數據庫patchset進行一次數據庫升級。
*在建立DBLINK時一定要注意你連接的數據庫是否有大小寫敏感,否則你在取網關的表數據時,系統會
報遠程數據庫的密碼錯誤。
多個透明網關的配置
1、把inittg4msql.ora複製並修改名稱爲inittg4msql2.ora
2、修改C:/oracle/ora92/tg4msql/admin/inittg4msql2.ora只修改第一行,服務器和數據庫名即可
HS_FDS_CONNECT_INFO=host.pubs--hostname.databasename |
3、修改C:/oracle/ora92/network/admin/listener.ora,增加如下注意SID_Name的變化
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = tg4msql2) (ORACLE_HOME = C:/oracle/ora92) (PROGRAM = tg4msql) ) ) |
4、修改C:/oracle/ora92/network/admin/Tnsname.ora,增加
TG4MSQL2= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS = (PROTOCOL=TCP)(HOST= host)(PORT=1521)) ) (CONNECT_DATA= (SID=tg4msql2) ) (HS=OK) ) |
然後和單個透明網關配置一樣,重新啓動監聽,創建數據庫鏈接,測試。一切OK!