數(shù)據(jù)庫(kù)05-第五章5節(jié)_第1頁(yè)
數(shù)據(jù)庫(kù)05-第五章5節(jié)_第2頁(yè)
數(shù)據(jù)庫(kù)05-第五章5節(jié)_第3頁(yè)
數(shù)據(jù)庫(kù)05-第五章5節(jié)_第4頁(yè)
數(shù)據(jù)庫(kù)05-第五章5節(jié)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第 5 5 章章數(shù)據(jù)庫(kù)的安全與保護(hù)數(shù)據(jù)庫(kù)的安全與保護(hù)5.1 安全與保護(hù)概述 5.2 數(shù)據(jù)庫(kù)的安全性保護(hù)5.3 數(shù)據(jù)庫(kù)的完整性保護(hù)5.4 數(shù)據(jù)庫(kù)的并發(fā)控制技術(shù) 5.5 數(shù)據(jù)庫(kù)的恢復(fù)技術(shù) 5.6 數(shù)據(jù)庫(kù)的復(fù)制與相關(guān)技術(shù)5.5 數(shù)據(jù)庫(kù)的恢復(fù)技術(shù) 什么是數(shù)據(jù)庫(kù)的恢復(fù)故障的種類(lèi)故障對(duì)數(shù)據(jù)庫(kù)的破壞性恢復(fù)技術(shù)5.5 數(shù)據(jù)庫(kù)的恢復(fù)技術(shù) 計(jì)算機(jī)系統(tǒng)中硬件的故障、軟件的錯(cuò)誤、操作員的失誤以及惡意的破壞等不可避免不可避免。 輕者造成運(yùn)行事務(wù)非正常中斷,影響數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性和一致性,重者使數(shù)據(jù)庫(kù)中全部或部分?jǐn)?shù)據(jù)丟失。 數(shù)據(jù)庫(kù)的恢復(fù): 把數(shù)據(jù)庫(kù)從錯(cuò)誤(不一致)狀態(tài)恢復(fù)到某一已知的正確(一致)狀態(tài)的過(guò)程。5.5 數(shù)

2、據(jù)庫(kù)的恢復(fù)技術(shù) 數(shù)據(jù)庫(kù)恢復(fù)子系統(tǒng):DBMS中的一個(gè)重要組成部分,且相當(dāng)龐大,常常占整個(gè)系統(tǒng)代碼的百分之十以上。 各種現(xiàn)有數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行情況表明,數(shù)據(jù)庫(kù)系統(tǒng)所采用的恢復(fù)技術(shù)是否行之有效,不僅對(duì)系統(tǒng)的可靠程度起著決定性作用,而且對(duì)系統(tǒng)的運(yùn)行效率也有很大影響,是衡量系統(tǒng)性能優(yōu)劣的重要指標(biāo)。是衡量系統(tǒng)性能優(yōu)劣的重要指標(biāo)。5.1.1 故障的種類(lèi) 1) 事務(wù)故障 2) 系統(tǒng)故障 3) 介質(zhì)故障 4) 病毒破壞 5) 故障對(duì)數(shù)據(jù)庫(kù)的破壞性1) 事務(wù)故障 事務(wù)在運(yùn)行過(guò)程中事務(wù)在運(yùn)行過(guò)程中由于某種原因,如輸入錯(cuò)誤、運(yùn)算溢出、違反了某些完整性約束條件、某些應(yīng)用程序出錯(cuò)、并行事務(wù)發(fā)生死鎖等等,使事務(wù)尚未運(yùn)行完成或提

3、尚未運(yùn)行完成或提交就中斷交就中斷了,這種情況稱為事務(wù)故障。2) 系統(tǒng)故障 系統(tǒng)在運(yùn)行過(guò)程中系統(tǒng)在運(yùn)行過(guò)程中,由于某種原因,如操作系統(tǒng)或DBMS代碼錯(cuò)誤、操作員操作失誤、特定類(lèi)型的硬件錯(cuò)誤(如CPU故障)、突然停電等造成系統(tǒng)停止運(yùn)行,致使所有正在運(yùn)行的事正在運(yùn)行的事務(wù)務(wù)都以非正常的方式終止非正常的方式終止. 問(wèn)題:內(nèi)存中數(shù)據(jù)庫(kù)區(qū)的信息全部丟失,但存儲(chǔ)在外部設(shè)備上的原有數(shù)據(jù)并未受到影響,但數(shù)據(jù)庫(kù)可能處于不一致?tīng)顟B(tài),這種情況稱為系統(tǒng)故障。3) 介質(zhì)故障 系統(tǒng)在運(yùn)行過(guò)程中系統(tǒng)在運(yùn)行過(guò)程中,由于某種原因,如磁盤(pán)損壞、瞬時(shí)強(qiáng)磁場(chǎng)干擾、操作系統(tǒng)的某種潛在錯(cuò)誤,使存儲(chǔ)在外存儲(chǔ)器中的數(shù)據(jù)部分丟失或全部丟失存儲(chǔ)在

4、外存儲(chǔ)器中的數(shù)據(jù)部分丟失或全部丟失。這種情況稱為介質(zhì)故障。 這種故障比前兩類(lèi)故障發(fā)生的可能性要小的多,但所造成的破壞最大。4) 病毒破壞 計(jì)算機(jī)病毒是一種人為編制的、能引起計(jì)算機(jī)系統(tǒng)故障、甚至破壞整個(gè)計(jì)算機(jī)系統(tǒng)的程序。這種程序與其它程序不同之處是,它能象微生物學(xué)所稱的病毒一樣繁殖和傳播,并造成對(duì)計(jì)算機(jī)系統(tǒng)包括數(shù)據(jù)庫(kù)的危害。 計(jì)算機(jī)病毒對(duì)數(shù)據(jù)庫(kù)的破壞本質(zhì)上是一種人為人為的破壞的破壞。5)故障對(duì)數(shù)據(jù)庫(kù)的破壞性 數(shù)據(jù)庫(kù)系統(tǒng)中的各類(lèi)故障對(duì)數(shù)據(jù)庫(kù)的影響概括起來(lái)主要有兩類(lèi): (1) 數(shù)據(jù)庫(kù)結(jié)構(gòu)被破壞:一般病毒故障及介質(zhì)故障引起,比較嚴(yán)重。 (2) 數(shù)據(jù)庫(kù)結(jié)構(gòu)沒(méi)有被破壞,但數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性遭到破壞,一般

5、由系統(tǒng)故障及事務(wù)故障引起。5.5.2 恢復(fù)技術(shù) 數(shù)據(jù)恢復(fù):利用存儲(chǔ)在系統(tǒng)其它地方的冗余數(shù)據(jù)來(lái)修復(fù)數(shù)據(jù)庫(kù)中被破壞的不正確或不一致的數(shù)據(jù)。 恢復(fù)機(jī)制涉及兩個(gè)關(guān)鍵問(wèn)題: 1)如何建立冗余數(shù)據(jù)? 最常用方法: 數(shù)據(jù)轉(zhuǎn)儲(chǔ)和日志文件 。 2)如何利用冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫(kù)恢復(fù)? 這是數(shù)據(jù)恢復(fù)策略和方法問(wèn)題。 5.5.2 恢復(fù)技術(shù)1、數(shù)據(jù)轉(zhuǎn)儲(chǔ) (1) 數(shù)據(jù)轉(zhuǎn)儲(chǔ)的定義 (2) 數(shù)據(jù)轉(zhuǎn)儲(chǔ)的分類(lèi) (3)怎樣確定適當(dāng)?shù)霓D(zhuǎn)儲(chǔ)周期與轉(zhuǎn)儲(chǔ)方法(1) 數(shù)據(jù)轉(zhuǎn)儲(chǔ)的定義 數(shù)據(jù)轉(zhuǎn)儲(chǔ):數(shù)據(jù)轉(zhuǎn)儲(chǔ):由DBA定期地將整個(gè)數(shù)據(jù)庫(kù)復(fù)制到磁帶或另一個(gè)磁盤(pán)上保存起來(lái)形成 備用數(shù)據(jù)文件的過(guò)程。 備用的數(shù)據(jù)文件也稱為后備副本或后援副本后備副本或后援副本

6、。 數(shù)據(jù)轉(zhuǎn)儲(chǔ)是數(shù)據(jù)庫(kù)恢復(fù)中最常用的基本技術(shù)。 當(dāng)數(shù)據(jù)庫(kù)遭到破壞后就可以利用后備副本把數(shù)據(jù)庫(kù)恢復(fù)到某個(gè)一致性狀態(tài)。(2) 數(shù)據(jù)轉(zhuǎn)儲(chǔ)的分類(lèi)靜態(tài)轉(zhuǎn)儲(chǔ)和動(dòng)態(tài)轉(zhuǎn)儲(chǔ) 。數(shù)據(jù)庫(kù)狀態(tài)海量轉(zhuǎn)儲(chǔ)與增量轉(zhuǎn)儲(chǔ)。 轉(zhuǎn)儲(chǔ)數(shù)據(jù)量靜態(tài)轉(zhuǎn)儲(chǔ)和動(dòng)態(tài)轉(zhuǎn)儲(chǔ)靜態(tài)轉(zhuǎn)儲(chǔ):轉(zhuǎn)儲(chǔ)期間不允許對(duì)數(shù)據(jù)庫(kù)有任何操作(包括存取、修改等)活動(dòng)。 靜態(tài)轉(zhuǎn)儲(chǔ)比較簡(jiǎn)單,但降低了數(shù)據(jù)庫(kù)的可用性。因?yàn)檗D(zhuǎn)儲(chǔ)要等到用戶事務(wù)全部結(jié)束后才能進(jìn)行,且新的事務(wù)必須等待轉(zhuǎn)儲(chǔ)結(jié)束后才能執(zhí)行。動(dòng)態(tài)轉(zhuǎn)儲(chǔ):在轉(zhuǎn)儲(chǔ)期間允許對(duì)數(shù)據(jù)庫(kù)進(jìn)行存取等操作,即數(shù)據(jù)轉(zhuǎn)儲(chǔ)和用戶事務(wù)可并發(fā)執(zhí)行。 動(dòng)態(tài)轉(zhuǎn)儲(chǔ)可以克服靜態(tài)轉(zhuǎn)儲(chǔ)的缺點(diǎn),轉(zhuǎn)儲(chǔ)工作可隨時(shí)進(jìn)行,但實(shí)現(xiàn)技術(shù)要求較高。因?yàn)檗D(zhuǎn)儲(chǔ)操作與用戶事務(wù)并行執(zhí)行,不容易

7、保證轉(zhuǎn)儲(chǔ)結(jié)束時(shí)后備副本上數(shù)據(jù)的一致性。海量轉(zhuǎn)儲(chǔ)與增量轉(zhuǎn)儲(chǔ)海量轉(zhuǎn)儲(chǔ):每次轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)的全部數(shù)據(jù)。增量轉(zhuǎn)儲(chǔ):每次只轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)中上次轉(zhuǎn)儲(chǔ)以來(lái)所產(chǎn)生變化的那些數(shù)據(jù),即數(shù)據(jù)庫(kù)中的數(shù)據(jù)只轉(zhuǎn)儲(chǔ)其修改過(guò)的物理塊。這樣轉(zhuǎn)儲(chǔ)的數(shù)據(jù)量少,也不必花很多時(shí)間,但為減少事故發(fā)生時(shí)更新丟失,需經(jīng)常轉(zhuǎn)儲(chǔ)。 比較:海量轉(zhuǎn)儲(chǔ)數(shù)據(jù)量大,不易進(jìn)行。 增量轉(zhuǎn)儲(chǔ)數(shù)據(jù)量少,但要經(jīng)常轉(zhuǎn)儲(chǔ)。怎樣確定適當(dāng)?shù)霓D(zhuǎn)儲(chǔ)周期與轉(zhuǎn)儲(chǔ)方法 當(dāng)數(shù)據(jù)庫(kù)遭破壞時(shí)時(shí),最簡(jiǎn)單的方法就是以后備副本來(lái)恢復(fù)數(shù)據(jù)庫(kù)。 要經(jīng)常地進(jìn)行數(shù)據(jù)轉(zhuǎn)儲(chǔ),因?yàn)楹髠涓北驹浇咏收习l(fā)生點(diǎn),恢復(fù)起來(lái)越方便、越省時(shí)。但數(shù)據(jù)轉(zhuǎn)儲(chǔ)十分耗費(fèi)時(shí)間和資源的,不可能頻繁進(jìn)行。 DBA應(yīng)該根據(jù)數(shù)據(jù)庫(kù)的使用情況確定適

8、當(dāng)?shù)霓D(zhuǎn)儲(chǔ)周期和轉(zhuǎn)儲(chǔ)方法。例如,每天晚上或每周進(jìn)行動(dòng)態(tài)增量轉(zhuǎn)儲(chǔ),每月進(jìn)行一次海量轉(zhuǎn)儲(chǔ)等。5.5.2 恢復(fù)技術(shù)2、日志文件 (1) 日志文件的作用 (2) 日志文件的分類(lèi) (3) 日志文件的登記原則 (1) 日志文件的作用 建立日志文件是數(shù)據(jù)庫(kù)系統(tǒng)采取的另一種數(shù)據(jù)冗余措施。 日志文件是記錄每一次對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新操作的文件,該文件由DBMS自動(dòng)建立和記錄。 文件中包括的內(nèi)容有:事務(wù)名稱、操作的時(shí)間、操作類(lèi)型、修改前數(shù)據(jù)值以及修改后數(shù)據(jù)值等等;還有事務(wù)的開(kāi)始,提交(COMMIT)及回滾(ROLLBACK)等執(zhí)行情況記錄。(1) 日志文件的作用 在動(dòng)態(tài)轉(zhuǎn)儲(chǔ)方式中必須建立日志文件,后備副本和日志文件綜合起

9、來(lái)才能有效地恢復(fù)數(shù)據(jù)庫(kù)。 在靜態(tài)轉(zhuǎn)儲(chǔ)方式中也可以建立日志文件。 當(dāng)數(shù)據(jù)庫(kù)毀壞后可重新裝入后備副本把數(shù)據(jù)庫(kù)恢復(fù)到轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻的正確狀態(tài),然后利用日志文件,把已完成的事務(wù)進(jìn)行重做處理,對(duì)故障發(fā)生時(shí)尚未完成的事務(wù)進(jìn)行撤消處理。 這樣不必重新運(yùn)行那些在轉(zhuǎn)儲(chǔ)前已完成的事務(wù)程序就可把數(shù)據(jù)庫(kù)恢復(fù)到故障前某一時(shí)刻。利用靜態(tài)轉(zhuǎn)儲(chǔ)副本和日志文件進(jìn)行恢復(fù)利用靜態(tài)轉(zhuǎn)儲(chǔ)副本和日志文件進(jìn)行恢復(fù) 靜態(tài)靜態(tài)轉(zhuǎn)儲(chǔ)轉(zhuǎn)儲(chǔ) 運(yùn)行事務(wù)運(yùn)行事務(wù) 正常運(yùn)行正常運(yùn)行 Ta Ta Tb Tb Tf Tf 重裝后備副本重裝后備副本 利用日志文件恢復(fù)利用日志文件恢復(fù) 繼續(xù)運(yùn)行繼續(xù)運(yùn)行恢復(fù)恢復(fù) (2) 日志文件的分類(lèi)日志文件主要有兩種格式: 1)

10、以記錄為單位的日志文件 2) 以數(shù)據(jù)塊為單位的日志文件 1) 以記錄為單位的日志文件 以記錄為單位的日志文件,需要登記如下內(nèi)容: 各個(gè)事務(wù)的開(kāi)始(BEGIN TRANSATION)標(biāo)記; 各個(gè)事務(wù)的結(jié)束(COMMIT或ROLLBACK)標(biāo)記; 各個(gè)事務(wù)的所有更新操作; 以上信息作為日志文件中的一個(gè)日志記錄登記在日志文件中。日志記錄一個(gè)日志記錄的主要內(nèi)容為: 事務(wù)標(biāo)識(shí)(標(biāo)明是那一個(gè)事務(wù)); 操作的類(lèi)型(插入、刪除、修改); 操作對(duì)象; 更新前數(shù)據(jù)的舊值(對(duì)插入操作,此項(xiàng)為空值); 更新后數(shù)據(jù)的新值(對(duì)刪除操作,此項(xiàng)為空值);2)以數(shù)據(jù)塊為單位的日志文件 以數(shù)據(jù)塊為單位的日志文件,只要某個(gè)數(shù)據(jù)塊中

11、有數(shù)據(jù)被更新,就要將整個(gè)塊更新前和更新后的內(nèi)容放入日志文件中。(3)日志文件的登記原則 日志文件登記時(shí)必須遵循兩條原則: 嚴(yán)格按照并行事務(wù)執(zhí)行的時(shí)間次序登記; 必須先寫(xiě)日志文件,后寫(xiě)數(shù)據(jù)庫(kù);下面將說(shuō)明為什么必須這樣。(3)日志文件的登記原則 把對(duì)數(shù)據(jù)的修改寫(xiě)到數(shù)據(jù)庫(kù)中和把登記這個(gè)修改的日志記錄寫(xiě)到日志文件中是兩個(gè)不同的操作。 計(jì)算機(jī)有可能在這兩個(gè)操作之間發(fā)生故障,即這兩個(gè)操作只完成了一個(gè)。如果先寫(xiě)了數(shù)據(jù)庫(kù)修改,而日志文件中沒(méi)有登記下這個(gè)修改,則以后就無(wú)法恢復(fù)這個(gè)修改了。 如果先寫(xiě)日志,但沒(méi)有修改數(shù)據(jù)庫(kù),按日志文件恢復(fù)時(shí)只不過(guò)是多執(zhí)行一次不必要的REDO操作,并不會(huì)影響數(shù)據(jù)庫(kù)的正確性。 為了安全

12、起見(jiàn),一定要先寫(xiě)日志文件,即首先把操作記錄寫(xiě)到日志文件中,然后才把操作結(jié)果寫(xiě)到數(shù)據(jù)庫(kù)中。5.5.2 恢復(fù)技術(shù)3、恢復(fù)策略 利用數(shù)據(jù)庫(kù)后備副本和日志文件可將數(shù)據(jù)庫(kù)恢復(fù)到故障前的某個(gè)一致性狀態(tài),但不同的故障其恢復(fù)策略和恢復(fù)技術(shù)通常是不一樣的。 (1) 事務(wù)故障的恢復(fù) (2 )系統(tǒng)故障的恢復(fù) (3 )介質(zhì)故障的恢復(fù) (4) 病毒故障的恢復(fù) (5)數(shù)據(jù)恢復(fù)的一般過(guò)程(1)事務(wù)故障的恢復(fù) 發(fā)生事務(wù)故障時(shí),夭折的事務(wù)可能已把對(duì)數(shù)據(jù)庫(kù)的部分修改寫(xiě)回磁盤(pán)。 恢復(fù)程序要在不影響其它事務(wù)運(yùn)行的情況下,強(qiáng)行回滾該事務(wù),即清除該事務(wù)對(duì)數(shù)據(jù)庫(kù)的所有修改,使得這個(gè)事務(wù)像根本沒(méi)有啟動(dòng)一樣。 這類(lèi)恢復(fù)操作稱為事務(wù)撤消(UND

13、O)。(1)事務(wù)故障的恢復(fù) 1)反向掃描日志文件(從日志文件末尾開(kāi)始掃描),查找該事務(wù)的更新操作。 2)對(duì)該事務(wù)的更新執(zhí)行逆向操作,即將日志文件記錄中“更新前的值”寫(xiě)入數(shù)據(jù)庫(kù)。 3)繼續(xù)反向掃描日志文件,查找該事務(wù)的其它更新操作,并做同樣處理。 4)如此處理下去,直至讀到此事務(wù)的開(kāi)始標(biāo)記,事務(wù)故障恢復(fù)就算完成了。 事務(wù)故障的恢復(fù)是系統(tǒng)重新啟動(dòng)后由DBMS自動(dòng)完成的,不需要用戶干涉。(2)系統(tǒng)故障的恢復(fù)系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致?tīng)顟B(tài)的原因系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致?tīng)顟B(tài)的原因l未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新已寫(xiě)入數(shù)據(jù)庫(kù)未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新已寫(xiě)入數(shù)據(jù)庫(kù)l已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新還留在緩沖區(qū)沒(méi)來(lái)得及已提交事

14、務(wù)對(duì)數(shù)據(jù)庫(kù)的更新還留在緩沖區(qū)沒(méi)來(lái)得及寫(xiě)入數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)庫(kù)恢復(fù)方法恢復(fù)方法l1. Undo 1. Undo 故障發(fā)生時(shí)未完成的事務(wù)故障發(fā)生時(shí)未完成的事務(wù)l2. Redo 2. Redo 已完成的事務(wù)已完成的事務(wù)系統(tǒng)故障的恢復(fù)由系統(tǒng)在系統(tǒng)故障的恢復(fù)由系統(tǒng)在重新啟動(dòng)時(shí)重新啟動(dòng)時(shí)自動(dòng)完成,不需要用自動(dòng)完成,不需要用戶干預(yù)戶干預(yù)(2)系統(tǒng)故障的恢復(fù)步驟 1) 正向掃描日志文件,找出在故障發(fā)生前已經(jīng)提交的事務(wù),并將這些事務(wù)標(biāo)記記入重做隊(duì)列。同時(shí)還要找 出 故 障 發(fā) 生 時(shí) 尚 未 完 成 的 事 務(wù) ( 只 有 B E G I N TRANSACTION記錄,沒(méi)有相應(yīng)的COMMIT記錄),并將這些事務(wù)標(biāo)

15、記記入撤消隊(duì)列。 2) 對(duì)撤消隊(duì)列中的各個(gè)事務(wù)進(jìn)行撤消(UNDO)處理:反向掃描日志文件反向掃描日志文件,對(duì)每個(gè)UNDO事務(wù)的更新操作執(zhí)行逆操作。 3) 對(duì)重做隊(duì)列中的各個(gè)事務(wù)進(jìn)行重做(REDO)處理:正向掃描日志文件正向掃描日志文件,對(duì)每個(gè)REDO事務(wù)重新執(zhí)行日志文件登記的操作。(3)介質(zhì)故障的恢復(fù)(1)重裝數(shù)據(jù)庫(kù) 裝入數(shù)據(jù)庫(kù)發(fā)生介質(zhì)故障前某個(gè)時(shí)刻的數(shù)據(jù)庫(kù)后備副本(2)重做已完成的事務(wù) 重新執(zhí)行自此時(shí)開(kāi)始的所有成功事務(wù),將這些事務(wù)已提交的結(jié)果重新記入數(shù)據(jù)庫(kù)。介質(zhì)故障的恢復(fù)需要DBA介入 但DBA只需要重新裝入最近轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)后備副本和有關(guān)的日志文件副本,然后執(zhí)行系統(tǒng)提供的恢復(fù)命令即可,具體的

16、恢復(fù)操作仍由DBMS自動(dòng)完成。(3)介質(zhì)故障的恢復(fù)步驟 1)裝入最新的數(shù)據(jù)庫(kù)后備副本,使數(shù)據(jù)庫(kù)恢復(fù)到最近一次轉(zhuǎn)儲(chǔ)時(shí)刻的一致性狀態(tài)。n對(duì)于靜態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,裝入后數(shù)據(jù)庫(kù)即處于一致性狀態(tài)n對(duì)于動(dòng)態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,還須同時(shí)裝入轉(zhuǎn)儲(chǔ)時(shí)刻的日志文件副本,利用與系統(tǒng)故障恢復(fù)相同的方法(即REDO+UNDO),將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài)。 2)裝入轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻的日志文件副本,重做已經(jīng)完成的事務(wù)。l即掃描日志文件,找出故障發(fā)生時(shí)已提交的事務(wù)的標(biāo)記,將其記入重做對(duì)列;l然后正向掃描日志文件,對(duì)重做隊(duì)列中的所有事務(wù)進(jìn)行重做處理。這樣就可以將數(shù)據(jù)庫(kù)恢復(fù)到故障前某一時(shí)刻的一致?tīng)顟B(tài)。(4)病毒故障的恢復(fù) 計(jì)算機(jī)病毒

17、對(duì)數(shù)據(jù)庫(kù)可能造成的破壞,其破壞的結(jié)果不會(huì)超過(guò)事務(wù)故障、系統(tǒng)故障和介質(zhì)故障的范疇。 當(dāng)數(shù)據(jù)庫(kù)被計(jì)算機(jī)病毒破壞后,恢復(fù)方法除了重新啟動(dòng)之前要先殺毒以外,其它恢復(fù)步驟與前面介紹的三種方法之一相同。數(shù)據(jù)恢復(fù)的一般過(guò)程 1)做數(shù)據(jù)拷貝工作:將數(shù)據(jù)庫(kù)后備副本拷貝到數(shù)據(jù)庫(kù)系統(tǒng)中。 2)做事務(wù)恢復(fù)第1步:檢查日志文件,確定哪些事務(wù)已執(zhí)行結(jié)束,哪些尚未結(jié)束。 3、做事務(wù)恢復(fù)第2步:對(duì)尚未結(jié)束的事務(wù)作撤消處理,對(duì)已執(zhí)行結(jié)束的事務(wù)按日志的記錄重做。 經(jīng)以上三步即可完成恢復(fù)工作,有些工作要由DBA負(fù)責(zé)參與完成。5.5.3 檢查點(diǎn)機(jī)制 上節(jié)介紹事務(wù)故障和系統(tǒng)故障的恢復(fù)都必須搜索日志,確定需要REDO和UNDO的事務(wù)。而

18、對(duì)于一個(gè)運(yùn)行較長(zhǎng)時(shí)間的數(shù)據(jù)庫(kù)系統(tǒng)來(lái)說(shuō),勢(shì)必需要檢查所有日志記錄,產(chǎn)生如下問(wèn)題: (1)搜索整個(gè)日志將耗費(fèi)大量的時(shí)間; (2)很多需要REDO的事務(wù)實(shí)際上早已將它們的更新操作結(jié)果寫(xiě)到數(shù)據(jù)庫(kù)中,如果恢復(fù)子系統(tǒng)再重新執(zhí)行這些操作會(huì)浪費(fèi)大量時(shí)間。 5.5.3 檢查點(diǎn)機(jī)制 檢查點(diǎn)機(jī)制:通過(guò)設(shè)置日志文件的檢查點(diǎn),來(lái)最大限度地減少數(shù)據(jù)庫(kù)完全恢復(fù)時(shí)需要掃描日志文件的時(shí)間。 檢查點(diǎn)(checkpoint):日志文件中一條特殊的日志記錄(也稱為檢查點(diǎn)記錄),該記錄由數(shù)據(jù)庫(kù)恢復(fù)子系統(tǒng)定期地自動(dòng)生成和維護(hù)。 系統(tǒng)故障發(fā)生后實(shí)施數(shù)據(jù)庫(kù)恢復(fù)時(shí),將系統(tǒng)失敗時(shí)刻之前的第一個(gè)檢查點(diǎn)作為掃描日志文件的開(kāi)始位置,就可避免掃描整個(gè)日

19、志文件。 5.5.3 檢查點(diǎn)機(jī)制 檢查點(diǎn)記錄的內(nèi)容包括: 1) 建立檢查點(diǎn)時(shí)刻所有正在執(zhí)行的事務(wù)清單。 2) 這些事務(wù)最近一個(gè)日志記錄的地址。 事務(wù)系統(tǒng)失敗檢查點(diǎn)k+1T1T2T3.T4T5運(yùn)行時(shí)間需要重作的事務(wù)需要回滾的事務(wù)修改已寫(xiě)入數(shù)據(jù)庫(kù)的事務(wù)檢查點(diǎn)k5.6 5.6 數(shù)據(jù)庫(kù)的復(fù)制與相關(guān)技術(shù)數(shù)據(jù)庫(kù)的復(fù)制與相關(guān)技術(shù)5.6.1 數(shù)據(jù)庫(kù)的復(fù)制5.6.2 數(shù)據(jù)庫(kù)的鏡象5.6.3 RAID技術(shù)簡(jiǎn)介5.6.1 數(shù)據(jù)庫(kù)的復(fù)制 復(fù)制是使數(shù)據(jù)庫(kù)更具容錯(cuò)性的方法,主要用于分布式結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng)中。它在多個(gè)場(chǎng)地保留數(shù)據(jù)庫(kù)的多個(gè)備份,這些備份可以是整個(gè)數(shù)據(jù)庫(kù)的副本,也可以是部分?jǐn)?shù)據(jù)庫(kù)的副本。 各個(gè)場(chǎng)地的用戶可以并發(fā)

20、地存取不同的數(shù)據(jù)庫(kù)副本。例如,當(dāng)一個(gè)用戶修改數(shù)據(jù)對(duì)數(shù)據(jù)庫(kù)加了排它鎖時(shí),其它用戶就可以訪問(wèn)數(shù)據(jù)庫(kù)的副本,而不必等待該用戶釋放鎖,這就進(jìn)一步提高了系統(tǒng)的并發(fā)度。 5.6.1 數(shù)據(jù)庫(kù)的復(fù)制數(shù)據(jù)庫(kù)的復(fù)制常有三種方式:對(duì)等復(fù)制、主/從復(fù)制和級(jí)聯(lián)復(fù)制。不同的復(fù)制方式提供了不同程度的數(shù)據(jù)一致性。 對(duì)等復(fù)制(Peertopeer)是最理想的復(fù)制方式。 在這種方式下,各個(gè)場(chǎng)地的數(shù)據(jù)庫(kù)地位是平等的,可以互相復(fù)制數(shù)據(jù)。用戶可以在任何場(chǎng)地讀取和更新公共數(shù)據(jù)集,在某一場(chǎng)地更新公共數(shù)據(jù)集時(shí),DBMS會(huì)立即將數(shù)據(jù)傳送給所有其它副本。 主/從復(fù)制 主/從復(fù)制(Master/Slave),即數(shù)據(jù)只能從主數(shù)據(jù)庫(kù)復(fù)制到從數(shù)據(jù)庫(kù)中。

21、更新數(shù)據(jù)只能在主場(chǎng)地上進(jìn)行,從場(chǎng)地供用戶讀數(shù)據(jù)。但主場(chǎng)地出現(xiàn)故障時(shí),更新數(shù)據(jù)的應(yīng)用可以轉(zhuǎn)到其中一個(gè)復(fù)制場(chǎng)地上。 這種復(fù)制方式實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,易于維護(hù)數(shù)據(jù)一致性。主數(shù)據(jù)庫(kù)和各個(gè)復(fù)制數(shù)據(jù)庫(kù)在任何時(shí)候都必須保持事務(wù)的完整性。MasterSlave1Slave2Slave k 級(jí)聯(lián)復(fù)制 級(jí)聯(lián)復(fù)制(Cascade)是指:從主場(chǎng)地復(fù)制過(guò)來(lái)的數(shù)據(jù)又從該場(chǎng)地再次復(fù)制到其它場(chǎng)地,即A場(chǎng)地把數(shù)據(jù)復(fù)制到B場(chǎng)地,B場(chǎng)地又把這些數(shù)據(jù)或其中部分?jǐn)?shù)據(jù)再?gòu)?fù)制到其它場(chǎng)地。 級(jí)聯(lián)復(fù)制可以平衡當(dāng)前各種數(shù)據(jù)需求對(duì)網(wǎng)絡(luò)交通的壓力。DB1DB 1DB kDB k+1 DB k+r5.6.2 數(shù)據(jù)庫(kù)的鏡象問(wèn)題的提出 介質(zhì)故障是對(duì)系統(tǒng)影響

22、最為嚴(yán)重的一種故障,當(dāng)系統(tǒng)出現(xiàn)介質(zhì)故障后,不僅用戶的應(yīng)用全部中斷,而且恢復(fù)起來(lái)也比較費(fèi)事。 為了能夠?qū)?shù)據(jù)庫(kù)從介質(zhì)故障中恢復(fù)過(guò)來(lái),DBA必須周期性地轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù),這加重了DBA的負(fù)擔(dān)。如果DBA忘記了轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù),一旦發(fā)生介質(zhì)故障,就可能造成嚴(yán)重的損失。 能否自動(dòng)解決以上問(wèn)題?5.6.2 數(shù)據(jù)庫(kù)的鏡象 為避免存儲(chǔ)介質(zhì)磁盤(pán)出現(xiàn)故障而影響數(shù)據(jù)庫(kù)的可用性,DBMS提供了日志文件和數(shù)據(jù)庫(kù)的鏡象 (Mirror)功能。根據(jù)DBA的設(shè)置要求,DBMS自動(dòng)把整個(gè)數(shù)據(jù)庫(kù)或其中的關(guān)鍵數(shù)據(jù)以及日志文件復(fù)制到另一個(gè)磁盤(pán)上,每當(dāng)主數(shù)據(jù)庫(kù)更新時(shí),DBMS會(huì)自動(dòng)把更新后的數(shù)據(jù)復(fù)制到鏡象磁盤(pán)上去,即DBMS自動(dòng)保證鏡象數(shù)據(jù)與主

23、數(shù)據(jù)的一致性。 5.6.2 數(shù)據(jù)庫(kù)的鏡象 一旦主數(shù)據(jù)庫(kù)發(fā)生介質(zhì)故障,可以由鏡象磁盤(pán)繼續(xù)提供數(shù)據(jù)庫(kù)的可用性,同時(shí)DBMS自動(dòng)利用鏡象磁盤(pán)進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù),不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫(kù)后備副本。 在沒(méi)有出現(xiàn)故障時(shí),數(shù)據(jù)庫(kù)鏡象還可以用于支持并發(fā)操作,即當(dāng)一個(gè)用戶對(duì)數(shù)據(jù)庫(kù)加排它鎖修改數(shù)據(jù)時(shí),其他用戶可以直接讀鏡象數(shù)據(jù)庫(kù),而不必等待該用戶釋放鎖。5.6.2 數(shù)據(jù)庫(kù)的鏡象 數(shù)據(jù)庫(kù)的鏡象是通過(guò)復(fù)制數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)的,頻繁地復(fù)制數(shù)據(jù)庫(kù)自然會(huì)降低系統(tǒng)運(yùn)行的效率。 在實(shí)際應(yīng)用中,用戶往往只選擇對(duì)關(guān)鍵的數(shù)據(jù)做鏡象,如日志文件鏡象,而不是對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行鏡象。5.6.3 RAID技術(shù)簡(jiǎn)介 RAID是英文Redundant

24、Array of Inexpensive(Independent) Disks的縮寫(xiě),即廉價(jià)冗余 (獨(dú)立)磁盤(pán)陣列,簡(jiǎn)稱為磁盤(pán)陣列,是目前商用數(shù)據(jù)庫(kù)服務(wù)器都支持且廣泛使用的硬盤(pán)技術(shù)。 RAID技術(shù)的基本含義:廉價(jià)和冗余。 “廉價(jià)”就是價(jià)格便宜,因?yàn)槌杀疽蛩厥怯?jì)算機(jī)用戶不得不考慮的問(wèn)題,所以廉價(jià)的磁盤(pán)陣列是吸引顧客的必要手段; “冗余”即數(shù)據(jù)冗余,因?yàn)閿?shù)據(jù)安全性和完整性是計(jì)算機(jī)用戶特別關(guān)注的重要問(wèn)題之一,數(shù)據(jù)冗余將在一定程度上保證數(shù)據(jù)的安全性和完整性。5.6.3 RAID技術(shù)簡(jiǎn)介 RAID包含多塊磁盤(pán),但是在操作系統(tǒng)下是作為一個(gè)獨(dú)立的大型存儲(chǔ)設(shè)備出現(xiàn)的,它可滿足在某些特定的應(yīng)用領(lǐng)域里不斷擴(kuò)大磁盤(pán)

25、容量的需求。 RAID技術(shù)分為RAID0、1、2、3、4、5等幾個(gè)不同的等級(jí)標(biāo)準(zhǔn). RAID0又可以配合后面幾種進(jìn)行更多的功能組合,形成RAID10、30、50等工作方式。 這些等級(jí)標(biāo)準(zhǔn)分別為用戶提供了速度、價(jià)格、容量和安全性不相同的磁盤(pán)陣列的多種選擇。 5.6.3 RAID技術(shù)簡(jiǎn)介 RAID0,又稱為磁盤(pán)條塊化(Striping)工作方式,也稱數(shù)據(jù)拆分方式。工作狀態(tài)是幾個(gè)磁盤(pán)同時(shí)工作,系統(tǒng)傳輸來(lái)的數(shù)據(jù),經(jīng)過(guò)RAID控制器將數(shù)據(jù)平均分配到磁盤(pán)陣列的各個(gè)磁盤(pán)中。 當(dāng)用戶需要數(shù)據(jù)時(shí)再將數(shù)據(jù)聚集起來(lái),且這一切工作都是計(jì)算機(jī)系統(tǒng)自動(dòng)完成的。 RAID0的主要工作目的是獲得更大的“單個(gè)”磁盤(pán)容量,同時(shí)獲

26、得更高的存取速度。 01101100控制器數(shù)據(jù):011011005.6.3 RAID技術(shù)簡(jiǎn)介 RAID1,又稱為鏡像(Mirroring)工作方式。它的出現(xiàn)完全是出于數(shù)據(jù)安全性方面的考慮,因?yàn)樵诖疟P(pán)陣列中,只有一半的磁盤(pán)容量是有效的,而另一半用來(lái)存放前一半磁盤(pán)的鏡象數(shù)據(jù),也就是冗余數(shù)據(jù)。 與RAID0相比,RAID1是另一個(gè)極端。RAID1則首要考慮數(shù)據(jù)的安全性,磁盤(pán)容量可以減半而速度可以不變。0110110001101100控制器數(shù)據(jù):011011005.6.3 RAID技術(shù)簡(jiǎn)介 如果既要達(dá)到相對(duì)較高的存取速度又要較高的安全性目的,RAID10 (或者RAID0+1)就可以解決。 RAID10也可以簡(jiǎn)單的理解成兩個(gè)分別由多個(gè)磁盤(pán)組成的RAID0陣列再進(jìn)行鏡像。其實(shí)反過(guò)來(lái)理解也沒(méi)有錯(cuò)。 0110110001101100控制器數(shù)據(jù):011011005.6.3 RAID技術(shù)簡(jiǎn)介 RAID3和RAID 5都是校驗(yàn)的工作方式。就像

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論