Oracle學習系列—Oracle透明網關

ORACLE實現異構服務的技術叫做透明網關(Transparent Gateway),利用透明網關可以實現和SQL SERVERSYBASEDB2等多種數據庫的互聯。因此透明網關也是Oracle數據倉庫和數據遷移中的一個重要組成部分。

透明網關的體系結構也很簡單,在ORACLESQL SERVER之間使用ORACLE透明網關服務器實現互連互通,其中透明網關服務器可以與ORACLESQL SERVER數據庫在同一臺主機上,也可以是在獨立的一臺主機上。

本文ORACLESQL SERVER數據庫在同一臺主機上;

SQL Server版本爲SQL Server 2000

Oracle版本爲Oracle9i 9.2.0.1

操作系統版本爲WindowsXP


透明網關的安裝和配置

1、運行Oracle Installation ProductsàUniversal Installer進行透明網關組件的安裝

2、選擇自定義

Gateway

3、選擇要安裝的透明網關

Gateway

4、系統提示配置

gateway

5、查看C:/oracle/ora92/tg4msql/admin目錄

tg4msql

├─admin--透明網關配置目錄

tg4msql_tx.sql

├─bin--系統配置的東西

├─nls--定義錯誤的消息

├─eng

└─jpn

├─demo--提供了一些在SQLServer環境下得demo

├─html--提供了一些SQLServerOracle的參考文檔

└─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)))

LISTENERSTATUS

------------------------

別名LISTENER

版本TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc

tion

啓動日期14-10-2007 16:21:40

正常運行時間00小時02

跟蹤級別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)))

LISTENERSTATUS

------------------------

別名LISTENER

版本TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc

tion

啓動日期14-10-2007 16:21:40

正常運行時間00小時09

跟蹤級別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))

OK20毫秒)

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_NAMEgateway_sid,也就是說單個透明網關情況下一定是tg4msql,即inittg4msql.ora的名字部分去掉init即可,

Tnsnames.ora

SIDListener.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!

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