文章詳情頁(yè)
DB2數(shù)據(jù)庫(kù)的數(shù)據(jù)復(fù)制技術(shù)簡(jiǎn)單概述(1)
瀏覽:23日期:2023-11-11 09:59:40
文章實(shí)驗(yàn)環(huán)境:Win2000 Server、IBM® DB2® Universal Database™ for Windows® V7.1+補(bǔ)丁包9。注:本文將主要討論DB2之間的數(shù)據(jù)復(fù)制,而不考慮包含非IBM數(shù)據(jù)庫(kù)的數(shù)據(jù)復(fù)制什么是數(shù)據(jù)復(fù)制數(shù)據(jù)復(fù)制就是通過(guò)將源數(shù)據(jù)庫(kù)中指定的數(shù)據(jù)復(fù)制到目標(biāo)數(shù)據(jù)庫(kù)中,以保持源數(shù)據(jù)庫(kù)與目標(biāo)數(shù)據(jù)庫(kù)中指定數(shù)據(jù)的同步(一致)。基礎(chǔ)概念CD表:change data tables更改數(shù)據(jù)表,用于臨時(shí)存放更改數(shù)據(jù)的表。一般包含有需要捕捉更改的列及一些控制列。例如:用戶(hù)指定的,要捕捉更改的列CREATE TABLE DEPARTMENT (DEPTNO …, <--DEPTNAME …, <--MGRNO …,ADMRDEPT …,LOCATION …)源表CREATE TABLE CD20030805296530(IBMSNAP_UOWID …,IBMSNAP_INTENTSEQ…,IBMSNAP_OPERATION …,DEPTNO…, <--DEPTNAME …) <--CD表DB2日志類(lèi)型:循環(huán)日志 歸檔日志:DB2數(shù)據(jù)復(fù)制的組件DB2 DataPropagator由三部分組成:治理界面、更改捕捉機(jī)制、應(yīng)用程序注重:此處應(yīng)用程序(Apply program)與我們通常所說(shuō)的應(yīng)用程序是不同的概念,本文中如無(wú)非凡說(shuō)明,“應(yīng)用程序都是指DB2數(shù)據(jù)復(fù)制的組件。治理界面我們主要用它來(lái)創(chuàng)建用于存儲(chǔ)復(fù)制標(biāo)準(zhǔn)的控制表。控制表有多種類(lèi)型,用來(lái)存放要復(fù)制哪些表哪些列等信息,我們?cè)诤竺嬖僮屑?xì)探討。我們可以使用的治理界面有兩種:1.DB2 Control Center(DB2 控制中心)只能針對(duì)DB2服務(wù)器之間的數(shù)據(jù)復(fù)制 12345678910下一頁(yè) 2.DataJoiner Replication Administration (DJRA)可包含非IBM數(shù)據(jù)庫(kù)的數(shù)據(jù)復(fù)制(本文不具體討論)具體控制表類(lèi)型可通過(guò)查看文件“SQLLIBsamplesepldpcntl.udb來(lái)獲得,本文涉及到的控制表主要有:ASN.IBMSNAP_REGISTER、ASN.IBMSNAP_UOW等。更改捕捉機(jī)制在建立復(fù)制環(huán)境之后,利用該機(jī)制去捕捉源數(shù)據(jù)庫(kù)發(fā)生的更改,且將更改臨時(shí)存放于CD表中。 DB2數(shù)據(jù)復(fù)制解決方案提供兩種捕捉數(shù)據(jù)的機(jī)制:1.捕捉DB2源表的捕捉程序當(dāng)源是DB2表時(shí),捕捉程序會(huì)捕捉在源上所發(fā)生的更改。捕捉程序使用數(shù)據(jù)庫(kù)日志去捕捉發(fā)生于源數(shù)據(jù)庫(kù)上的更改,并將更改臨時(shí)存儲(chǔ)在表里。捕捉程序運(yùn)行在源服務(wù)器上。2.捕捉非IBM數(shù)據(jù)庫(kù)源表的捕捉觸發(fā)器(本文不具體討論)應(yīng)用程序當(dāng)捕捉程序?qū)⒃幢戆l(fā)生的更改臨時(shí)存放于CD表中后,應(yīng)用程序再?gòu)倪@些表中讀出源數(shù)據(jù)庫(kù)的更改,將它應(yīng)用于目標(biāo)數(shù)據(jù)庫(kù),或者直接將數(shù)據(jù)從源數(shù)據(jù)庫(kù)拷貝到目標(biāo)數(shù)據(jù)庫(kù)。1.當(dāng)剛搭建起復(fù)制環(huán)境時(shí),有一個(gè)初始化過(guò)程,該過(guò)程應(yīng)用程序?qū)⒅苯訌脑幢砘蛞晥D讀數(shù)據(jù)來(lái)初始目標(biāo)表。而后假如你想復(fù)制更改,應(yīng)用程序從CD表中讀取臨時(shí)存儲(chǔ)的變化數(shù)據(jù),將它應(yīng)用于目標(biāo)表。2.應(yīng)用程序通常運(yùn)行在目標(biāo)服務(wù)器上,但它也可以運(yùn)行在可以連接到源、控制和目標(biāo)服務(wù)器的網(wǎng)絡(luò)上的任一服務(wù)器上。多個(gè)應(yīng)用程序?qū)嵗梢赃\(yùn)行在相同或不同的服務(wù)器上。3.每一個(gè)應(yīng)用程序與一個(gè)包含著控制表的控制服務(wù)器相關(guān)聯(lián),控制表中包含著預(yù)訂集的定義。控制表可以被多個(gè)應(yīng)用程序?qū)嵗褂谩1热纾耗阌幸粋€(gè)源服務(wù)器和兩個(gè)目標(biāo)服務(wù)器,那么,你就可以將應(yīng)用程序分別運(yùn)行于每一臺(tái)目標(biāo)服務(wù)器上。這兩個(gè)應(yīng)用實(shí)例可以共享控制表,控制表中有特定的信息與每一應(yīng)用實(shí)例相關(guān)聯(lián)。 上一頁(yè)1234567下一頁(yè) 各復(fù)制組件之間如何通訊各復(fù)制組件之間是相互獨(dú)立的,所以他們依靠于控制表中的信息進(jìn)行通信。捕捉、應(yīng)用程序通過(guò)更新控制表以指示復(fù)制的進(jìn)程及協(xié)調(diào)變化進(jìn)程。對(duì)于DB2之間的復(fù)制,捕捉程序通過(guò)讀取源服務(wù)器上的日志來(lái)捕捉源表中數(shù)據(jù)的更改。然后捕捉程序?qū)⒏牡臄?shù)據(jù)放入稱(chēng)之為更改數(shù)據(jù)(CD)表的表中。每次應(yīng)用程序拷貝數(shù)據(jù)到目標(biāo)數(shù)據(jù)庫(kù),目標(biāo)數(shù)據(jù)庫(kù)的內(nèi)容將反映出在源數(shù)據(jù)庫(kù)上發(fā)生的更改。應(yīng)用程序是通過(guò)應(yīng)用自應(yīng)用程序所知道的對(duì)于目標(biāo)的上一次更新以來(lái)累加的事務(wù)來(lái)實(shí)現(xiàn)的,即只應(yīng)用還沒(méi)應(yīng)用的更改。基于日志的通訊捕捉程序使用部分控制表去記錄發(fā)生在源數(shù)據(jù)庫(kù)上的更改,而應(yīng)用程序使用這些控制表中的值去檢測(cè)什么需要拷貝到目標(biāo)庫(kù)中。重要:假如應(yīng)用程序沒(méi)有通知捕捉程序,捕捉程序不會(huì)捕捉任何更改信息。同樣,除非你定義一個(gè)復(fù)制源并將它和預(yù)訂集相關(guān)聯(lián),否則應(yīng)用程序不會(huì)通知捕捉程序開(kāi)始捕捉更改。下面講解在典型的復(fù)制環(huán)境下,應(yīng)用程序和捕捉程序如何通訊以保證數(shù)據(jù)的一致性:從源數(shù)據(jù)庫(kù)捕捉數(shù)據(jù)1.捕捉程序通過(guò)讀控制表ASN.IBMSNAP_REGISTER來(lái)判定哪些復(fù)制源需要開(kāi)始捕捉更改。假如在捕捉程序運(yùn)行期間,用戶(hù)定義了新的復(fù)制源,那么你必須重新初始化或重啟捕捉程序,它才會(huì)開(kāi)始生效。2.捕捉程序通過(guò)監(jiān)控DB2的日志去檢測(cè)那些定義為復(fù)制源的源表所更改的記錄。3.每一復(fù)制源都有一張CD表。當(dāng)捕捉程序在DB2日志中發(fā)現(xiàn)有一行數(shù)據(jù)發(fā)生更改時(shí),它會(huì)在CD表中加入一行相應(yīng)的數(shù)據(jù),以記錄發(fā)生的更改(假如updates被定義為DELETE和INSERT時(shí),則加入兩行)。4.捕捉程序?qū)⑻峤坏氖聞?wù)信息存儲(chǔ)在控制表ASN.IBMSNAP_UOW中。該控制表中的行標(biāo)志著在源服務(wù)器上發(fā)生的已提交的事務(wù)。對(duì)于基于日志的捕捉程序,每一個(gè)DB2源服務(wù)器都存在一張控制表ASN.IBMSNAP_UOW。 上一頁(yè)12345678下一頁(yè) 5.捕捉程序會(huì)更新控制表ASN.IBMSNAP_REGISTER來(lái)記錄每一個(gè)復(fù)制源有多少已提交的數(shù)據(jù)被捕捉。將數(shù)據(jù)應(yīng)用于目標(biāo)數(shù)據(jù)庫(kù)6.對(duì)于所有的預(yù)訂集,應(yīng)用程序首先通過(guò)將源表的所有數(shù)據(jù)拷貝到目標(biāo)表中,以達(dá)到與復(fù)制源的同步。這個(gè)步驟稱(chēng)之為全更新拷貝。在進(jìn)行全更新拷貝之后,捕捉程序開(kāi)始捕捉數(shù)據(jù)源發(fā)生的更改。7.假如任何預(yù)訂集預(yù)備復(fù)制,應(yīng)用程序通過(guò)檢查控制表ASN.IBMSNAP_REGISTER來(lái)判定是否有發(fā)生變化以需要復(fù)制。8.應(yīng)用程序通過(guò)更新修剪控制表來(lái)同步存儲(chǔ)在CD表中相關(guān)源表的更改9.應(yīng)用程序從CD表和控制表ASN.IBMSNAP_UOW的連接中拷貝變化的數(shù)據(jù)到目標(biāo)表中。通過(guò)連接這兩個(gè)控制表,應(yīng)用程序確保只拷貝在數(shù)據(jù)源上已提交的變化。修剪表10.應(yīng)用程序用一個(gè)指向拷貝變化到目標(biāo)數(shù)據(jù)庫(kù)的值來(lái)更新修剪控制表ASN.IBMSNAP_PRUNCNTL。11.當(dāng)應(yīng)用程序修剪CD表和UOW控制表時(shí),它先確定哪些更改已經(jīng)應(yīng)用,然后將其從那兩個(gè)控制表中刪除。DB2數(shù)據(jù)復(fù)制概念這部分介紹一些DB2數(shù)據(jù)復(fù)制的重要概念。你應(yīng)該閱讀整個(gè)部分以獲得一個(gè)整體的概念。復(fù)制源一個(gè)復(fù)制源其實(shí)就是一張你想從中拷貝數(shù)據(jù)的用戶(hù)表或視圖。在你可以復(fù)制數(shù)據(jù)之前,你必須先定義一個(gè)復(fù)制源用來(lái)描述更改捕捉機(jī)制所使用的信息。當(dāng)你定義一個(gè)復(fù)制源時(shí),你必須指定你想復(fù)制的列,還有決定你想把更新當(dāng)做UPDATE操作處理還是DELETE和INSERT操作。另外,你必須決定:-是否想對(duì)一列捕捉前映象-你是否想使用更改捕捉(差別更新拷貝)還是不使用更改捕捉(全更新拷貝)-對(duì)于任何地方的更新復(fù)制(復(fù)制源有讀/寫(xiě)目標(biāo)表)想使用什么級(jí)別的沖突檢測(cè)后映象列和前映象列 上一頁(yè)123456789下一頁(yè) 一列后映象列包含源表中一列數(shù)據(jù)列被更新后的那列數(shù)據(jù)。一列前映象列包含源表中一列數(shù)據(jù)列被更新前的那列數(shù)據(jù)。當(dāng)你定義一個(gè)復(fù)制源的時(shí)候,你可以選擇只捕捉后映象(默認(rèn))或者后映象和前映象一起捕捉。這取決于你打算使用這些數(shù)據(jù)的方法和你正在使用的表的類(lèi)型。例如:表DEPARTMENT中有一列DEPTNO,若在定義復(fù)制源時(shí)指定該列捕捉后映象和前映象,該列有一行數(shù)據(jù)為’A00’,若使用UPDATE語(yǔ)句將’A00’更新為’A01’,則在其相應(yīng)的CD表中同時(shí)記錄了更新前后的值:紅色部分為用戶(hù)指定的,要捕捉更改的列(后映象列),藍(lán)色部分為前映象列,存放對(duì)應(yīng)列被更新前的值。CREATE TABLE DEPARTMENT (DEPTNO …, ‘A00’DEPTNAME …,MGRNO …,ADMRDEPT …,LOCATION …)源表CREATE TABLE CD20030805296530(IBMSNAP_UOWID …,IBMSNAP_INTENTSEQ…,IBMSNAP_OPERATION …,XDEPTNO…, ‘A00’DEPTNO…, ‘A01’XDEPTNAME …,DEPTNAME …)CD表在需要審計(jì)或回滾能力的應(yīng)用系統(tǒng)中,前映象列是非常有用的。全更新和差別更新拷貝應(yīng)用程序通過(guò)全更新或差別更新拷貝從源表拷貝數(shù)據(jù)到目標(biāo)表中。-在只進(jìn)行全更新拷貝時(shí),應(yīng)用程序執(zhí)行一下任務(wù):1.刪除目標(biāo)表中的所有行2.從源表中讀取所有行3.拷貝這些行到目標(biāo)表中-在進(jìn)行差別更新拷貝時(shí),應(yīng)用程序只拷貝更改的數(shù)據(jù)到目標(biāo)表中。 上一頁(yè)12345678910下一頁(yè) 沖突檢測(cè)級(jí)別沖突檢測(cè)僅適用于“任何地方的更新(update-anywhere)復(fù)制配置。它是在同一個(gè)復(fù)制周期,源和目標(biāo)表中的同一行被更新的檢測(cè)程序。對(duì)于標(biāo)準(zhǔn)沖突檢測(cè),應(yīng)用程序在那些已經(jīng)捕捉到CD表中的行中查找沖突。對(duì)于增強(qiáng)的沖突檢測(cè),應(yīng)用程序鎖住所有目標(biāo)表,因此確保了在檢查沖突時(shí)所有更改都被考慮到。預(yù)訂集和預(yù)訂集成員在開(kāi)始從復(fù)制源復(fù)制數(shù)據(jù)前,你必須先將復(fù)制源和復(fù)制目標(biāo)相關(guān)聯(lián)起來(lái),復(fù)制源所發(fā)生變化將被復(fù)制到復(fù)制目標(biāo)中。我們使用預(yù)訂集和預(yù)訂集成員來(lái)定義這種信息。我們定義的這些信息將存儲(chǔ)在各種復(fù)制控制表中。一個(gè)預(yù)訂集包含一個(gè)復(fù)制預(yù)訂的屬性。當(dāng)你創(chuàng)建一個(gè)預(yù)訂集時(shí),要定義下面的屬性:-預(yù)訂名-源服務(wù)器和目標(biāo)服務(wù)器-應(yīng)用限定符-什么時(shí)候開(kāi)始復(fù)制,復(fù)制頻率,是否使用基于時(shí)間或基于事件或者基于兩者的復(fù)制頻率-假如你有大量的更改,是否將數(shù)據(jù)分塊提交預(yù)訂集中對(duì)每一張目標(biāo)表或視圖,必須有一個(gè)預(yù)訂集成員。當(dāng)你創(chuàng)建一個(gè)預(yù)訂集成員,要定義以下屬性:-源表或視圖、目標(biāo)表或視圖-目標(biāo)表或視圖的結(jié)構(gòu)-要復(fù)制的列(子查詢(xún)列)-要復(fù)制的行(用SQL謂詞WHERE限定過(guò)濾條件)預(yù)訂集確保所有預(yù)訂集成員在復(fù)制期間是相同的:更改要么被應(yīng)用于所有的目標(biāo),要么不被應(yīng)用于所有的目標(biāo)。在一個(gè)預(yù)訂集中的所有預(yù)訂成員的更改數(shù)據(jù)通過(guò)單一的一個(gè)事務(wù)復(fù)制到指定的目標(biāo)表中。因?yàn)樵谝粋€(gè)預(yù)訂集中的目標(biāo)表是在一個(gè)事務(wù)中處理的,預(yù)訂集使性能最優(yōu)化。預(yù)訂集也保持著參照一致性。一個(gè)預(yù)訂集被一個(gè)應(yīng)用程序使用,然而,每個(gè)應(yīng)用程序可以通過(guò)相同的應(yīng)用限定符處理多個(gè)預(yù)訂集。 上一頁(yè)234567891011下一頁(yè) 應(yīng)用限定符應(yīng)用限定符將一個(gè)應(yīng)用程序和一個(gè)或多個(gè)預(yù)訂集關(guān)聯(lián)起來(lái)。當(dāng)你定義一個(gè)預(yù)訂集時(shí),指定一個(gè)名稱(chēng)(區(qū)分大小寫(xiě))作為應(yīng)用限定符。通過(guò)使用多個(gè)應(yīng)用限定符,你可以只使用一個(gè)用戶(hù)ID運(yùn)行多個(gè)應(yīng)用程序?qū)嵗@纾杭僭O(shè)你想從兩個(gè)源數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù)到你計(jì)算機(jī)上的目標(biāo)表。源表A中的數(shù)據(jù)使用“全更新拷貝復(fù)制到目標(biāo)表A,源表B中的數(shù)據(jù)使用“差別更新拷貝復(fù)制到目標(biāo)表B中。你定義了兩個(gè)預(yù)訂集(一個(gè)對(duì)應(yīng)表A,一個(gè)對(duì)應(yīng)表B),而且你使用各自的應(yīng)用限定符以答應(yīng)應(yīng)用程序的兩個(gè)實(shí)例在不同的時(shí)間拷貝數(shù)據(jù)。你也可以將兩個(gè)預(yù)訂集用同一個(gè)應(yīng)用限定符定義,用同一個(gè)應(yīng)用程序?qū)嵗截悢?shù)據(jù)。數(shù)據(jù)操作也許你想只復(fù)制源表中的子集,可以使用簡(jiǎn)單的視圖來(lái)重構(gòu)從源表到目標(biāo)表的數(shù)據(jù),或者使用復(fù)雜的連接或聯(lián)合。源表的子集你可以復(fù)制源表中的某些列或某些行,而不是復(fù)制整個(gè)表。對(duì)于目標(biāo)的連接和聯(lián)合你可以創(chuàng)建和維護(hù)包含由多張已存在的源表連接或聯(lián)合成的內(nèi)容的目標(biāo)表。你可以使用下面的連接類(lèi)型:-跨越一個(gè)或多個(gè)定義的復(fù)制源的簡(jiǎn)單內(nèi)部連接,可能和其它的復(fù)制源的其它表或視圖組合。你可以通過(guò)下面的方法采用連接和聯(lián)合來(lái)操作數(shù)據(jù):-從單一的DB2源服務(wù)器上連接表(通過(guò)定義一張由某些表連接成的DB2視圖)-從一個(gè)源服務(wù)器上聯(lián)合的表(通過(guò)在一個(gè)預(yù)訂集中使用包含相同目標(biāo)表的多個(gè)預(yù)訂集成員)-從多個(gè)源服務(wù)器的聯(lián)合,有時(shí)稱(chēng)之為多點(diǎn)聯(lián)合(通過(guò)創(chuàng)建在多個(gè)預(yù)訂集中的多個(gè)預(yù)訂集成員)目標(biāo)表當(dāng)你定義一個(gè)預(yù)訂集成員時(shí),你必須指定你所使用目標(biāo)表的類(lèi)型。有下面幾種表類(lèi)型可以用: 上一頁(yè)3456789101112下一頁(yè) -用戶(hù)拷貝表-時(shí)間點(diǎn)表-聚集表-CCD表-副本或行副本表-用戶(hù)表下面介紹一下這些目標(biāo)表類(lèi)型的特點(diǎn):用戶(hù)拷貝表這些表是復(fù)制源的只讀拷貝,不帶有附加的復(fù)制控制列,就像普通的源表。它們是目標(biāo)表最普通的類(lèi)型。時(shí)間點(diǎn)表這些表是復(fù)制源的只讀拷貝,附帶有一時(shí)間戳列。時(shí)間戳列初始為空。當(dāng)復(fù)制更改時(shí),該列被賦予相應(yīng)值以指示更新的時(shí)間。當(dāng)你想跟蹤更改的時(shí)間時(shí),可以使用這種類(lèi)型的表。聚集表這些是只讀的表,使用SQL列函數(shù)(如SUM、AVG)來(lái)計(jì)算源表全部或最近發(fā)生更改的數(shù)據(jù)的摘要。行會(huì)隨時(shí)間追加到聚集表。基礎(chǔ)聚集表匯總一張?jiān)幢淼膬?nèi)容。用基礎(chǔ)聚集表來(lái)定期地跟蹤源表狀態(tài)。例如,假設(shè)你想知道你每個(gè)月的顧客平均數(shù)。假如你的源表中一個(gè)顧客對(duì)應(yīng)一行,你每月將你源表中的行數(shù)取平均,而后將平均值存儲(chǔ)到一張基礎(chǔ)聚集表中。基礎(chǔ)聚集表沒(méi)有跟蹤更改信息。例如,假設(shè)你一月份平均有500個(gè)顧客,二月份也有500個(gè)顧客。然而,在二月份,你失去兩個(gè)現(xiàn)有的客戶(hù),同時(shí)新增兩個(gè)新客戶(hù)。基礎(chǔ)數(shù)據(jù)表顯示這兩個(gè)月平均顧客數(shù)是一樣的,但它沒(méi)有反映出二月份的變化。假如你想跟蹤變化信息,可以使用更改聚集表。更改聚集表使用控制表中的更改數(shù)據(jù),而不使用源表中的內(nèi)容。使用更改聚集表來(lái)跟蹤隨時(shí)間發(fā)生的更改(UPDATE、INSERT、DELETE操作)。例如,假設(shè)你想知道每個(gè)月你增加多少新客戶(hù)(INSERTS)失去多少現(xiàn)有客戶(hù)(DELETES)。你將按月統(tǒng)計(jì)你源表中行所發(fā)生的更改,將統(tǒng)計(jì)結(jié)果存儲(chǔ)在更改聚集表中。CCD表涉及非IBM數(shù)據(jù)庫(kù),本文不予討論。副本或行副本表這些是唯一能被直接被我們的應(yīng)用程序(此處的應(yīng)用程序指用戶(hù)的應(yīng)用系統(tǒng))更新的目標(biāo)表。發(fā)生于副本或行副本的更改會(huì)被復(fù)制到相關(guān)的源表中;源表再依次復(fù)制更改至其它副本。使用副本表類(lèi)型適用于任何地方的更新的復(fù)制。 上一頁(yè)456789101112下一頁(yè) 用戶(hù)表你不用直接指定一張用戶(hù)表作為目標(biāo)表;然而,對(duì)于任何地方的更新的復(fù)制,一張用戶(hù)表將自動(dòng)做為與其相關(guān)的副本或行副本的目標(biāo)。用戶(hù)表是副本的父母,而且它的拷貝依靠于副本。副本的父母從依靠副本那里接受更新,假如沒(méi)有沖突檢測(cè),它將復(fù)制更改到其它依靠副本。副本的父母是主要數(shù)據(jù)源。假如任何更新沖突被檢測(cè)到,副本的父母的內(nèi)容成功。典型情況下,你的應(yīng)用程序訪(fǎng)問(wèn)依靠的副本表;然而,當(dāng)副本不可用時(shí),它們將連接至包含用戶(hù)表的服務(wù)器上。應(yīng)用更新的調(diào)度同步復(fù)制將連續(xù)的遞送更新。當(dāng)源數(shù)據(jù)發(fā)生改變,它將臨時(shí)存儲(chǔ)起來(lái),繼而轉(zhuǎn)送到目標(biāo)。只有更改已經(jīng)復(fù)制到目標(biāo)數(shù)據(jù)庫(kù),源數(shù)據(jù)庫(kù)才進(jìn)行提交。這種類(lèi)型的復(fù)制也稱(chēng)之為實(shí)時(shí)復(fù)制。異步復(fù)制將分階段遞送更新。當(dāng)源數(shù)據(jù)發(fā)生改變,它將在事先設(shè)定的時(shí)間間隔內(nèi)臨時(shí)存儲(chǔ)起來(lái),而后再繼續(xù)轉(zhuǎn)送到目標(biāo)。時(shí)間間隔可以用時(shí)間(秒、分、時(shí))度量或用指定的事件(午夜,或一天中的其它時(shí)間)來(lái)度量。假如更改沒(méi)能被應(yīng)用于目標(biāo)數(shù)據(jù)庫(kù)(例如,目標(biāo)數(shù)據(jù)庫(kù)或者網(wǎng)絡(luò)停機(jī)),它們將被存儲(chǔ)起來(lái)稍后再被應(yīng)用,應(yīng)用的順序?qū)凑赵谠磾?shù)據(jù)庫(kù)上的發(fā)生順序。這種復(fù)制類(lèi)型提供了比同步復(fù)制更多的好處:更好的利用網(wǎng)絡(luò)資源,更少的數(shù)據(jù)庫(kù)連接,在數(shù)據(jù)到達(dá)目標(biāo)數(shù)據(jù)庫(kù)之前有機(jī)會(huì)提高數(shù)據(jù)。例子以下操作或命令主要在DB2的控制中心或命令控制臺(tái)中進(jìn)行(紅色部分根據(jù)具體情況調(diào)整),相關(guān)命令更具體的使用參見(jiàn)DB2幫助文檔。建立復(fù)制環(huán)境先創(chuàng)建文件夾C:示例以存放一些腳本文件1.創(chuàng)建源數(shù)據(jù)庫(kù)DB2 CREATE DB DB_S2.將數(shù)據(jù)庫(kù)日志改為歸檔日志CaptureDB2 UPDATE DB CFG FOR DB_S USING LOGRETAIN Capture 上一頁(yè)56789101112下一頁(yè) 3.根據(jù)需要調(diào)整日志大小(假如需要的話(huà))4.備份數(shù)據(jù)庫(kù)(改為歸檔日志的數(shù)據(jù)庫(kù)必須先備份才能對(duì)其進(jìn)行操作)DB2 BACKUP DB DB_S5.創(chuàng)建源表DB2 CONNECT TO DB_S USER UserName USING PasswordDB2 CREATE TABLE TAB_1_S (COL_1 VARCHAR(20) NOT NULL, COL_2 VARCHAR(20), PRIMARY KEY(COL_1))6.定義復(fù)制源在控制中心左邊樹(shù)型列表中數(shù)據(jù)庫(kù)DB_S下選中表,右邊列表列出了所有的表,用右鍵點(diǎn)擊表TAB_1_S,在彈出的菜單中選中定義為復(fù)制源—>定制,接受默認(rèn)選項(xiàng),點(diǎn)擊確定,彈出現(xiàn)在運(yùn)行還是保存窗口,接受默認(rèn)的保存設(shè)置,點(diǎn)擊確定,彈出選擇系統(tǒng)名窗口,選擇數(shù)據(jù)庫(kù)所在系統(tǒng),點(diǎn)擊確定,彈出文件瀏覽器,把當(dāng)前目錄定位到C:示例,在路徑中輸入文件名tab_1_replscr.sql,點(diǎn)擊確定。保存成功后可以用文本編輯器查看tab_1_replscr.sql中的內(nèi)容,可以發(fā)現(xiàn)里邊主要是生成CD表,和注冊(cè)復(fù)制源(通過(guò)往表ASN.IBMSNAP_REGISTER中插入記錄)的SQL語(yǔ)句。7.運(yùn)行復(fù)制源用右鍵點(diǎn)擊控制中心左邊樹(shù)型列表中數(shù)據(jù)庫(kù)DB_S下的復(fù)制源,在彈出菜單中選擇運(yùn)行SQL文件…,彈出選擇系統(tǒng)名窗口,選擇數(shù)據(jù)庫(kù)所在系統(tǒng)名,確定,在彈出的文件瀏覽器中選擇tab_1_replscr.sql后確定,假如成功,用右鍵進(jìn)行刷新,將顯示出新定義的復(fù)制源TAB_1_S。8.將捕捉程序與源數(shù)據(jù)庫(kù)綁定(注重:必須轉(zhuǎn)跳到DB2的SQLLIBnd目錄下)CD C:Program FilesSQLLIBndDB2 CONNECT TO DB_S USER UserName USING PasswordDB2 BIND @CAPTURE.LST ISOLATION UR BLOCKING ALLDB2 BIND @APPLYUR.LST ISOLATION UR BLOCKING ALLDB2 BIND @APPLYCS.LST ISOLATION CS BLOCKING ALL 上一頁(yè)6789101112下一頁(yè)
標(biāo)簽:
DB2
數(shù)據(jù)庫(kù)
排行榜
