由於歷史的原因,在多數企業都同時存在多個數據庫平台,在每個數據庫平台上都運行著相關的一套或多套應用。隨著單位業務不斷擴大,如何在不影響現有應用運行的前提下,快速有效地整合這些分布在單位內部不同數據庫平台上的數據,是一個困擾CIO們的問題。面對這一問題,現有解決方案大致可分為以下兩種:
1.在應用程序上建立連接不同數據源的數據連接,這樣做要求程序員分清哪個連接是對應哪個數據庫的,而且如果設計時涉及到存儲過程還要按照不同數據庫的要求分別編寫,加重了程序員的要求。
2.在數據庫中設立快照,定時把其他數據源的數據復制到本地數據庫,這樣雖然解決了前一種方法中不同數據源的問題,但是由於是定時復制,數據不能實時同步,在實時性要求高的應用中這種方法便不能使用。
由於上述兩種方法都存在一定的缺點,這裡介紹一種Oracle提供的解決oracle數據庫與異種數據源的連接問題的解決方案—Oracle的異構服務(Heterogeneous Services)。
異構服務
“異構服務”是集成在Oracle 8i數據庫軟件中的功能,它提供了從Oracle數據庫訪問其他非Oracle數據庫的通用技術。熟悉Oracle的讀者都很清楚,Oracle提供通過建立DB Link的方法訪問非本地數據庫,而“異構服務”提供通過建立DB Link使你能夠執行Oracle SQL查詢,透明地訪問其他非Oracle數據庫裡的數據,就像訪問Oracle遠程數據庫一樣。“異構服務”分為兩種:
1. 事務處理服務(Transation Service):通過事務處理服務,使用戶在訪問非Oracle數據庫中支持事務處理功能。
2. SQL服務: 通過SQL服務,使用戶直接在Oracle數據庫中執行對非Oracle數據庫的各種SQL語句。
根據異構服務代理程序的不同,“異構服務”連接方式可以分為透明網關和通用連接兩種。
透明網關(Transparent Gateways) 透明網關使用Oracle提供的特定網關程序來設置代理,例如連接SQL Server則必須要有SQL Transparent Gateway for SQL Server。
通用連接(Generic Connectivity) 通用連接又分為ODBC連接和OLE DB連接兩種,其連接方法和透明網關沒有本質區別,只不過通用連接是和數據庫一起提供的功能,你不需要向Oracle購買相關的透明網關程序。
連接實例
這個實例的應用環境是Oracle 8.1.7,操作系統Windows 2000 Server英文版,采用通用連接的ODBC for SQL Server連接SQL Server 2000中文版。安裝步驟如下:
1. 安裝HS部件。
缺省情況下,HS服務是和Oracle 8.1.7一起安裝的,你可以查詢SYS用戶下是否存在HS_BASE_CAPS視圖,以確認HS部件是否安裝,如果沒有可以用相關的安裝盤進行安裝。
2. 配置ODBC系統連接字。
在控制面板選擇“Data Sources (ODBC)”,在“系統DNS”內配置ODBC for SQL Server連接字(dnsora2sql)。
3.配置tnsnames.ora,它位於ORACLE_HOME\NETWORK\ADMIN。
在這個文件中增加如下代碼:
Lnk2sql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521)))
(CONNECT_DATA =
(SID = hs4sql) |< 服務的SID名稱,要和Listener裡配置的sid相同)
(HS=OK) |< 打開HS服務選項
)
4.配置listener.ora,它位於ORACLE_HOME\NETWORK\ADMIN。
在這個文件中增加如下代碼:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = hs4sql) |< 服務的SID名稱,與tnsname名稱相對應
(ORACLE_HOME = C:\oracle\ora9201)
(PROGRAM = hsodbc) |< 要使用的HS服務程序,如果使用OLE DB,程序名為hsole )
)
5. 重新啟動Oracle listener。
6. 編輯位於ORACLE_HOME\HS\ADMIN內init.ora,這裡是iniths4sql。
修改如下兩行代碼:
HS_FDS_CONNECT_INFO = dnsora2sql |< ODBC系統名
HS_FDS_TRACE_LEVEL = 0
7. 創建DATABASE LINK。
create database link ‘ora2sql’ connect
to sql1 identified by sql1 using ‘lnk2sql’;
8. 測試連接。如:
SQL> select * from region@ora2sql;
到此我們已經完成了使用ODBC連接SQL SERVER的配置工作。
總體上說,異構服務擴展了Oracle數據庫連接異種數據源的能力,加強了企業數據的整合,是一個快速有效經濟地整合企業內部異構數據的解決方案。