數(shù)據(jù)庫(kù)復(fù)制的設(shè)計(jì)和管理
掃描二維碼
隨時(shí)隨地手機(jī)看文章
【摘 要】 介紹數(shù)據(jù)庫(kù)復(fù)制在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的應(yīng)用、設(shè)計(jì)和管理,給出了設(shè)計(jì)步驟和設(shè)計(jì)時(shí)考慮的因素。對(duì)設(shè)計(jì)和應(yīng)用中出現(xiàn)的沖突問(wèn)題進(jìn)行了分析并給出了解決辦法。對(duì)于數(shù)據(jù)庫(kù)復(fù)制環(huán)境的維護(hù)和管理也作了陳述。
關(guān)鍵詞:數(shù)據(jù)庫(kù),分布式系統(tǒng),復(fù)制,管理
1 數(shù)據(jù)庫(kù)復(fù)制的原理
數(shù)據(jù)庫(kù)復(fù)制是在分布式數(shù)據(jù)庫(kù)系統(tǒng)中使用非常廣泛的技術(shù)。分布式數(shù)據(jù)庫(kù)系統(tǒng)由多個(gè)相同或不同的數(shù)據(jù)庫(kù)組成,它們通過(guò)局域網(wǎng)或廣域網(wǎng)相連,不同數(shù)據(jù)庫(kù)的數(shù)據(jù)之間有非常緊密的關(guān)系。在分布式數(shù)據(jù)庫(kù)系統(tǒng)中應(yīng)用可訪問(wèn)本地和遠(yuǎn)程的數(shù)據(jù)庫(kù),使用客戶服務(wù)器體系結(jié)構(gòu)處理信息請(qǐng)求。不同物理數(shù)據(jù)庫(kù)之間使用數(shù)據(jù)庫(kù)鏈路連接,使得客戶端對(duì)它們的訪問(wèn)就象訪問(wèn)一個(gè)邏輯數(shù)據(jù)庫(kù)一樣。分布式數(shù)據(jù)庫(kù)系統(tǒng)中各個(gè)數(shù)據(jù)庫(kù)協(xié)同工作,但每個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)是個(gè)獨(dú)立的數(shù)據(jù)庫(kù),可由不同部門分別進(jìn)行管理和數(shù)據(jù)庫(kù)的升級(jí),一個(gè)數(shù)據(jù)庫(kù)出現(xiàn)故障不會(huì)影響其它數(shù)據(jù)庫(kù)的使用。在分布式數(shù)據(jù)庫(kù)系統(tǒng)中的每個(gè)獨(dú)立的數(shù)據(jù)庫(kù)一般被稱為站點(diǎn)或數(shù)據(jù)庫(kù)站點(diǎn)。
在應(yīng)用中,采用數(shù)據(jù)庫(kù)復(fù)制的原因是需定期地將信息傳播出去,或定期地從某地獲得信息。
可以O(shè)racle數(shù)據(jù)庫(kù)為例來(lái)說(shuō)明數(shù)據(jù)庫(kù)工作的基本原理。Oracle數(shù)據(jù)庫(kù)的復(fù)制是采用數(shù)據(jù)庫(kù)的后臺(tái)進(jìn)程自動(dòng)實(shí)現(xiàn)的。負(fù)責(zé)復(fù)制工作的后臺(tái)進(jìn)程個(gè)數(shù)和它們被激活的時(shí)間是由數(shù)據(jù)庫(kù)參數(shù)確定的。數(shù)據(jù)庫(kù)的后臺(tái)進(jìn)程是由系統(tǒng)進(jìn)程進(jìn)行管理,經(jīng)過(guò)設(shè)定的時(shí)間間隔執(zhí)行它們預(yù)定的工作,以實(shí)現(xiàn)數(shù)據(jù)定期地從源站點(diǎn)到目標(biāo)站點(diǎn)的傳播。Oracle數(shù)據(jù)庫(kù)具有基本復(fù)制和高級(jí)復(fù)制方法。所謂基本復(fù)制是指從主表到復(fù)制點(diǎn)生成的數(shù)據(jù)是只讀的,用戶不能對(duì)復(fù)制生成的數(shù)據(jù)實(shí)施修改操作,這種實(shí)體被稱為快照??煺盏男畔⒉粩嗟匕凑赵O(shè)計(jì)時(shí)定義的時(shí)間間隔從主表進(jìn)行更新,間隔的設(shè)定可根據(jù)應(yīng)用對(duì)信息要求的實(shí)時(shí)性而定。高級(jí)復(fù)制相對(duì)基本復(fù)制而言各復(fù)制點(diǎn)都可對(duì)數(shù)據(jù)進(jìn)行修改,每個(gè)數(shù)據(jù)庫(kù)站點(diǎn)進(jìn)行的修改都可傳播到其它站點(diǎn),每個(gè)站點(diǎn)都可看到其它站點(diǎn)輸入或修改的數(shù)據(jù)。數(shù)據(jù)的一致性是采用高級(jí)復(fù)制時(shí)須全面考慮的問(wèn)題。
數(shù)據(jù)庫(kù)的復(fù)制用途很大,但不同的應(yīng)用有不同的要求,Oracle提供的復(fù)制方法能滿足大多數(shù)的需要,但有的實(shí)際問(wèn)題,如帶有統(tǒng)計(jì)匯總計(jì)算功能的復(fù)制,只有利用Oracle提供的思想方法自行開(kāi)發(fā)復(fù)制軟件,將復(fù)制和匯總合二為一。理解了復(fù)制工作的基本原理后,自行開(kāi)發(fā)復(fù)制軟件也就是輕而易舉的事了。
2 數(shù)據(jù)庫(kù)復(fù)制的用途
復(fù)制是在分布式數(shù)據(jù)庫(kù)系統(tǒng)中獲得多個(gè)數(shù)據(jù)庫(kù)信息的方法,如在部隊(duì)的數(shù)據(jù)庫(kù)系統(tǒng)中用于上級(jí)機(jī)關(guān)了解和獲得下屬各部隊(duì)的武器、彈藥、物資等的狀態(tài)情況的數(shù)據(jù)。還可用于沒(méi)條件一直處于連接的環(huán)境、信息的分布使用、信息匯總、提高性能、備份、平衡應(yīng)用的負(fù)載、大批數(shù)據(jù)傳輸?shù)龋邕B鎖店的總店為了統(tǒng)一零售價(jià)格、及時(shí)將商品的價(jià)格發(fā)布給各零售店是非常重要的,為達(dá)到此目的,每個(gè)零售店的數(shù)據(jù)庫(kù)擁有價(jià)格列表的復(fù)制品,每天晚上從總店的主表更新,這是信息的分布使用的典型例子。大批數(shù)據(jù)傳輸主要用于從別的數(shù)據(jù)庫(kù)系統(tǒng)中導(dǎo)入數(shù)據(jù),如從聯(lián)機(jī)事務(wù)處理系統(tǒng)中將信息復(fù)制到?jīng)Q策支持系統(tǒng)中等。
一般說(shuō)來(lái),應(yīng)用只存取本地?cái)?shù)據(jù)庫(kù)的數(shù)據(jù),而限制對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)數(shù)據(jù)的存取,以減少網(wǎng)絡(luò)的負(fù)擔(dān),提高性能;另一方面,如果重要的數(shù)據(jù)已被復(fù)制到其它服務(wù)器,那么在本地服務(wù)器出現(xiàn)故障時(shí),系統(tǒng)仍然可用。使用復(fù)制技術(shù)還能提高數(shù)據(jù)庫(kù)存取的性能、數(shù)據(jù)的安全性和加強(qiáng)應(yīng)用的限制。
利用數(shù)據(jù)庫(kù)復(fù)制的方法有利于及時(shí)獲得最新信息,有利于減少用戶的重復(fù)勞動(dòng),有利于及時(shí)維護(hù)數(shù)據(jù)庫(kù)的一致性。
3 數(shù)據(jù)庫(kù)復(fù)制設(shè)計(jì)的基本步驟
數(shù)據(jù)庫(kù)復(fù)制的基本工作方式是,定義一個(gè)查詢,使用數(shù)據(jù)庫(kù)的作業(yè)管理機(jī)制,自動(dòng)地、定期地從主表更新數(shù)據(jù)。
3.1 基本復(fù)制
基本復(fù)制的設(shè)計(jì)主要包括以下步驟:
(1)建立復(fù)制環(huán)境,確定哪些主表將被復(fù)制,復(fù)制到哪些站點(diǎn)的數(shù)據(jù)庫(kù);
?。?)在復(fù)制的各站點(diǎn),建立復(fù)制用戶和復(fù)制的數(shù)據(jù)庫(kù)鏈路;
?。?)在被復(fù)制的數(shù)據(jù)庫(kù)中建立所有主表的更新日志,更新日志是支持快速更新的關(guān)鍵;
?。?)在復(fù)制的各站點(diǎn),使用數(shù)據(jù)庫(kù)鏈路建立快照;
?。?)在復(fù)制的各站點(diǎn),建立快照的更新組,定義更新時(shí)間和更新間隔,將需同時(shí)更新的快照加入一個(gè)更新組中;
?。?)授予需使用快照的用戶對(duì)快照的查詢權(quán)限。
3.1.1 復(fù)制環(huán)境
在設(shè)計(jì)一個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)時(shí),確定哪些主表將被復(fù)制,檢查每個(gè)參加復(fù)制的表,確認(rèn)每個(gè)表都有主鍵。確定每個(gè)表中哪些信息以什么形式復(fù)制到哪些站點(diǎn)的數(shù)據(jù)庫(kù)。將需復(fù)制的主表根據(jù)其數(shù)據(jù)關(guān)系、應(yīng)用關(guān)系、應(yīng)用對(duì)數(shù)據(jù)的實(shí)時(shí)性要求等進(jìn)行分組。
建議不同服務(wù)器中需復(fù)制的表在不同的數(shù)據(jù)庫(kù)位于相同的用戶名下,對(duì)應(yīng)的用戶采用相同的口令,以便于操作。而采用高級(jí)復(fù)制的具有數(shù)據(jù)復(fù)制關(guān)系的表的結(jié)構(gòu)在各站點(diǎn)應(yīng)一致。
3.1.2 建立用戶和數(shù)據(jù)庫(kù)鏈路
在參加復(fù)制的主站點(diǎn)和復(fù)制點(diǎn)建立對(duì)應(yīng)的用戶以包含復(fù)制對(duì)象。建立主表所在的數(shù)據(jù)庫(kù)到各復(fù)制站點(diǎn)的數(shù)據(jù)庫(kù)鏈路。雖然復(fù)制一般是在不同數(shù)據(jù)庫(kù)的相同用戶之間進(jìn)行,但建立數(shù)據(jù)庫(kù)鏈路時(shí)還是需顯式地指定連接的用戶名和口令。不要建立公共的數(shù)據(jù)庫(kù)鏈路,一般建立屬于直接連接的復(fù)制用戶的私有鏈路。
3.1.3 建立日志
日志是為了記錄對(duì)主表數(shù)據(jù)的輸入、更新、刪除操作,有了日志,系統(tǒng)可識(shí)別哪些數(shù)據(jù)是新產(chǎn)生的需要復(fù)制的數(shù)據(jù),哪些數(shù)據(jù)是已經(jīng)被復(fù)制過(guò)了的,因此每次更新只需復(fù)制那些最新的信息,以減少數(shù)據(jù)的復(fù)制量,降低網(wǎng)絡(luò)流量,縮短復(fù)制的時(shí)間。
在被復(fù)制的數(shù)據(jù)庫(kù)中建立所有主表的更新日志,更新日志只需建立一次即可支持一個(gè)站點(diǎn)到多個(gè)站點(diǎn)的復(fù)制。
3.1.4 建立快照
在每個(gè)復(fù)制站點(diǎn),建立所需的快照。復(fù)制端的快照的邏輯結(jié)構(gòu)是從一個(gè)或多個(gè)主表中進(jìn)行查詢的SQL語(yǔ)句定義的,同時(shí)該SQL語(yǔ)句也定義快照所含的來(lái)自主表的那部分信息,它不能包含合計(jì)、分組、連接、集合功能。
3.1.5 更新
根據(jù)對(duì)主表的分組情況在復(fù)制的各站點(diǎn)建立快照的更新組,根據(jù)需要定義更新時(shí)間和更新間隔,將需同時(shí)更新的快照加入一個(gè)更新組中。
必須設(shè)定怎樣和什么時(shí)候更新復(fù)制端的數(shù)據(jù)??蛇x用完全更新、快速更新、手工更新和自動(dòng)更新方式。更新時(shí)間的設(shè)置需遵循以下原則:
·下次更新時(shí)間為未來(lái)時(shí)間;
·更新間隔大于完成一次更新所需時(shí)間;
·可指定一具體時(shí)間進(jìn)行手工更新。
出現(xiàn)網(wǎng)絡(luò)問(wèn)題或系統(tǒng)錯(cuò)誤時(shí),更新將暫時(shí)被中斷,一旦問(wèn)題解決,更新將恢復(fù)正常。
3.1.6 權(quán)限
對(duì)于使用簡(jiǎn)單復(fù)制方法生成的快照,只需授予用戶查詢權(quán)限,因?yàn)榭煺帐侵蛔x的;對(duì)于使用高級(jí)復(fù)制方法生成的復(fù)制品,可視需求設(shè)置不同權(quán)限,但由于權(quán)限越大,用戶可執(zhí)行的操作越多,產(chǎn)生復(fù)制沖突的可能性越大,因此權(quán)限還需有限制地授予。
3.2 高級(jí)復(fù)制
高級(jí)復(fù)制又分為多站點(diǎn)復(fù)制和可更新快照復(fù)制。其設(shè)計(jì)原理和步驟與基本復(fù)制相似,簡(jiǎn)述如下。多站點(diǎn)復(fù)制包括以下步驟:
?。?)設(shè)計(jì)并建立復(fù)制環(huán)境,確定哪些站點(diǎn)作為高級(jí)復(fù)制的站點(diǎn),哪些主表將參與復(fù)制;
(2)使用復(fù)制管理器,定義參加復(fù)制的站點(diǎn),在復(fù)制的各站點(diǎn),建立包含復(fù)制實(shí)體的用戶和復(fù)制的數(shù)據(jù)庫(kù)鏈路,建立復(fù)制的管理用戶,配置數(shù)據(jù)更新的計(jì)劃;
?。?)建立主復(fù)制組,不同的需參與復(fù)制的實(shí)體可加入不同的組中;
?。?)授予需使用復(fù)制信息的用戶以適當(dāng)?shù)臋?quán)限。
可更新快照復(fù)制包括以下步驟:
?。?)設(shè)計(jì)并建立復(fù)制環(huán)境,確定哪些站點(diǎn)作為復(fù)制的主站點(diǎn),哪些主表和實(shí)體將參與復(fù)制,確定哪些為可更新快照的設(shè)置站點(diǎn);
?。?)在復(fù)制的各站點(diǎn)建立快照管理用戶,建立包含可更新快照實(shí)體的用戶和復(fù)制的數(shù)據(jù)庫(kù)鏈路,配置數(shù)據(jù)更新的時(shí)間和間隔;
(3)在主站點(diǎn)建立快照日志;
(4)在復(fù)制點(diǎn)建立必要的更新組;
?。?)建立快照組,快照組可包含表、存儲(chǔ)過(guò)程、包、函數(shù)、同義詞、視圖等實(shí)體;
(6)授予需使用復(fù)制信息的用戶以適當(dāng)?shù)臋?quán)限。
4 數(shù)據(jù)庫(kù)復(fù)制的設(shè)計(jì)
4.1 數(shù)據(jù)庫(kù)的分布
如何分布和設(shè)計(jì)數(shù)據(jù)庫(kù)需視具體工程應(yīng)用的地理分布、組織關(guān)系、數(shù)據(jù)量、資金和對(duì)數(shù)據(jù)的安全性等情況而定。
數(shù)據(jù)庫(kù)復(fù)制的設(shè)計(jì)要盡可能簡(jiǎn)單,數(shù)據(jù)關(guān)系盡可能簡(jiǎn)化,只要滿足需求即可。盡可能減少維護(hù)管理的工作量。
應(yīng)用存取頻繁的數(shù)據(jù)盡量位于本地?cái)?shù)據(jù)庫(kù),如果這些數(shù)據(jù)由遠(yuǎn)程數(shù)據(jù)庫(kù)進(jìn)行管理,則需考慮將其復(fù)制到本地,這樣既可簡(jiǎn)化應(yīng)用程序的設(shè)計(jì),又可提高數(shù)據(jù)的安全性、降低網(wǎng)絡(luò)流量、提高性能。如果應(yīng)用程序需要同時(shí)存取本地和遠(yuǎn)程的數(shù)據(jù)庫(kù),設(shè)計(jì)時(shí)一定要通過(guò)事務(wù)的同時(shí)提交或回滾以保證數(shù)據(jù)的一致性。
如果采用高級(jí)復(fù)制,因?yàn)榭赡艹霈F(xiàn)多個(gè)站點(diǎn)同時(shí)修改或輸入相同數(shù)據(jù)的可能,所以數(shù)據(jù)復(fù)制需考慮的首要問(wèn)題是數(shù)據(jù)沖突問(wèn)題。設(shè)計(jì)中要盡可能避免數(shù)據(jù)沖突的產(chǎn)生。而設(shè)計(jì)時(shí)不可避免的數(shù)據(jù)沖突要在設(shè)計(jì)時(shí)確定解決方法,在運(yùn)行時(shí)將其配置于復(fù)制環(huán)境以利于在沖突產(chǎn)生時(shí)數(shù)據(jù)庫(kù)能及時(shí)解決問(wèn)題,不致于影響整個(gè)復(fù)制的工作進(jìn)程。
4.2 數(shù)據(jù)沖突的解決
數(shù)據(jù)的沖突是設(shè)計(jì)人員設(shè)計(jì)分布式數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)庫(kù)復(fù)制時(shí)主要解決的問(wèn)題,數(shù)據(jù)沖突主要出現(xiàn)在高級(jí)復(fù)制環(huán)境。
4.2.1 唯一性約束沖突
如果復(fù)制的數(shù)據(jù)將破壞完整性約束(如當(dāng)不同站點(diǎn)的事務(wù)向參加復(fù)制的表中插入主鍵相同的記錄時(shí))將導(dǎo)致唯一性約束沖突。
如果復(fù)制方在插入或修改時(shí)出現(xiàn)違反唯一性約束問(wèn)題,則復(fù)制方檢測(cè)到唯一性約束沖突。
多站點(diǎn)復(fù)制時(shí)網(wǎng)絡(luò)上不同數(shù)據(jù)庫(kù)上的用戶同時(shí)修改或刪除同一記錄或同時(shí)插入主鍵相同的記錄的矛盾,在設(shè)計(jì)時(shí)要考慮充分,可用以下方法避免:
(1)盡量減少需同時(shí)更新數(shù)據(jù)的站點(diǎn)數(shù);
?。?)建立不同取值范圍的序列生成器生成主鍵,避免主鍵重復(fù)的矛盾。但對(duì)于站點(diǎn)很多的情況這種方法不合適。避免主鍵重復(fù)的另一方法是在每一站點(diǎn)采用相同的全范圍的序列生成器,將其與站點(diǎn)的唯一標(biāo)識(shí)結(jié)合作為復(fù)合主鍵;
?。?)在應(yīng)用中不允許修改主鍵。
4.2.2 刪除沖突
如果復(fù)制方在執(zhí)行刪除和更新操作時(shí),主鍵不存在,復(fù)制方將檢測(cè)到一個(gè)刪除沖突。如果一個(gè)事務(wù)試圖刪除已經(jīng)被別的用戶刪除了的或正被別的用戶修改的記錄時(shí)將出現(xiàn)刪除沖突。刪除沖突在復(fù)制環(huán)境中必須避免??刹捎卯惒絼h除方法,即在應(yīng)用程序中不采用刪除命令,而采用標(biāo)記需刪除的記錄,然后系統(tǒng)定期地統(tǒng)一執(zhí)行刪除操作以避免刪除沖突。
4.2.3 更新沖突
當(dāng)不同站點(diǎn)的事務(wù)在幾乎同一時(shí)間修改同一記錄時(shí)將導(dǎo)致更新沖突。
在設(shè)計(jì)時(shí)需盡可能避免更新沖突,但不能徹底杜絕。設(shè)計(jì)時(shí)不能避免的沖突,在設(shè)計(jì)時(shí)要全部理出,針對(duì)不同情況配置數(shù)據(jù)庫(kù)提供的沖突解決方法解決。但數(shù)據(jù)庫(kù)內(nèi)建的沖突解決功能不能解決刪除沖突、對(duì)主鍵的修改、違反參考一致性等沖突,這些需要通過(guò)應(yīng)用的設(shè)計(jì)解決。
4.3 參數(shù)的設(shè)置
要使復(fù)制能自動(dòng)、正常工作,需在參數(shù)文件中適當(dāng)設(shè)置和調(diào)整以下參數(shù):
它們決定復(fù)制進(jìn)程啟動(dòng)的時(shí)間間隔和復(fù)制進(jìn)程的個(gè)數(shù),它們的設(shè)置需與復(fù)制的作業(yè)的多少和間隔進(jìn)行協(xié)調(diào)。
一般第一個(gè)參數(shù)為2(必須大于0)即可,如果數(shù)據(jù)庫(kù)中配置的作業(yè)非常多、有多個(gè)同時(shí)更新的作業(yè),需增大此參數(shù)。其取值范圍為0~9,A~Z。
第二個(gè)參數(shù)單位為秒,定義喚醒服務(wù)器后臺(tái)進(jìn)程的時(shí)間間隔,使用缺省值60。
如果二者設(shè)置不協(xié)調(diào),將導(dǎo)致數(shù)據(jù)庫(kù)不能及時(shí)更新數(shù)據(jù)或后臺(tái)進(jìn)程死鎖。
5 數(shù)據(jù)庫(kù)復(fù)制的管理
數(shù)據(jù)庫(kù)復(fù)制的設(shè)計(jì)主要由研制方完成,而其管理主要是指系統(tǒng)投入使用后的日常管理工作,主要由使用方的數(shù)據(jù)庫(kù)管理員來(lái)完成。
5.1 參數(shù)的修改
在設(shè)計(jì)時(shí),設(shè)計(jì)者會(huì)綜合考慮各種因素以設(shè)置參數(shù),但隨著用戶業(yè)務(wù)的發(fā)展,數(shù)據(jù)量的增大,在數(shù)據(jù)庫(kù)還未出現(xiàn)問(wèn)題時(shí),數(shù)據(jù)庫(kù)管理員應(yīng)及時(shí)地對(duì)
JOB QUEUE PROCESS,JOB QUEUE
INTERVAL參數(shù)進(jìn)行調(diào)整。如果所設(shè)置的參數(shù)不能滿足應(yīng)用的需要,數(shù)據(jù)的復(fù)制將出現(xiàn)問(wèn)題。這可查看快照和數(shù)據(jù)庫(kù)的日志文件,如果出現(xiàn)錯(cuò)誤,日志中有記錄,并且生成CORE文件。后臺(tái)進(jìn)程出現(xiàn)的問(wèn)題數(shù)據(jù)庫(kù)自己能解決,但CORE文件需要數(shù)據(jù)庫(kù)管理員及時(shí)刪除,否則由于它增長(zhǎng)迅速,將很快占滿整個(gè)硬盤。
5.2 更改復(fù)制更新的間隔
復(fù)制作業(yè)執(zhí)行的時(shí)間和觸發(fā)的時(shí)間間隔也是管理員經(jīng)常需調(diào)整的因素。
數(shù)據(jù)庫(kù)管理員能根據(jù)需要更改復(fù)制間隔時(shí)間,以滿足需求的變化。每個(gè)用戶只能更改屬于自己的作業(yè)執(zhí)行間隔。
作業(yè)間隔的設(shè)定一定不能小于執(zhí)行一次數(shù)據(jù)更新所需的時(shí)間。
5.3 取消復(fù)制作業(yè)
由于某種原因不需繼續(xù)執(zhí)行復(fù)制操作時(shí)可取消復(fù)制作業(yè)。有兩種選擇:暫時(shí)終止和徹底刪除。暫時(shí)終止的復(fù)制作業(yè)在將來(lái)需要時(shí)可恢復(fù)執(zhí)行,而徹底刪除的復(fù)制作業(yè)不可恢復(fù),只能重建。
用戶只能停止或取消屬于自己的復(fù)制作業(yè)。
5.4 可能出現(xiàn)的問(wèn)題
下列情況下數(shù)據(jù)庫(kù)的復(fù)制不能正常進(jìn)行:缺少后臺(tái)進(jìn)程,網(wǎng)絡(luò)故障,數(shù)據(jù)庫(kù)例程失敗,以及復(fù)制程序出現(xiàn)錯(cuò)誤。
若由于某種原因復(fù)制作業(yè)不能正常執(zhí)行,數(shù)據(jù)庫(kù)將以一定的時(shí)間間隔重復(fù)執(zhí)行此作業(yè),在經(jīng)過(guò)一定次數(shù)的嘗試后仍不能成功,則該作業(yè)將由數(shù)據(jù)庫(kù)自動(dòng)標(biāo)記為“終止”。一旦造成終止的問(wèn)題被解決,被終止的作業(yè)可人為地讓其執(zhí)行復(fù)制(一旦執(zhí)行成功,該作業(yè)的狀態(tài)將自動(dòng)改變),或?qū)⑵錉顟B(tài)由終止改為自動(dòng)執(zhí)行,讓數(shù)據(jù)庫(kù)自動(dòng)執(zhí)行復(fù)制。如果造成終止的問(wèn)題在數(shù)據(jù)庫(kù)發(fā)現(xiàn)問(wèn)題至設(shè)定的嘗試次數(shù)的時(shí)間范圍之內(nèi)解決,復(fù)制作業(yè)將正常執(zhí)行而不會(huì)終止。
如果復(fù)制方在設(shè)定的時(shí)間得不到數(shù)據(jù)的更新,這時(shí)有可能是后臺(tái)進(jìn)程死鎖,有三種解決方法:人為執(zhí)行復(fù)制作業(yè),將數(shù)據(jù)復(fù)制上來(lái);如果用戶并不急需看到更新的數(shù)據(jù),那么可以再等待一段時(shí)間,Oracle的系統(tǒng)監(jiān)視進(jìn)程將自動(dòng)殺掉死的復(fù)制進(jìn)程,重新生成新的后臺(tái)進(jìn)程,復(fù)制將自動(dòng)恢復(fù);關(guān)閉并重新打開(kāi)數(shù)據(jù)庫(kù),復(fù)制將自動(dòng)恢復(fù)。
每個(gè)用戶只能人工執(zhí)行屬于自己的作業(yè)。
5.5 擴(kuò)充站點(diǎn)的問(wèn)題
如果為了滿足新的需求,需在已建立好的復(fù)制環(huán)境中建立新的快照,則以下三個(gè)條件同時(shí)成立,系統(tǒng)將出錯(cuò):
(1)新的快照須采用快速更新方式更新;
(2)新的快照與某個(gè)已存在的快照是基于相同的主表;
?。?)該已存在的快照在創(chuàng)建新的快照時(shí)能被快速更新。
解決此問(wèn)題的方法是新建的快照采用完全更新方式,或采用以下方法避免問(wèn)題出現(xiàn):在建新的快照之前建立一個(gè)基于同一主表的虛擬快照,以避免在快照創(chuàng)建時(shí)的數(shù)據(jù)更新,然后以快速更新方式建立所需的快照,最后刪除虛擬快照。
6 結(jié)束語(yǔ)
數(shù)據(jù)庫(kù)的復(fù)制是個(gè)非常靈活的技術(shù),恰當(dāng)?shù)貞?yīng)用該技術(shù)將給用戶和設(shè)計(jì)者帶來(lái)意想不到的好處。但復(fù)制的應(yīng)用經(jīng)常會(huì)給數(shù)據(jù)庫(kù)系統(tǒng)的管理帶來(lái)很多麻煩,因此,設(shè)計(jì)數(shù)據(jù)庫(kù)復(fù)制環(huán)境時(shí)要盡可能地簡(jiǎn)單、實(shí)用,以提高系統(tǒng)的可用性。同時(shí),一個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)庫(kù)管理員,必須具有全面的數(shù)據(jù)庫(kù)知識(shí)以保證系統(tǒng)正常、穩(wěn)定地工作。