哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題數(shù)據(jù)庫原理_第1頁
哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題數(shù)據(jù)庫原理_第2頁
哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題數(shù)據(jù)庫原理_第3頁
哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題數(shù)據(jù)庫原理_第4頁
哈爾濱工業(yè)大學(xué)2010年考博專業(yè)課試題數(shù)據(jù)庫原理_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、哈爾濱工業(yè)大學(xué)2010年春博士入學(xué)考試數(shù)據(jù)庫原理試卷一、名詞解釋(15分,每小題3分)(1)無損聯(lián)接(P122)稱這個分解是滿足函數(shù)依賴集的無損連接(2)函數(shù)的邏輯蘊含(3)多值依賴(4)函數(shù)依賴集F的閉包F+設(shè)R是一個具有屬性集合 U的關(guān)系模式,F(xiàn)是給定的函數(shù)依賴集合,由F推導(dǎo)出的所有函數(shù)依賴的集合,稱為F的閉包,記作F+o(5)簡要分析關(guān)系規(guī)范化的利弊關(guān)系模式規(guī)范化: 把一個給定關(guān)系模式轉(zhuǎn)化為某種范式的過程稱為關(guān)系模式的規(guī)范化過程,簡稱規(guī)范化。關(guān)系模式規(guī)范化的主要方法 是關(guān)系模式的分解,即把一個低一級范式的關(guān)系模式分解為若干個高一級 范式的子關(guān)系模式,使這些子模式具有指定的某種范式。關(guān)系規(guī)

2、范化的目的 是解決關(guān)系模式中存在的數(shù)據(jù)冗余、插入和刪除異常、更新不一致等問題。規(guī)范化的程度越高,數(shù)據(jù)的冗余和更新異常相對減少, 但由于聯(lián)接運算費時,查詢時所花的時間也就越多。因此,規(guī)范化的程度不是越高越好,而取決于關(guān)系運算的實際需求。在實際工作中,應(yīng)根據(jù)具體情況權(quán)衡利弊,適可而止。一般來說,靜態(tài)關(guān)系模式(數(shù)據(jù)加載之后,用戶在這個關(guān)系上僅運行查詢操作,不再進行更新、插入和刪除等操作)只需具有第一范式形式,動態(tài)關(guān)系模式(用戶經(jīng)常在這個關(guān)系上進行更新、插入和刪 除等操作)至少具有第三范式形式。二、已知關(guān)系模式 R的屬性集合U=A ,B,C, D,E,函數(shù)依賴集合 F=A -C, B-C, C-D,

3、DE一 C, CE-A,分解 p =R 1 (A , D),R2(A,B),R3(B ,E),R4(C , D, E), R5(A , E),請驗試 p 是否具有無損聯(lián)接性(15分)解:p的無損聯(lián)接性判斷表結(jié)果如下表示RiABCDEADa1b12b31a4b15ABa1a2b31a4b25BEa1a2a3a4a5CDEa1b42a3a4a5AEa1b52a3a4a5由于表中不存在值為 a1 , a2, a3, a4, a5的行,所以分解p具有無損聯(lián)接性。三、什么是故障點、檢查點、轉(zhuǎn)儲點?請按某次完整的故障恢復(fù)過程,描述這三者在故障恢復(fù)過程中 的使用(10分)1.數(shù)據(jù)庫故障的種類及其恢復(fù)策略數(shù)據(jù)

4、庫系統(tǒng)可能發(fā)生的故障主要分為四類:事務(wù)故障、系統(tǒng)故障、介質(zhì)故障和計算機病毒。(1)事務(wù)故障事務(wù)故障是指事務(wù)在運行過程中由于種種原因未能運行到正常結(jié)束點前而被終止,通常分為:可預(yù)期的事務(wù)故障:應(yīng)用程序可以發(fā)現(xiàn)并讓事務(wù)回滾,撤銷已做的修改操作,恢復(fù)數(shù)據(jù)庫到正確狀態(tài)。非預(yù)期的事務(wù)故障:這些事務(wù)故障不能由事務(wù)程序處理,如并發(fā)事務(wù)發(fā)生死鎖而被撤銷等。事務(wù)故障的恢復(fù)方法: 恢復(fù)到事務(wù)未執(zhí)行時的狀態(tài)。反向閱讀日志文件,找出該事務(wù)的所有更新操作,對每一項更新操作做它的逆操作,即強行回滾(ROLLBACK )該事務(wù),這類恢復(fù)操作稱為事務(wù)撤銷 (UNDO)。(2)系統(tǒng)故障系統(tǒng)故障是指造成數(shù)據(jù)庫系統(tǒng)停止運行的任何事

5、件,如操作系統(tǒng)、DBMS、硬件故障或突然斷電等,使得系統(tǒng)需要重新啟動,通常稱為軟故障( Soft Crash)。系統(tǒng)故障影響正在運行的所有事務(wù),但不破壞數(shù) 據(jù)庫。發(fā)生系統(tǒng)故障時主存內(nèi)容,尤其是數(shù)據(jù)庫緩沖區(qū)(在內(nèi)存)中的內(nèi)容都被丟失,所有運行事務(wù)都非正 常終止。發(fā)生系統(tǒng)故障時,一些尚未完成的事務(wù)的結(jié)果可能己送入物理數(shù)據(jù)庫,從而造成數(shù)據(jù)庫可能處于 不正確的狀態(tài)。為保證數(shù)據(jù)一致性,需要清除這些事務(wù)對數(shù)據(jù)庫的所有修改?;謴?fù)子系統(tǒng)必須在系統(tǒng)重新 啟動時讓所有非正常終止的事務(wù)回滾,強行撤銷( UNDO )所有未完成事務(wù)。另一方面,發(fā)生系統(tǒng)故障時, 有些己完成的事務(wù)可能有一部分甚至全部留在緩沖區(qū),尚未寫回到

6、磁盤上的物理數(shù)據(jù)庫中,系統(tǒng)故障使得 這些事務(wù)對數(shù)據(jù)庫的修改部分或全部丟失,這也會使數(shù)據(jù)庫處于不一致狀態(tài),因此應(yīng)將這些事務(wù)己提交的 結(jié)果重新寫入數(shù)據(jù)庫。所以系統(tǒng)重新啟動后,恢復(fù)子系統(tǒng)除需要撤銷所有未完成事務(wù)外,還需要重做(REDO)所有己提交的事務(wù),以將數(shù)據(jù)庫真正恢復(fù)到一致狀態(tài)。系統(tǒng)故障的恢復(fù)方法:對未完成的事務(wù)進行回滾,強行撤銷( UNDO)所有未完成的事務(wù);對已完成 的事務(wù)提交,結(jié)果仍在緩沖區(qū)的事務(wù)重新提交。(3)介質(zhì)故障介質(zhì)故障稱為硬故障(Hard Crash),是指外存故障,如磁盤損壞、磁頭碰撞,瞬時強磁場干擾等。這 類故障將破壞數(shù)據(jù)庫或部分?jǐn)?shù)據(jù)庫,并影響正在存取這部分?jǐn)?shù)據(jù)的所有事務(wù)。這

7、類故障比前兩類故障發(fā)生 的可能性小得多,但破壞性最大。發(fā)生介質(zhì)故障后,磁盤上的物理數(shù)據(jù)和日志文件被破壞,恢復(fù)策略是重裝數(shù)據(jù)庫,然后重做已完成的 事務(wù)。介質(zhì)故障的恢復(fù)方法:首先,裝入最新的數(shù)據(jù)庫后備副本,使數(shù)據(jù)庫恢復(fù)到最近一次轉(zhuǎn)儲時的一致性 狀態(tài);對于動態(tài)轉(zhuǎn)儲的副本,還須同時裝入轉(zhuǎn)儲開始時的日志文件副本,利用恢復(fù)系統(tǒng)故障的方法(重做 REDO+撤銷UNDO)將數(shù)據(jù)庫恢復(fù)到一致性狀態(tài)。其次,裝入相應(yīng)的日志文件副本,重做已完成的事務(wù)。 最后,從故障開始點反向讀日志文件,使數(shù)據(jù)庫恢復(fù)到故障前那一刻的狀態(tài)。(4)計算機病毒計算機病毒是一種人為的故障或破壞,是一些惡作劇者研制的一種計算機程序。-2 -恢復(fù)

8、方法與介質(zhì)故障的恢復(fù)方法相同。2.數(shù)據(jù)庫恢復(fù)技術(shù)數(shù)據(jù)庫恢復(fù)的基本單位是事務(wù)。數(shù)據(jù)庫恢復(fù)的基本策略是數(shù)據(jù)冗余和事務(wù)恢復(fù),其中數(shù)據(jù)冗余是指數(shù) 據(jù)備用副本和日志文件,事務(wù)恢復(fù)是利用事務(wù)作為操作單位進行恢復(fù)。數(shù)據(jù)庫恢復(fù)的基本思想:數(shù)據(jù)庫系統(tǒng)通過記錄日志和數(shù)據(jù)轉(zhuǎn)儲來建立冗余數(shù)據(jù)。日志記錄了數(shù)據(jù)庫的 所有更新操作信息,所有故障的恢復(fù)都需要它。數(shù)據(jù)轉(zhuǎn)儲制作數(shù)據(jù)庫的后備副本,這些副本與日志配合使 用,用來實現(xiàn)介質(zhì)故障恢復(fù)。數(shù)據(jù)庫鏡像在不同的存儲介質(zhì)上維護數(shù)據(jù)庫的同步副本,也是建立冗余數(shù)據(jù) 的一種方法。使用數(shù)據(jù)庫鏡像可以簡化介質(zhì)故障的恢復(fù),但需要附加的存儲設(shè)備。數(shù)據(jù)恢復(fù)可分兩個方面:一是事務(wù)或系統(tǒng)故障的恢復(fù);另

9、一個是存儲介質(zhì)故障的恢復(fù)。對于事務(wù)和系統(tǒng)故障涉及的存儲器主要是主存儲器和高速緩沖存儲器,這兩個存儲器屬臨時存儲器。當(dāng)事務(wù)或系統(tǒng)發(fā)生故障時,臨時存儲器上的數(shù)據(jù)要么被破壞,要么全部丟失。介質(zhì)故障涉及的存儲器主要是硬盤、軟盤、磁帶等 永久存儲器。不管哪種故障恢復(fù)都必須借助日志文件,日志文件必須存放于理論上永遠(yuǎn)不會損壞的存儲器上,稱為永恒存儲器。數(shù)據(jù)庫恢復(fù)的基本方法有:定期備份數(shù)據(jù)庫、建立日志文件、針對不同故障類型分別恢復(fù)。(1)基于日志的恢復(fù)技術(shù)日志是數(shù)據(jù)庫管理系統(tǒng)用來記錄事務(wù)對數(shù)據(jù)庫相關(guān)歷史操作的文件,是日志記錄的序列,記錄了每個 事務(wù)的開始標(biāo)記、結(jié)束標(biāo)記和所有更新操作。不同的數(shù)據(jù)庫系統(tǒng)采用不同的

10、日志文件,這些日志文件主要 包括以記錄為單位的日志文件和以數(shù)據(jù)塊為單位的日志文件兩種。以記錄為單位的日志文件登錄的內(nèi)容:各事務(wù)的開始標(biāo)記,用 <T , start>表示。各事務(wù)的結(jié)束標(biāo)記,用 <T , commit表示事務(wù)已經(jīng)提交。Vi、 各事務(wù)的所有更新操作。用 <T, X, Vi, V2>表示T事務(wù)在數(shù)據(jù)對象 X上執(zhí)行的操作,其中 V2表示更新前后數(shù)據(jù)對象的值。以數(shù)據(jù)塊為單位的日志文件登記的內(nèi)容包括:事務(wù)標(biāo)識被更新的數(shù)據(jù)塊。日志文件的作用 除進行事務(wù)故障的恢復(fù)和系統(tǒng)故障的恢復(fù)外,還用于存儲介質(zhì)故障的恢復(fù)。事務(wù)故障和系統(tǒng)故障都不破壞存儲在磁盤上的數(shù)據(jù)庫,可以使用

11、日志進行數(shù)據(jù)庫恢復(fù)。日志除可以用 來進行事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù)外,還可協(xié)助后備副本進行介質(zhì)故障恢復(fù)。當(dāng)數(shù)據(jù)庫被破壞后,可重 新裝入后備副本把數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲結(jié)束時的正確狀態(tài),然后利用日志文件,把已完成的事務(wù)進行重做, 對故障發(fā)生時候未完成的事務(wù)進行撤銷處理。因此,利用日志文件恢復(fù)數(shù)據(jù)庫的方法如下圖所示。圖利用日志文件恢復(fù)數(shù)據(jù)庫說明:其中TaTb為靜態(tài)轉(zhuǎn)儲階段,從 Ta時刻開始轉(zhuǎn)儲,到 Tb時刻轉(zhuǎn)儲完畢。若 Tf時刻發(fā)生故障,則重裝后備副本,只能恢復(fù)到轉(zhuǎn)儲結(jié)束時刻,其后的事務(wù)必須重做。Ta為轉(zhuǎn)儲點,Tb為檢查點,Tf為故障點,(2)基于檢查點的恢復(fù)技術(shù)利用日志技術(shù)進行數(shù)據(jù)庫恢復(fù)時,恢復(fù)子系統(tǒng)

12、必須搜索日志,確定哪些事務(wù)需要重做(REDO),哪些事務(wù)需要撤銷(UNDO )。一般需要檢查所有日志記錄,這樣就帶來兩個問題: 一是搜索整個日志將耗費大量的時間,二是很多需要重做(REDO)處理的事務(wù)實際上已經(jīng)將它們的更新操作結(jié)果寫到了數(shù)據(jù)庫中了, 然而恢復(fù)子系統(tǒng)又重新執(zhí)行這個操作,也會浪費大量時間。數(shù)據(jù)轉(zhuǎn)儲:定期對數(shù)據(jù)庫進行復(fù)制或轉(zhuǎn)儲( Dump)。注意幾個概念:靜態(tài)轉(zhuǎn)儲、動態(tài)轉(zhuǎn)儲、海量轉(zhuǎn)儲 和增量轉(zhuǎn)儲。轉(zhuǎn)儲是指DBA定期將整個數(shù)據(jù)庫復(fù)制到永久存儲器的過程,這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。一旦系統(tǒng)發(fā)生介質(zhì)故障,數(shù)據(jù)庫就遭到破壞,可以將后備副本重新裝入,但重裝后備副本只能將 數(shù)據(jù)庫恢

13、復(fù)到轉(zhuǎn)儲時的狀態(tài),要想恢復(fù)到故障發(fā)生時的狀態(tài),還必須重新運行自轉(zhuǎn)儲以后的所有更新事務(wù)。 轉(zhuǎn)儲按照轉(zhuǎn)儲時的狀態(tài)分為靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲。靜態(tài)轉(zhuǎn)儲:是指在系統(tǒng)中無運行事務(wù)時進行的轉(zhuǎn)儲操作,轉(zhuǎn)儲操作開始時,數(shù)據(jù)庫處于一致性狀態(tài), 轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫的任何存取和修改,得到的是一個數(shù)據(jù)一致性的副本。動態(tài)轉(zhuǎn)儲:是指轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進行存取或修改操作,即轉(zhuǎn)儲和用戶事務(wù)可以并發(fā)執(zhí)行。它不 用等待正在運行的用戶事務(wù)結(jié)束,必須把轉(zhuǎn)儲期間各事務(wù)對數(shù)據(jù)庫的修改記下來,建立日志文件。這樣, 后備副本加上日志文件就能把數(shù)據(jù)庫恢復(fù)到某一時刻的正確狀態(tài)。采用動態(tài)轉(zhuǎn)儲必須借助日志文件,把轉(zhuǎn)儲期間的存取活動登記下來作為后援

14、副本,方能保證恢復(fù)到轉(zhuǎn) 儲結(jié)束時刻的正確狀態(tài)。轉(zhuǎn)儲又可分為海量轉(zhuǎn)儲和增量轉(zhuǎn)儲。海量轉(zhuǎn)儲每次轉(zhuǎn)儲全部數(shù)據(jù)庫;增量轉(zhuǎn)儲指每次只轉(zhuǎn)儲上次轉(zhuǎn)儲 后更新過的數(shù)據(jù)。從恢復(fù)角度看,使用海量轉(zhuǎn)儲得到的后備副本進行恢復(fù)一般說來更簡單些。但如果數(shù)據(jù) 庫很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲方式更實用更有效。完整數(shù)據(jù)庫備份:完整數(shù)據(jù)庫備份就是備份整個數(shù)據(jù)庫。它備份數(shù)據(jù)庫文件、這些文件的地址以及事務(wù)日志的某些部分(從備份開始時所記錄的日志順序號到備份結(jié)束時的日志順序號)。差異數(shù)據(jù)庫備份:差異數(shù)據(jù)庫備份是指將從最近一次完全數(shù)據(jù)庫備份以后發(fā)生改變的數(shù)據(jù)進行備份。如果在完整備份后將某個文件添加至數(shù)據(jù)庫,則下一個差異備份將會包

15、括該新文件。這樣可以方便地備份數(shù)據(jù)庫,而無須了解各個文件。事務(wù)日志備份:事務(wù)日志備份就是自從上一個事務(wù)以來已經(jīng)發(fā)生了變化的部分。事務(wù)日志備份比完整數(shù)據(jù)庫備份節(jié)省時間和空間,而且利用事務(wù)日志備份進行恢復(fù)時,可以指定恢復(fù)到某一個事務(wù)。文件組備份:文件組備份就是對數(shù)據(jù)庫中的部分文件或文件組進行備份。文件組是一種將數(shù)據(jù)庫存放在多個文件上的方法。檢查點(Check Point ):也稱為安全點或恢復(fù)點,是一個數(shù)據(jù)庫事件,它把修改數(shù)據(jù)從高速緩存中的臟緩存塊中的數(shù)據(jù)寫入磁盤的數(shù)據(jù)文件中,并更新控制文件和數(shù)據(jù)文件。 檢查點會創(chuàng)建一個已知的正常點,在數(shù)據(jù)庫管理系統(tǒng)意外關(guān)閉或崩潰后進行恢復(fù)的過程中,數(shù)據(jù)庫引擎可以

16、從該點開始應(yīng)用日志中所包含的 更改。也就是說,數(shù)據(jù)庫的檢查點相當(dāng)于一個觸發(fā)器,當(dāng)滿足一定的條件時就會觸發(fā)這個事件,這時高速 緩存中的臟緩存塊中的數(shù)據(jù)就會被寫入到數(shù)據(jù)文件之中,合理設(shè)置檢查點直接關(guān)系到數(shù)據(jù)的安全與數(shù)據(jù)庫 系統(tǒng)的性能。檢查點是數(shù)據(jù)庫和事務(wù)日志之間的同步點,在檢測點上 DBMS :(1)拒絕接受新的事務(wù)請求;(2)停止正在處理的還未完成的一切事務(wù);把緩沖區(qū)寫入磁盤;(3)等待OS確認(rèn)所有對數(shù)據(jù)庫和日志的寫請求都已完成(此時數(shù)據(jù)庫和日志是同步的),接著,向日志寫入一條檢測點記錄。當(dāng)用戶更新或者插入數(shù)據(jù)的時候,系統(tǒng)首先會將數(shù)據(jù)保存到數(shù)據(jù)緩存中,而不是直接存儲到硬盤上。當(dāng)用戶更新或者插入數(shù)

17、據(jù)的時候,數(shù)據(jù)庫系統(tǒng)首先會將數(shù)據(jù)保存到數(shù)據(jù)的緩存區(qū)域,而不是直接存儲到硬盤上的數(shù)據(jù)文件中。而等到滿足一定條件的時候,系統(tǒng)就會將數(shù)據(jù)緩存區(qū)中的數(shù)據(jù)保存到硬盤的數(shù)據(jù)文件中,促使將數(shù)據(jù)緩存中的信息保存到數(shù)據(jù)文件中。即“檢查點”將當(dāng)前內(nèi)存中已修改的頁(稱為“臟頁”)和事務(wù)日志信息從內(nèi)存寫入磁盤,并記錄有關(guān)事務(wù)日志的信息。當(dāng)數(shù)據(jù)庫系統(tǒng)執(zhí)行了一個檢查點之后,系統(tǒng)會將所有的已經(jīng)提交事務(wù)對數(shù)據(jù)庫所做的全部寫入到硬盤的數(shù)據(jù)文件中。也就是說,此時硬盤上的數(shù)據(jù)文件已經(jīng)反映了數(shù)據(jù)庫的一個完整的狀態(tài),用戶先前對數(shù)據(jù)庫所做的更改已經(jīng)全部保存到了數(shù)據(jù)文件之中。此時如果發(fā)生了什么變故,但是數(shù)據(jù)庫系統(tǒng)崩潰。由于數(shù)據(jù)庫所的變化都

18、已經(jīng)保存到了數(shù)據(jù)文件之中,為此在進行數(shù)據(jù)恢復(fù)時只需要將數(shù)據(jù)庫恢復(fù)到上一個檢查點執(zhí)行時刻即可,而不需要進行復(fù)雜的恢復(fù)操作。所以說,如果將這個檢查點設(shè)置的比較短一點,即兩個檢查點發(fā)生的時間比較短,那么就可以減少數(shù)據(jù)庫恢復(fù)所需要的時間。但是也并不是說檢查點設(shè)置的越短越好,因為數(shù)據(jù)庫的任何更改都及時保存到數(shù)據(jù)文件中,如果檢查點設(shè)置得太短必然會使數(shù)據(jù)庫系統(tǒng)的性能會大打折扣?;跈z查點的恢復(fù)技術(shù)在日志文件中增加一類新的記錄檢查點記錄(檢查點建立時所有正在執(zhí)行的事務(wù)清單),增加一個重新開始文件(存儲個檢查點記錄的地址),并讓恢復(fù)子系統(tǒng)在登錄日志文件期間動態(tài)維護日志。數(shù)據(jù)庫恢復(fù)機制定期執(zhí)行如下操作,保存數(shù)據(jù)庫

19、狀態(tài),建立檢查點:將目前主存中的所有日志記錄強行輸出到外存儲器;將所有緩沖區(qū)中被修改的數(shù)據(jù)塊強行寫入磁盤;把日志記錄寫入磁盤。在建立檢查點時,不允許事務(wù)執(zhí)行任何更新操作,如寫緩沖塊或?qū)懭罩居涗洝=z查點之后,所有 在檢查點之前發(fā)生的更新操作都已經(jīng)輸出到數(shù)據(jù)庫中,尚未完成的事務(wù)都登記在檢查點記錄中。這樣,發(fā) 生系統(tǒng)故障時,只需從最近的檢查點記錄開始掃描日志文件。對于事務(wù)故障,基于檢查點的恢復(fù)過程和不使用檢查點的恢復(fù)過程是相同。但對于系統(tǒng)故障,使用檢 查點技術(shù)可縮小日志的掃描范圍,減少不必要的重做( REDO),提高系統(tǒng)故障恢復(fù)效率。當(dāng)需要進行數(shù)據(jù) 庫恢復(fù)時,只需搜索日志文件,確定在最近創(chuàng)建的檢

20、查點之后開始執(zhí)行或處于活動狀態(tài)的事務(wù),然后對這 些事務(wù)執(zhí)行重做(REDO)或撤銷(UNDO)操作。數(shù)據(jù)庫發(fā)生故障時有兩種處理方法: 如數(shù)據(jù)庫已破壞,則由DBA裝入最近備份的數(shù)據(jù)庫然后利用 “日 志文件”執(zhí)行REDO (重做)操作;如數(shù)據(jù)庫未被損壞,但某些數(shù)據(jù)不可靠,則系統(tǒng)會自動執(zhí)行撤銷(UNDO ) 操作恢復(fù)數(shù)據(jù)。事務(wù)故障的恢復(fù)事務(wù)恢復(fù)是指事務(wù)未運行至正常終止點前被撤消,此時應(yīng)對該事務(wù)做撤消處理。事務(wù)故障的恢復(fù)由系 統(tǒng)自動完成。發(fā)生事務(wù)故障時:(1)執(zhí)行一個中止(ABORT )并撤銷(UNDO )它對數(shù)據(jù)庫的任何改變,即進行下面所述的向后恢復(fù)”數(shù)據(jù)庫;(2)清除它對其它事務(wù)的影響,即中止( A

21、BORT )那些讀了它的 臟數(shù)據(jù)”的事務(wù)。這又可能進一步 引起事務(wù)的中止(ABORT),稱為串聯(lián)撤消過程;(3)撤銷(UNDO)所有被撤消的事務(wù)對數(shù)據(jù)庫所作的任何改變。系統(tǒng)故障的恢復(fù)系統(tǒng)故障的恢復(fù)由系統(tǒng)重新啟動時自動完成,其恢復(fù)步驟如下:(1)正向掃描日志文件,找出故障發(fā)生前已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)識記入重( REDO)隊列,同-6 -時找出故障發(fā)生時尚未完成的事務(wù),將其事務(wù)標(biāo)識記入撤消( UNDO)隊列;(2)對撤消隊列中的各個事務(wù)進行撤消( UNDO)處理;(3)對重做隊列中的各事務(wù)進行重做(REDO)處理。介質(zhì)故障的恢復(fù)介質(zhì)故障恢復(fù)的原理是利用存儲在別處的冗余數(shù)據(jù)來重建數(shù)據(jù)庫。所以介質(zhì)

22、故障的恢復(fù)涉及兩個問題:一是如何建立冗余數(shù)據(jù);二是如何利用冗余數(shù)據(jù)恢復(fù)數(shù)據(jù)庫。最常用的技術(shù)是轉(zhuǎn)儲和登記日志文件.轉(zhuǎn)儲是DBA定期將整個數(shù)據(jù)庫復(fù)制到磁帶或另一個磁盤上保存起來。當(dāng)數(shù)據(jù)庫遭到破壞時,可以利 用這些數(shù)據(jù)來恢復(fù)數(shù)據(jù)庫,但只能恢復(fù)到轉(zhuǎn)儲時的狀態(tài),在這以后所運行的事務(wù)必須重新運行才能恢復(fù)到 故障時的狀態(tài)。日志文件的作用 除進行事務(wù)故障的恢復(fù)和系統(tǒng)故障的恢復(fù)外,還用于介質(zhì)故障的恢復(fù)。 在動態(tài)轉(zhuǎn)儲中,后援副本必須和日志文件結(jié)合起來才能有效地恢復(fù)數(shù)據(jù)庫。在靜態(tài)轉(zhuǎn)儲中,若數(shù)據(jù)庫被破壞,必須先利用 后備副本文件裝入到上一次轉(zhuǎn)儲結(jié)束前的正確狀態(tài),然后再利用日志文件把已經(jīng)完成的事務(wù)重新處理,使 數(shù)據(jù)庫恢

23、復(fù)到故障前的某一時刻的正確狀態(tài)。介質(zhì)故障的恢復(fù)方法 是重裝后備數(shù)據(jù)庫,然后重做已完成的事務(wù),具體步驟如下:(1)裝入最近的數(shù)據(jù)庫后備副本,即故障前最后一次轉(zhuǎn)儲的數(shù)據(jù)庫副本,使數(shù)據(jù)庫恢復(fù)到最后轉(zhuǎn)儲 時的一致性狀態(tài)。(2)打開永恒存儲器中的日志文件,正向掃描日志文件,找出故障發(fā)生時已經(jīng)提交的事務(wù)的標(biāo)識, 將其記入重做隊列,然后對重做隊列中的所有事務(wù)進行重做。這樣便可把數(shù)據(jù)庫恢復(fù)到故障前的某一時刻的一致性狀態(tài)。不過按照這種方法進行恢復(fù)存在著嚴(yán)重的 弊端:一方面需要搜索整個日志文件,耗費大量的時間;另一方面需要重做大量已經(jīng)成功地將其更新操作 結(jié)果寫入數(shù)據(jù)庫的事務(wù),浪費極大。數(shù)據(jù)庫鏡像為了避免磁盤介質(zhì)故

24、障影響數(shù)據(jù)庫的可用性,許多數(shù)據(jù)庫管理系統(tǒng)提供了數(shù)據(jù)庫鏡像功能,用于數(shù)據(jù) 庫的恢復(fù)。即根據(jù) DBA的要求,DBMS自動把整個數(shù)據(jù)庫或其中關(guān)鍵數(shù)據(jù)復(fù)制到另一個磁盤上,每當(dāng)主 數(shù)據(jù)庫更新時,DBMS自動把更新后的數(shù)據(jù)復(fù)制到鏡像磁盤上。一旦發(fā)生介質(zhì)故障,系統(tǒng)自動切換到鏡像 磁盤上,避免了因介質(zhì)故障而關(guān)閉系統(tǒng)。用戶應(yīng)用不用中斷,也無須重裝數(shù)據(jù)庫后備副本,更不用重做轉(zhuǎn) 儲后已經(jīng)做過的操作。另一方面,在沒有出現(xiàn)故障的時候,數(shù)據(jù)庫鏡像還可以用于并發(fā)操作,即某一數(shù)據(jù) 對象被加X鎖時,其它用戶要訪問該數(shù)據(jù)對象不用等待,可從數(shù)據(jù)庫鏡像上讀取。四、簡述一級、二級、三級封鎖協(xié)議,并分析每一級封鎖協(xié)議解決了哪些數(shù)據(jù)不一致

25、性問題,還存在 哪些數(shù)據(jù)不一致問題(10分)(P277范明數(shù)據(jù)庫原理教程,P166尹為民數(shù)據(jù)庫技術(shù)及應(yīng)用)事務(wù)的并發(fā)執(zhí)行可能帶來的數(shù)據(jù)不一致性:(1)丟失修改;(2)不可重復(fù)讀;(3)讀“臟”數(shù)據(jù)并發(fā)控制:用正確的方式調(diào)度并發(fā)操作,使一個用戶事務(wù)的執(zhí)行不受其它事務(wù)的干擾,從而避免造成數(shù)據(jù)的不一致性。避免數(shù)據(jù)不一致性的方法和技術(shù)主要是并發(fā)控制,如封鎖( Locking )技術(shù)、基于時間戳 的并發(fā)控制技術(shù)等。封鎖是事務(wù)T在對某個數(shù)據(jù)對象進行操作之前,先向系統(tǒng)發(fā)出加鎖請求, 加鎖后事務(wù)T就對該數(shù)據(jù)對 象有了一定的控制權(quán),在事務(wù) T釋放它的鎖之前,其他事務(wù)不能更新該數(shù)據(jù)對象?;镜逆i有兩種:共享 鎖(

26、S鎖)和排他鎖(X鎖)。排他鎖(X鎖):又稱寫鎖,若事務(wù)T獲得了數(shù)據(jù)對象 Q上的排他鎖,則事務(wù)T既可以讀又可以寫(修 改)數(shù)據(jù)對象 Q,但在事務(wù)T釋放Q上的X鎖之前,其他事務(wù)既不能獲得 Q上的S鎖,也不能獲得 Q上 的X鎖。共享鎖(S鎖):又稱讀鎖,若事務(wù) T獲得了數(shù)據(jù)對象 Q上的共享鎖,則事務(wù) T可以讀但不能寫 Q, 并且在事務(wù)T釋放Q上的S鎖之前,其他事務(wù)只能獲得 Q上的S鎖,而不能獲得 Q上的X鎖。在事務(wù)T在數(shù)據(jù)對象Q上的排他鎖保證了在事務(wù) T釋放數(shù)據(jù)對象 Q上的鎖之前,其他事務(wù)既不能讀 取,也不能修改數(shù)據(jù)對象 Q,即排他鎖保護數(shù)據(jù)對象不被同時讀或?qū)懀皇聞?wù)T在數(shù)據(jù)對象Q上的共享鎖(S鎖)

27、保證了其他事務(wù)可以讀數(shù)據(jù)對象Q,但在事務(wù)T釋放Q上的S鎖之前不能對數(shù)據(jù)對象 Q做任何修改,即共享鎖保護數(shù)據(jù)對象不被寫,但可以同時讀。三級封鎖協(xié)議: 在運用封鎖技術(shù)對數(shù)據(jù)對象進行加鎖時,對封鎖方式約定的一些規(guī)則稱為封鎖協(xié)議。對封鎖方式約定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議( Locking Protocol ),其總共分為以下三級:(1) 一級封鎖協(xié)議:事務(wù)T在修改數(shù)據(jù)項 Q之前必須對其加排他鎖 (X鎖),直至該事務(wù)結(jié)束才釋放。事務(wù)結(jié)束包括正常結(jié)束( COMMIT )和非正常結(jié)束(ROLLBACK )。作用:一級封鎖協(xié)議可以防止丟失修改,保證事務(wù)T是可恢復(fù)的。但由于在一級鎖協(xié)議中,如果僅僅是

28、讀數(shù)據(jù)而不對其進行修改,是不需要加鎖的,所以它不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)。(2)二級封鎖協(xié)議:事務(wù) T在要讀取數(shù)據(jù)項 Q之前必須對其加 S鎖,讀完后即可釋放加在數(shù)據(jù)項 Q 上的S鎖。此種封鎖方式與一級封鎖協(xié)議(事務(wù)T對要修改數(shù)據(jù)項 Q必須先對其加X鎖,直到事務(wù)結(jié)束才釋放數(shù)據(jù)項 Q上的X鎖)共同構(gòu)成了二級封鎖協(xié)議。作用:二級鎖協(xié)議可防止丟失修改及讀“臟”數(shù)據(jù);但在二級封鎖協(xié)議中,由于讀完數(shù)據(jù)后立即釋放 S鎖,所以不能保證可重復(fù)讀。(3)三級封鎖協(xié)議:事務(wù) T在讀取數(shù)據(jù)項 Q之前必須先對其加 S鎖,在要修改數(shù)據(jù)項 Q之前必須先 對其加X鎖,直到事務(wù)結(jié)束后才釋放加在數(shù)據(jù)項Q上的所有鎖。此種封鎖方式與一級封鎖協(xié)議聯(lián)合構(gòu)成了三級封鎖協(xié)議。作用:在三級鎖協(xié)議中,無論是讀數(shù)據(jù)還是寫數(shù)據(jù)都要等到事務(wù)結(jié)束才釋放封鎖,所以三級封鎖協(xié)議

溫馨提示

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

評論

0/150

提交評論