亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關(guān)注微信公眾號

詳解Oracle分布式系統(tǒng)數(shù)據(jù)復(fù)制技術(shù)
2007-04-25   ruoo.com

  一個(gè)中型或大型公司往往由地理上分散的部門所組成,這些部門通常需要進(jìn)行數(shù)據(jù)共享。針對這些共享數(shù)據(jù),可以將其存儲在某個(gè)站點(diǎn)上,需要的用戶都從這個(gè)站點(diǎn)上存取。這種方案的優(yōu)點(diǎn)是數(shù)據(jù)的一致性容易保證,但其缺點(diǎn)也是很突出的,那就是該站點(diǎn)的負(fù)載大、網(wǎng)絡(luò)負(fù)載大,遠(yuǎn)程用戶的數(shù)據(jù)響應(yīng)遲緩。數(shù)據(jù)復(fù)制技術(shù)可以有效地解決這個(gè)問題,它通過將這些共享數(shù)據(jù)復(fù)制到位于不同地點(diǎn)的多個(gè)數(shù)據(jù)庫中,從而實(shí)現(xiàn)數(shù)據(jù)的本地訪問,減少了網(wǎng)絡(luò)負(fù)荷,并提高了數(shù)據(jù)訪問的性能,而且通過對數(shù)據(jù)庫中的數(shù)據(jù)定期同步(通常是每天晚上),從而確保了所有的用戶使用同樣的、最新的數(shù)據(jù)。該技術(shù)適用于用戶數(shù)量較大、地理分布較廣、而且需要實(shí)時(shí)地訪問相同數(shù)據(jù)的應(yīng)用模式。

  數(shù)據(jù)復(fù)制的概念及特點(diǎn)

  1、數(shù)據(jù)復(fù)制的概念及分類:

  數(shù)據(jù)復(fù)制,就是將數(shù)據(jù)庫中的數(shù)據(jù)拷貝到另外一個(gè)或多個(gè)不同的物理站點(diǎn)上,從而保持源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫中指定數(shù)據(jù)的一致性。

  按照數(shù)據(jù)復(fù)制的實(shí)時(shí)性,數(shù)據(jù)復(fù)制可分為同步數(shù)據(jù)復(fù)制和異步數(shù)據(jù)復(fù)制。同步數(shù)據(jù)復(fù)制是指將本地生產(chǎn)數(shù)據(jù)以完全同步的方式復(fù)制到異地,每一本地IO交易均需等待遠(yuǎn)程復(fù)制的完成方予以釋放。異步數(shù)據(jù)復(fù)制則是指將本地生產(chǎn)數(shù)據(jù)以后臺同步的方式復(fù)制到異地,每一本地IO交易均正常釋放,無需等待遠(yuǎn)程復(fù)制的完成。同步復(fù)制實(shí)時(shí)性強(qiáng),遠(yuǎn)端數(shù)據(jù)與本地?cái)?shù)據(jù)完全同步。但這種方式受帶寬影響較大,數(shù)據(jù)傳輸距離較短。異步復(fù)制不影響本地交易,傳輸距離長,但其數(shù)據(jù)比本地?cái)?shù)據(jù)略有延遲。在異步復(fù)制環(huán)境中,對于所有應(yīng)用最關(guān)鍵的就是要確保數(shù)據(jù)的一致性。

  按照復(fù)制站點(diǎn)的類型,數(shù)據(jù)復(fù)制可分為多主控站點(diǎn)復(fù)制、物化視圖復(fù)制及混合復(fù)制。多主控站點(diǎn)復(fù)制也稱為對等站點(diǎn)復(fù)制,其中每個(gè)站點(diǎn)都是主控站點(diǎn),都需要與其他站點(diǎn)進(jìn)行信息交流,各站點(diǎn)之間是平等的。物化視圖復(fù)制包含一個(gè)主控站點(diǎn)、一個(gè)或多個(gè)物化視圖站點(diǎn),

  物化視圖中的內(nèi)容可以為目標(biāo)主對象在某個(gè)時(shí)間點(diǎn)的全部拷貝或部分拷貝,其中目標(biāo)主對象既可以是主控站點(diǎn)上的表也可以是物化視圖站點(diǎn)上的主物化視圖。混合復(fù)制包含多個(gè)主控站點(diǎn)和多個(gè)物化視圖站點(diǎn),是主控站點(diǎn)復(fù)制和物化視圖復(fù)制的結(jié)合體,適合于復(fù)雜的業(yè)務(wù)情況。

  2、數(shù)據(jù)復(fù)制的特點(diǎn):

  數(shù)據(jù)復(fù)制通過在多個(gè)站點(diǎn)上建立備份,能夠提高數(shù)據(jù)的安全性,同時(shí)也提高了數(shù)據(jù)的可用性,這是因?yàn)槿绻粋€(gè)站點(diǎn)出現(xiàn)了問題,用戶可以選擇其他站點(diǎn)繼續(xù)進(jìn)行操作,應(yīng)用系統(tǒng)還可繼續(xù)運(yùn)行,從而數(shù)據(jù)復(fù)制提供了容錯(cuò)保護(hù)機(jī)制。

  然而數(shù)據(jù)復(fù)制最基本的功能是提高數(shù)據(jù)庫的性能。它通過將遠(yuǎn)程數(shù)據(jù)庫中的數(shù)據(jù)復(fù)制到本地,使得應(yīng)用能夠就近訪問數(shù)據(jù),從而降低網(wǎng)絡(luò)傳輸負(fù)載,提高效率。而且在數(shù)據(jù)復(fù)制系統(tǒng)中,可以提供多個(gè)站點(diǎn)之間的負(fù)載平衡,讓這幾個(gè)用戶使用這個(gè)服務(wù)器,另外幾個(gè)用戶可以使用其他的服務(wù)器,以避免某些站點(diǎn)負(fù)載過重。

  物化視圖還提供了按子集進(jìn)行復(fù)制,這樣各站點(diǎn)就可只復(fù)制自己需要的數(shù)據(jù),也能減輕網(wǎng)絡(luò)的傳輸量。

  數(shù)據(jù)復(fù)制的實(shí)現(xiàn)方法

  在具體的實(shí)現(xiàn)之前,首先要做好設(shè)計(jì)與規(guī)劃。這就需要細(xì)致分析具體的業(yè)務(wù)情況,設(shè)計(jì)出一套能夠滿足業(yè)務(wù)需要的方案。通常在設(shè)計(jì)過程中,需要確定出要建立的數(shù)據(jù)庫站點(diǎn),各站點(diǎn)的類型,需要復(fù)制的數(shù)據(jù)對象,以及同步方式、沖突解決方案等內(nèi)容。

  在設(shè)計(jì)完成之后,就可具體來實(shí)現(xiàn)數(shù)據(jù)復(fù)制,數(shù)據(jù)復(fù)制的實(shí)現(xiàn)主要包括以下幾步:

  (1)創(chuàng)建復(fù)制站點(diǎn);

  (2)創(chuàng)建組對象;

  (3)配置沖突解決方案。

  下面我們舉一個(gè)例子來說明各步具體需要完成的工作。在這個(gè)例子中我們采用多主控站點(diǎn)復(fù)制方式,設(shè)有兩個(gè)主控站點(diǎn)和兩個(gè)共享數(shù)據(jù)表。兩個(gè)主控站點(diǎn)分別為:處理站點(diǎn)(cl.world)和解釋站點(diǎn)(js.wo rld);兩個(gè)數(shù)據(jù)表為測區(qū)( survey)和測線( line)。

  STEP1 創(chuàng)建復(fù)制站點(diǎn):

  (1)首先以SYSTEM身份登陸主站點(diǎn)數(shù)據(jù)庫cl.worldCONNECT system/manager@cl.world;

  (2)創(chuàng)建用戶—復(fù)制管理員,并為該用戶授權(quán)復(fù)制管理員負(fù)責(zé)復(fù)制站點(diǎn)的創(chuàng)建和管理,每個(gè)復(fù)制站點(diǎn)都必須創(chuàng)建復(fù)制管理員以下為引用的內(nèi)容:

     CREATE USER repadmin IDENTIFIED BY repadmin;
    BEGIN
     DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username => ’repadmin’);
    END;

  (3)為本站點(diǎn)指定傳播者(傳播者負(fù)責(zé)將本地最新更新的數(shù)據(jù)傳播到其他站點(diǎn)上):

    BEGIN
     DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => ’repadmin’);
    END;

  (4)為本站點(diǎn)指定接收者(接收者負(fù)責(zé)接收其他站點(diǎn)上的傳播者傳送過來的數(shù)據(jù)):

    BEGIN
    DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
     username => ’repadmin’,
     privilege_type => ’receiver’,
     list_of_gnames => NULL);
    END;

  (5)確定清除時(shí)間:

  為了使傳送過來事務(wù)隊(duì)列不致過大,需要將成功加載的事務(wù)從事物隊(duì)列里清除掉,這里設(shè)定每小時(shí)清除一次:

    CONNECT repadmin/repadmin@cl.world
    BEGIN
     DBMS_DEFER_SYS.SCHEDULE_PURGE (
    next_date => SYSDATE,
    interval => ’SYSDATE + 1/24’,
    delay_seconds => 0);
    END;

  在建立好站點(diǎn)cl.world后,以同樣的方法創(chuàng)建站點(diǎn)js. world。

  (6)創(chuàng)建各主控站點(diǎn)之間的調(diào)度鏈接:

  創(chuàng)建各主控站點(diǎn)之間的調(diào)度鏈接需要先在各主控站點(diǎn)間建立數(shù)據(jù)庫鏈接,之后為每個(gè)數(shù)據(jù)庫鏈接定義調(diào)度時(shí)間。

  首先,在處理站點(diǎn)上建立與解釋站點(diǎn)的數(shù)據(jù)庫鏈接,這里需要先建立一個(gè)公用數(shù)據(jù)庫鏈接,供其他私有數(shù)據(jù)庫鏈接來使用。

  以下為引用的內(nèi)容:

    CONNECT SYSTEM/MANAGER@cl.world
    CREATE PUBLIC DATABASE LINK js.world USING ’js.world’;
    CONNECT repadmin/repadmin@cl.world
    CREATE DATABASE LINK js.world CONNECT TO repadmin
    IDENTIFIED BY repadmin;

  同樣,在解釋站點(diǎn)上建立與處理站點(diǎn)的數(shù)據(jù)庫鏈接。

  以下為引用的內(nèi)容:

    CONNECT SYSTEM/MANAGER@js.world
    CREATE PUBLIC DATABASE LINK cl.world USING ’cl.world’;
    CONNECT repadmin/repadmin@js.world
    CREATE DATABASE LINK cl.world CONNECT TO repadmin
    IDENTIFIED BY repadmin;

  調(diào)度鏈接確定本站點(diǎn)上的事務(wù)向其他站點(diǎn)發(fā)送的頻度,下面的代碼為10分鐘一次:

  以下為引用的內(nèi)容:

    CONNECT repadmin/repadmin@cl.world
    BEGIN
    DBMS_DEFER_SYS.SCHEDULE_PUSH (
    destination => ’js.world’,
    interval => ’SYSDATE + (1/144)’,
    next_date => SYSDATE,
    parallelism => 1,
    execution_seconds => 1500,
    delay_seconds => 1200);
    END;

  在解釋站點(diǎn)上做相同的工作STEP2 創(chuàng)建主控組在復(fù)制環(huán)境中,Oracle用組來管理復(fù)制對象。通過將相關(guān)的復(fù)制對象放在一個(gè)組里,從而方便對大量數(shù)據(jù)對象的管理。

  這里我們假設(shè)用戶模式integr ation 在處理站點(diǎn)和解釋站點(diǎn)都已存在,而且表測區(qū)(survey )和測線(line)也已經(jīng)創(chuàng)建。

  (1)創(chuàng)建主控組對象 以下為引用的內(nèi)容:

    CONNECT repadmin/repadmin@cl.world
    BEGIN
    DBMS_REPCAT.CREATE_MASTER_REPGROUP (
    gname => ’inte_repg’);
    END;

  (2)向主控組中添加數(shù)據(jù)對象,將測區(qū)表survey加入到組inte_repg中以下為引用的內(nèi)容:

    BEGIN
    DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
    gname => ’inte_repg’,
    type => ’TABLE’,
    oname => ’survey’,
    sname => ’integration’,
    use_existing_object => TRUE,
    copy_rows => FALSE);
    END;

  以同樣的方法將測線表line加入到組inte_repg中。

  (3)在主控組中添加其他參與復(fù)制的站點(diǎn),數(shù)據(jù)庫之間的同步方式在此指定以下為引用的內(nèi)容:

    BEGIN
    DBMS_REPCAT.ADD_MASTER_DATABASE (
    gname => ’inte_repg’,
    master => ’js.world’,
    use_existing_objects => TRUE,
    copy_rows => FALSE,
    propagation_mode => ’ASYNCHRONOUS’);
    END;

  (4)如果可能出現(xiàn)沖突,則需要配置沖突解決方案。

  (5)為每個(gè)對象生成復(fù)制支持,以下為引用的內(nèi)容:

    BEGIN
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
    sname => ’integration’,
    oname => ’survey’,
    type => ’TABLE’,
    min_communication => TRUE);
    END;

  測線表line也一樣。
 
  (6)重新開始復(fù)制以下為引用的內(nèi)容:

    BEGIN
    DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
    gname => ’inte_repg’);
    END;

  以同樣的方式設(shè)置解釋站點(diǎn)。設(shè)置成功后,數(shù)據(jù)復(fù)制過程就宣告完畢,庫中的數(shù)據(jù)就可進(jìn)行復(fù)制。

  數(shù)據(jù)復(fù)制中沖突的解決方案

  在復(fù)制環(huán)境中,盡管在數(shù)據(jù)庫和應(yīng)用程序設(shè)計(jì)過程中,會盡量避免各站點(diǎn)間沖突的發(fā)生,但完全避免沖突的可能性還是比較小的,那么一旦沖突發(fā)生,就需要一個(gè)按照具體業(yè)務(wù)規(guī)則的沖突解決機(jī)制,來使得各站點(diǎn)的數(shù)據(jù)保持一致。

  首先需要分析哪些對象容易出現(xiàn)沖突。通常來說,靜態(tài)的數(shù)據(jù)變化少,沖突出現(xiàn)的可能性也小;而有些數(shù)據(jù)變化非常大,沖突出現(xiàn)的可能性也大。確定了沖突易發(fā)的對象后,需要確定怎樣解決沖突,比如在各站點(diǎn)之間建立優(yōu)先次序,在數(shù)據(jù)不一致時(shí),以某個(gè)站點(diǎn)上的為準(zhǔn);或以某個(gè)站點(diǎn)上最新的修改為準(zhǔn)。

  Oracle提供了多中沖突解決方案,具體包括:針對更新沖突的方案、針對唯一性沖突的方案、針對刪除沖突的方案。除了這些方案以外,用戶還可以自定義沖突解決方法。每種方案都有自己的適用情況,那么我們需要根據(jù)具體的業(yè)務(wù)來選擇合適的沖突解決方案。

  結(jié)束語

  本文詳細(xì)介紹了分布式系統(tǒng)Oracle中的數(shù)據(jù)復(fù)制技術(shù),在具體應(yīng)用中,還有許多比較復(fù)雜的問題需要解決,比如主控組中如果包含循環(huán)依賴的表或自相關(guān)的表時(shí)如何處理;如何利用模版機(jī)制來創(chuàng)建物化視圖站點(diǎn);如何對數(shù)據(jù)復(fù)制環(huán)境進(jìn)行管理與維護(hù)。這些問題需要在實(shí)際應(yīng)用中逐步探索,深入研究。

熱詞搜索:

上一篇:當(dāng)linux終端出現(xiàn)混亂時(shí),如何讓它恢復(fù)正常
下一篇:網(wǎng)絡(luò)工程師學(xué)習(xí)筆記

分享到: 收藏