DB2數(shù)據(jù)庫與Oracle數(shù)據(jù)庫之間遠(yuǎn)程復(fù)制

2010-08-28 10:50:01來源:西部e網(wǎng)作者:

DB2 聯(lián)合數(shù)據(jù)庫是分布式數(shù)據(jù)庫管理的特殊形式。在聯(lián)合數(shù)據(jù)庫系統(tǒng)中,可以通過一個(gè) SQL 命令來發(fā)出對(duì)多個(gè)數(shù)據(jù)源的命令請(qǐng)求。DB2 與非 DB2 數(shù)據(jù)庫之間進(jìn)行復(fù)制之前,首先需要保證非 DB2 數(shù)據(jù)源可以被 DB2 ESE Version 8 federated database訪問。對(duì)于DB2 Replication Version 8 所需的聯(lián)合數(shù)據(jù)庫功能可以在現(xiàn)有發(fā)布的 DB2 ESE Version 8 和 DB2 Connect Enterprise Edition Version 8 中提供。

"SQL復(fù)制"又稱為"DB2復(fù)制",是為 DB2 開發(fā)的兩種數(shù)據(jù)復(fù)制類型中的一種,它是通過 SQL 進(jìn)行的復(fù)制。在這里簡單提一下,DB2 復(fù)制中的另一種"Q復(fù)制"是通過 Websphere MQ 消息隊(duì)列進(jìn)行的。在進(jìn)行 SQL 復(fù)制時(shí),Capture 程序讀取 DB2 恢復(fù)日志以獲取對(duì)指定源表的更改。該程序?qū)⒏谋4娴絺鬏敱砀裰,也稱作變化數(shù)據(jù)表(changed data table),Apply 程序并行讀取更改并應(yīng)用于目標(biāo)事務(wù),見圖1。

WebSphere II 全球信息集成復(fù)制,通過不同數(shù)據(jù)庫之間的復(fù)制,有效的利用了數(shù)據(jù)資源,為提高效率提供了良好的平臺(tái)。

DB2 與非 DB2 數(shù)據(jù)庫之間的復(fù)制需要用到 WebSphere II。本文力爭(zhēng)通過復(fù)制實(shí)例讓讀者對(duì)不同數(shù)據(jù)庫之間的復(fù)制有一個(gè)整體的概念。

商業(yè)上出于很多原因使用復(fù)制,可以歸納為:

分散:把數(shù)據(jù)分散到各個(gè)位置;

整合:把其他位置的數(shù)據(jù)聯(lián)合起來;

交換:與其他位置進(jìn)行雙向的數(shù)據(jù)交換;

靈活應(yīng)用:對(duì)上面提到的方式進(jìn)行一些改變或者結(jié)合。

聯(lián)合 (Federated) 數(shù)據(jù)庫系統(tǒng)的誕生,利用了現(xiàn)有的數(shù)據(jù)資源,把不同商業(yè)數(shù)據(jù)庫軟件的數(shù)據(jù)整合到一起,很大程度的提高了數(shù)據(jù)利用率。聯(lián)合數(shù)據(jù)庫可以用一個(gè)SQL語句對(duì)分布在不同地點(diǎn)的多種數(shù)據(jù)源發(fā)出請(qǐng)求。聯(lián)合數(shù)據(jù)庫系統(tǒng)可以把本地表和遠(yuǎn)程數(shù)據(jù)源聯(lián)接起來,就像數(shù)據(jù)都在本地一樣,并且可以通過對(duì)數(shù)據(jù)源進(jìn)行分布請(qǐng)求來提高數(shù)據(jù)源處理能力,還可以通過在聯(lián)合服務(wù)器處理部分分布請(qǐng)求來補(bǔ)充數(shù)據(jù)源的 SQL 限制。

聯(lián)合數(shù)據(jù)庫具有兩個(gè)與其他應(yīng)用服務(wù)器不同的特點(diǎn):

聯(lián)合服務(wù)器可以被配置為接收全部或接收部分針對(duì)數(shù)據(jù)源的請(qǐng)求。聯(lián)合服務(wù)器把這些請(qǐng)求分散到數(shù)據(jù)源。

與其他應(yīng)用服務(wù)器一樣,一個(gè)聯(lián)合服務(wù)器用 DRDA 通信協(xié)議(例如 SNA 和 TCP/IP)與 DB2 家族實(shí)例通信。然而,與其他應(yīng)用服務(wù)器不同的是,與非 DB2 家族實(shí)例通信時(shí)用其他協(xié)議。

圖2描述了聯(lián)合數(shù)據(jù)庫系統(tǒng)的設(shè)置流程:

WebSphere II 包括兩種包裝器(Wrapper),一種為關(guān)系型包裝器,負(fù)責(zé)DB2 UDB, Informix, Oracle, Microsoft SQL Server, Sybase, ODBC, OLE DB 等數(shù)據(jù)的復(fù)制。另一種為非關(guān)系型包裝器,負(fù)責(zé) Flatfile, Excel, XML 等非關(guān)系型數(shù)據(jù)的復(fù)制。

包裝器定義了一個(gè)負(fù)責(zé)本地?cái)?shù)據(jù)庫與遠(yuǎn)程數(shù)據(jù)庫通信的庫。包裝器執(zhí)行很多任務(wù),比如:它可以連接到數(shù)據(jù)源,包裝器應(yīng)用了數(shù)據(jù)源的標(biāo)準(zhǔn)連接API。它還可以給數(shù)據(jù)源提交請(qǐng)求。聯(lián)合數(shù)據(jù)庫系統(tǒng)可以操作遠(yuǎn)程聯(lián)合系統(tǒng)的表。遠(yuǎn)程表在本地聯(lián)合數(shù)據(jù)庫中虛擬存在,客戶應(yīng)用程序可以操作這些虛擬表,但是它們真正存在于遠(yuǎn)端數(shù)據(jù)庫中。每個(gè)遠(yuǎn)程虛擬數(shù)據(jù)庫,把聯(lián)合數(shù)據(jù)庫當(dāng)作數(shù)據(jù)庫客戶端,他們只對(duì)數(shù)據(jù)庫客戶端的請(qǐng)求有回應(yīng)。因此聯(lián)合數(shù)據(jù)庫需要下載各種遠(yuǎn)程數(shù)據(jù)庫的客戶端。

一個(gè)聯(lián)合系統(tǒng)的構(gòu)造,需要一個(gè)作為聯(lián)合服務(wù)器的 DB2 實(shí)例,一個(gè)作為聯(lián)合數(shù)據(jù)庫的數(shù)據(jù)庫,一個(gè)或多個(gè)數(shù)據(jù)源,和可以存取數(shù)據(jù)庫和數(shù)據(jù)源的客戶(用戶和應(yīng)用)。如果要完成遠(yuǎn)程不同數(shù)據(jù)庫之間的復(fù)制,還需要應(yīng)用DB2的數(shù)據(jù)復(fù)制功能。

IBM DB2 復(fù)制(在一些平臺(tái)上被稱為數(shù)據(jù)傳播)是一個(gè)從一個(gè)位置到另一個(gè)位置復(fù)制 DB2 和/或其他數(shù)據(jù)庫廠商數(shù)據(jù)的強(qiáng)大的,靈活的工具。IBM的復(fù)制支持?jǐn)?shù)據(jù)轉(zhuǎn)換,數(shù)據(jù)連接和過濾數(shù)據(jù)?梢栽诓煌钠脚_(tái)之間搬運(yùn)數(shù)據(jù),也可以把數(shù)據(jù)分散到不同的地點(diǎn)或從分散的地方把數(shù)據(jù)聚合到一個(gè)地方?梢栽诓煌南到y(tǒng)之間交換數(shù)據(jù)。

IBM復(fù)制由四個(gè)主要部分組成:管理 (Administrator),Capture,Apply,警報(bào)監(jiān)視器 (Alert Monitor)。

管理的部分主要通過復(fù)制中心的圖形界面來實(shí)現(xiàn)。通過復(fù)制中心可以定義復(fù)制源,定義從數(shù)據(jù)源到目標(biāo)數(shù)據(jù)的地圖。它也用來管理和監(jiān)控本地和遠(yuǎn)程的 Capture 和 Apply 進(jìn)程。從圖3中可以看出復(fù)制中心圖形界面對(duì)其他幾個(gè)部分的支持關(guān)系。

在源數(shù)據(jù)服務(wù)器上運(yùn)行的 Capture 程序可以獲取 DB2 源數(shù)據(jù)表中的變化。DB2 的源數(shù)據(jù)服務(wù)器可以為 DB2 在 z/os, os/390 上的版本 6,7和8,也可以是 iseries 在 os/400 V5R2,或 DB2 在 Windows, Unix 系統(tǒng)中的版本 8。當(dāng)定義數(shù)據(jù)源的時(shí)候會(huì)自動(dòng)生成相應(yīng)的觸發(fā)器 (Triggers),可以用來捕獲數(shù)據(jù)源的變化。要復(fù)制的數(shù)據(jù)可以在 Capture 進(jìn)程中通過選擇列來進(jìn)行過濾。被捕獲的更改信息首先存放到本地的源數(shù)據(jù)所在的數(shù)據(jù)庫的表中并且當(dāng)更改應(yīng)用到目標(biāo)數(shù)據(jù)中之后會(huì)自動(dòng)刪除。

當(dāng)對(duì)源表進(jìn)行改動(dòng)時(shí),DB2 把相關(guān)的記錄寫入日志。這些日志服務(wù)于數(shù)據(jù)庫發(fā)現(xiàn)和復(fù)制。Capture 程序通過數(shù)據(jù)庫自動(dòng)連接并獲取日志記錄。每個(gè)源表都有相應(yīng)的 CD (change data) 表來獲取數(shù)據(jù)的變化。當(dāng)定義一個(gè)復(fù)制數(shù)據(jù)源時(shí),復(fù)制中心自動(dòng)生成 CD 表。

對(duì)于 Apply 部分,捕獲的改變通過 Apply 程序應(yīng)用到目標(biāo)表中。Apply 程序可以在任何服務(wù)器上運(yùn)行并且必須對(duì)所用到的源服務(wù)器和目標(biāo)服務(wù)器都有連通性。數(shù)據(jù)可以通過列,行進(jìn)行過濾,可以進(jìn)行合并(例如通過視圖),也可以在 Apply 過程中通過 SQL 表達(dá)式進(jìn)行傳送。DB2 與其他相關(guān)的數(shù)據(jù)間進(jìn)行復(fù)制的時(shí)候,必須通過聯(lián)合數(shù)據(jù)庫系統(tǒng)來進(jìn)行昵稱的創(chuàng)建。在本地機(jī)器上需要安裝關(guān)系型包裝器和非關(guān)系型包裝器。對(duì)于本例中db2<->ORACLE之間的復(fù)制,需要安裝關(guān)系型包裝器。見圖4。

報(bào)警監(jiān)視器用來進(jìn)行對(duì)Capture和Apply部分的錯(cuò)誤監(jiān)控。