由于歷史的原因,在多數(shù)企業(yè)都同時(shí)存在多個(gè)數(shù)據(jù)庫(kù)平臺(tái),在每個(gè)數(shù)據(jù)庫(kù)平臺(tái)上都運(yùn)行著相關(guān)的一套或多套應(yīng)用。隨著單位業(yè)務(wù)不斷擴(kuò)大,如何在不影響現(xiàn)有應(yīng)用運(yùn)行的前提下,快速有效地整合這些分布在單位內(nèi)部不同數(shù)據(jù)庫(kù)平臺(tái)上的數(shù)據(jù),是一個(gè)困擾CIO們的問(wèn)題。面對(duì)這一問(wèn)題,現(xiàn)有解決方案大致可分為以下兩種:
1.在應(yīng)用程序上建立連接不同數(shù)據(jù)源的數(shù)據(jù)連接,這樣做要求程序員分清哪個(gè)連接是對(duì)應(yīng)哪個(gè)數(shù)據(jù)庫(kù)的,而且如果設(shè)計(jì)時(shí)涉及到存儲(chǔ)過(guò)程還要按照不同數(shù)據(jù)庫(kù)的要求分別編寫,加重了程序員的要求。
2.在數(shù)據(jù)庫(kù)中設(shè)立快照,定時(shí)把其他數(shù)據(jù)源的數(shù)據(jù)復(fù)制到本地?cái)?shù)據(jù)庫(kù),這樣雖然解決了前一種方法中不同數(shù)據(jù)源的問(wèn)題,但是由于是定時(shí)復(fù)制,數(shù)據(jù)不能實(shí)時(shí)同步,在實(shí)時(shí)性要求高的應(yīng)用中這種方法便不能使用。
由于上述兩種方法都存在一定的缺點(diǎn),這里介紹一種Oracle提供的解決oracle數(shù)據(jù)庫(kù)與異種數(shù)據(jù)源的連接問(wèn)題的解決方案―Oracle的異構(gòu)服務(wù)(Heterogeneous Services)。
程序運(yùn)行效果截圖:
異構(gòu)服務(wù)
“異構(gòu)服務(wù)”是集成在Oracle 8i數(shù)據(jù)庫(kù)軟件中的功能,它提供了從Oracle數(shù)據(jù)庫(kù)訪問(wèn)其他非Oracle數(shù)據(jù)庫(kù)的通用技術(shù)。熟悉Oracle的讀者都很清楚,Oracle提供通過(guò)建立DB Link的方法訪問(wèn)非本地?cái)?shù)據(jù)庫(kù),而“異構(gòu)服務(wù)”提供通過(guò)建立DB Link使你能夠執(zhí)行Oracle SQL查詢,透明地訪問(wèn)其他非Oracle數(shù)據(jù)庫(kù)里的數(shù)據(jù),就像訪問(wèn)Oracle遠(yuǎn)程數(shù)據(jù)庫(kù)一樣?!爱悩?gòu)服務(wù)”分為兩種:
1. 事務(wù)處理服務(wù)(Transation Service):通過(guò)事務(wù)處理服務(wù),使用戶在訪問(wèn)非Oracle數(shù)據(jù)庫(kù)中支持事務(wù)處理功能。
2. SQL服務(wù): 通過(guò)SQL服務(wù),使用戶直接在Oracle數(shù)據(jù)庫(kù)中執(zhí)行對(duì)非Oracle數(shù)據(jù)庫(kù)的各種SQL語(yǔ)句。