第章數(shù)據(jù)庫(kù)保護(hù)_第1頁(yè)
第章數(shù)據(jù)庫(kù)保護(hù)_第2頁(yè)
第章數(shù)據(jù)庫(kù)保護(hù)_第3頁(yè)
第章數(shù)據(jù)庫(kù)保護(hù)_第4頁(yè)
第章數(shù)據(jù)庫(kù)保護(hù)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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、第章數(shù)據(jù)庫(kù)保護(hù),第6章 數(shù)據(jù)庫(kù)保護(hù) 本 章 要 點(diǎn) 1.掌握數(shù)據(jù)庫(kù)的安全性的概念,理解數(shù)據(jù)庫(kù)中權(quán)限和用戶的分類,并掌握數(shù)據(jù)庫(kù)中權(quán)限的授權(quán)和收權(quán)。 2.掌握數(shù)據(jù)庫(kù)完整性的概念,理解完整性約束條件,深入理解安全性和完整性的區(qū)別。 3.掌握數(shù)據(jù)庫(kù)當(dāng)中的故障的種類,理解數(shù)據(jù)庫(kù)恢復(fù)中經(jīng)常使用的數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)和登記日志文件等技術(shù),了解對(duì)故障的恢復(fù)策略。,第章數(shù)據(jù)庫(kù)保護(hù),數(shù)據(jù)庫(kù)保護(hù)指的是防止數(shù)據(jù)庫(kù)中的數(shù)據(jù)被非法使用或非法修改,保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)正確、可靠,保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)不會(huì)丟失。因此,數(shù)據(jù)庫(kù)保護(hù)包含三個(gè)方面的內(nèi)容,第一是保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)不被破壞,這是通過(guò)數(shù)據(jù)庫(kù)的安全機(jī)制實(shí)現(xiàn)的;第二是保證數(shù)據(jù)庫(kù)中的世界與現(xiàn)

2、實(shí)世界相符,這是通過(guò)數(shù)據(jù)庫(kù)的完整性控制機(jī)制實(shí)現(xiàn)的;第三是保證當(dāng)由于各種原因而造成數(shù)據(jù)損害時(shí),數(shù)據(jù)不會(huì)丟失,這是通過(guò)數(shù)據(jù)庫(kù)的備份和恢復(fù)機(jī)制實(shí)現(xiàn)的。本章我們介紹這三方面的內(nèi)容。,第章數(shù)據(jù)庫(kù)保護(hù),6.1 數(shù)據(jù)庫(kù)安全性 安全性對(duì)于一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)說(shuō)是至關(guān)重要的。數(shù)據(jù)庫(kù)通過(guò)存儲(chǔ)了大量的數(shù)據(jù),這些數(shù)據(jù)可能包括了個(gè)人信息、客戶清單或其他機(jī)密資料。如果有人未經(jīng)授權(quán)非法侵入了數(shù)據(jù)庫(kù),并查看和修改了數(shù)據(jù),那么將會(huì)造成極大的危害,特別是在銀行、金融等系統(tǒng)中更是如此。 安全性問(wèn)題并非是數(shù)據(jù)庫(kù)系統(tǒng)所獨(dú)有,實(shí)際上在許多系統(tǒng)上都存在同樣的問(wèn)題。數(shù)據(jù)的安全控制是指在數(shù)據(jù)庫(kù)系統(tǒng)的不同層次提供安全防范措施,以免數(shù)據(jù)庫(kù)系統(tǒng)遭到

3、有意或無(wú)意的損壞。 在數(shù)據(jù)庫(kù)中,可采用加密存、取數(shù)據(jù)的方法防止有意的非法活動(dòng);使用用戶身份驗(yàn)證、限制操作權(quán)來(lái)控制有意的非法操作;采用提高系統(tǒng)的可靠性和數(shù)據(jù)備份來(lái)控制無(wú)意的破壞。,第章數(shù)據(jù)庫(kù)保護(hù),數(shù)據(jù)庫(kù)的安全性和完整性是兩個(gè)不同的概念,完整性是指防止合法用戶的無(wú)意操作而造成的數(shù)據(jù)錯(cuò)誤。通俗的來(lái)說(shuō),安全性防范的是非法用戶的有意破壞,完整性防范的是合法用戶的無(wú)意破壞。,第章數(shù)據(jù)庫(kù)保護(hù),6.1.1 安全控制模型 數(shù)據(jù)庫(kù)中的數(shù)據(jù)被惡意破壞的形式有多種,可能是物理地破壞計(jì)算機(jī)設(shè)備,也可能是竊取信息、惡意修改和刪除數(shù)據(jù)等,這些都會(huì)產(chǎn)生嚴(yán)重的后果。 數(shù)據(jù)庫(kù)的安全涉及很多層面,除了數(shù)據(jù)庫(kù)管理系統(tǒng)本身應(yīng)該具備安全

4、保護(hù)功能外,還需要從管理機(jī)制、人員行為等多方面采取措施。所以,數(shù)據(jù)庫(kù)安全性應(yīng)該從如下幾個(gè)層次采取措施: 物理層 人員層 操作系統(tǒng)層 數(shù)據(jù)庫(kù)控制層,第章數(shù)據(jù)庫(kù)保護(hù),在一般數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,安全措施是一級(jí)一級(jí)層層設(shè)置的。圖6.1顯示了從用戶使用數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)始一直到訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)經(jīng)過(guò)的安全認(rèn)證過(guò)程。 圖6.1 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的安全模型,第章數(shù)據(jù)庫(kù)保護(hù),當(dāng)用戶訪問(wèn)數(shù)據(jù)庫(kù)數(shù)據(jù)時(shí),首先應(yīng)該進(jìn)入到數(shù)據(jù)庫(kù)系統(tǒng)。用戶進(jìn)入到數(shù)據(jù)庫(kù)系統(tǒng)通常是通過(guò)數(shù)據(jù)庫(kù)應(yīng)用程序?qū)崿F(xiàn)的,這時(shí)用戶要向數(shù)據(jù)庫(kù)應(yīng)用程序提供其身份,然后數(shù)據(jù)庫(kù)應(yīng)用程序?qū)⒂脩舻纳矸菀o數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行驗(yàn)證,只有合法的用戶才能進(jìn)入到下一步的操作。若是合法

5、用戶,當(dāng)其要進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),DBMS還要驗(yàn)證此用戶是否具有這種操作權(quán)。如果有操作權(quán)才能進(jìn)行操作,否則拒絕執(zhí)行用戶的操作。在操作系統(tǒng)一級(jí)也有相應(yīng)的保護(hù)措施,比如設(shè)置文件的訪問(wèn)權(quán)限等。對(duì)于存儲(chǔ)在磁盤(pán)上的文件,還可以加密存儲(chǔ),這樣即使數(shù)據(jù)被人竊取,竊取者也很難讀懂?dāng)?shù)據(jù)。另外,還可以將數(shù)據(jù)庫(kù)文件保存多份,這樣當(dāng)出現(xiàn)意外情況時(shí)(比如,磁盤(pán)壞了),不至于丟失數(shù)據(jù)。 這里,我們只討論與數(shù)據(jù)有關(guān)的用戶身份驗(yàn)證和用戶權(quán)限管理等技術(shù)。,第章數(shù)據(jù)庫(kù)保護(hù),6.1.2 存取控制 數(shù)據(jù)庫(kù)安全性所關(guān)心的主要是DBMS的存取控制機(jī)制。數(shù)據(jù)庫(kù)安全最重要的一點(diǎn)就是確保只授權(quán)給有資格的用戶訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限,同時(shí)令所有未被授權(quán)的人

6、員無(wú)法接近數(shù)據(jù),者主要是通過(guò)數(shù)據(jù)庫(kù)系統(tǒng)的存取控制機(jī)制實(shí)現(xiàn)的。 存取控制機(jī)制主要包括以下兩部分: 1.定義用戶權(quán)限,并將用戶權(quán)限登記到數(shù)據(jù)字典中。 2.合法權(quán)限檢查,每當(dāng)用戶發(fā)出存取數(shù)據(jù)的操作請(qǐng)求后,DBMS首先查看數(shù)據(jù)字典,根據(jù)安全規(guī)則進(jìn)行合法權(quán)限檢查。若用戶的操作不在所定義的權(quán)限內(nèi),則系統(tǒng)將拒絕執(zhí)行操作。 用戶權(quán)限定義和合法權(quán)限檢查機(jī)制一起構(gòu)成了DBMS的安全子系統(tǒng)。,第章數(shù)據(jù)庫(kù)保護(hù),存取控制方式主要分為兩種:自主存取控制(Discretionary Control,DAC)和強(qiáng)制存取控制(Mandatary Control,MAC)。 自主存取控制方式就是由用戶(如數(shù)據(jù)庫(kù)管理員)自主控制操

7、作數(shù)據(jù)庫(kù)對(duì)象的權(quán)限,哪些用戶可以對(duì)哪些對(duì)象進(jìn)行哪些操作,完全取決于用戶之間的授權(quán)。任何用戶只要需要,就有可能獲得對(duì)任何對(duì)象的操作權(quán)限。這種存取控制方式非常靈活,但有時(shí)容易控制。目前大多數(shù)數(shù)據(jù)庫(kù)管理系統(tǒng)都支持自主存取控制方式。 強(qiáng)制存取控制方式就是每一個(gè)數(shù)據(jù)對(duì)象被標(biāo)以一定的密級(jí),每一個(gè)用戶也被授予一個(gè)許可證級(jí)別,對(duì)于任意一個(gè)對(duì)象,只有具有合法許可證的用戶才可以存取。 強(qiáng)制存取控制本質(zhì)上具有分層特點(diǎn),通常具有靜態(tài)的、嚴(yán)格的分層結(jié)構(gòu),與現(xiàn)實(shí)世界的層次管理相吻合。強(qiáng)制存取控制特別適合層次分明的軍方和政府等的數(shù)據(jù)管理。,第章數(shù)據(jù)庫(kù)保護(hù),6.1.3 數(shù)據(jù)庫(kù)權(quán)限的分類及用戶的分類 1.權(quán)限的分類 通常情況下

8、,數(shù)據(jù)庫(kù)中權(quán)限分為兩類,一類是維護(hù)數(shù)據(jù)庫(kù)管理系統(tǒng)的權(quán)限,另一類是操作數(shù)據(jù)庫(kù)中的對(duì)象和數(shù)據(jù)的權(quán)限,這類權(quán)限又可以分為兩種,一種是操作數(shù)據(jù)庫(kù)對(duì)象的權(quán)限,包括創(chuàng)建、刪除和修改數(shù)據(jù)庫(kù)對(duì)象;另一種是操作數(shù)據(jù)庫(kù)數(shù)據(jù)的權(quán)限,包括對(duì)表、視圖數(shù)據(jù)的增、刪、改、查等操作。 2.用戶的分類 數(shù)據(jù)庫(kù)中的用戶按照其操作權(quán)限的大小可分為如下三類: 數(shù)據(jù)庫(kù)系統(tǒng)管理員 數(shù)據(jù)庫(kù)對(duì)象擁有者 普通用戶,第章數(shù)據(jù)庫(kù)保護(hù),6.1.4 操作權(quán)限定義 SQL語(yǔ)言提供了安全性控制方面的語(yǔ)句。包括授權(quán)(GRANT)、收權(quán)(REVOKE),下面分別介紹這兩個(gè)語(yǔ)句。 1授權(quán) SQL語(yǔ)言用GRANT語(yǔ)句實(shí)現(xiàn)對(duì)用戶的授權(quán)。大致語(yǔ)法格式為: GRANT

9、 , ON 操作對(duì)象 TO , WITH GRANT OPTION 其語(yǔ)義為:將對(duì)指定數(shù)據(jù)對(duì)象的指定操作權(quán)限授予指定的用戶。 對(duì)不同類型的操作對(duì)象有不同的操作權(quán)限,常見(jiàn)的操作權(quán)限如表6.1所示。,第章數(shù)據(jù)庫(kù)保護(hù),表6.1 不同對(duì)象類型的操作權(quán)限 對(duì)屬性列和視圖的操作權(quán)限有:查詢(SELECT)、插入(INSERT)、修改(UPDATE)、刪除(DELETE)以及這四種權(quán)限的總和(ALL PRIVILEGES)。 對(duì)基本表的操作權(quán)限有:查詢(SELECT)、插入(INSERT)、修改(UPDATE)、刪除(DELETE)、修改表(ALTER)和建立索引(INDEX)以及這六種權(quán)限的總和(ALL

10、PRIVILEGES)。,第章數(shù)據(jù)庫(kù)保護(hù),對(duì)數(shù)據(jù)庫(kù)可以建立表(CREATETAB)的權(quán)限,該權(quán)限屬于DBA,可由DBA授予普通用戶,普通用戶擁有此權(quán)限后可以建立基本表,基本表的屬主(Owner)擁有對(duì)該表的一切操作權(quán)限。 如果指定了WITH GRANT OPTION子句,它使得被授權(quán)的用戶具有授權(quán)權(quán)限,即被授權(quán)的用戶有權(quán)力將得到的指定權(quán)限再授予其他用戶。如果沒(méi)有指定WITH GRANT OPTION子句,則獲得某種權(quán)限的用戶只能使用該權(quán)限,但不能傳播該權(quán)限。,第章數(shù)據(jù)庫(kù)保護(hù),2收權(quán) 可以使用REVOKE語(yǔ)句將被授予的權(quán)限收回。在收回某用戶的權(quán)限時(shí),系統(tǒng)自動(dòng)將此次用戶轉(zhuǎn)授給其他用戶的此權(quán)限一并收

11、回。 收回創(chuàng)建對(duì)象權(quán) REVOKE ,. FROM ,. 其中,和的含義GRANT語(yǔ)句。 收回?cái)?shù)據(jù)操作權(quán) REVOKE ,. ON FROM ,. 其中,各選項(xiàng)含義同GRANT語(yǔ)句。,第章數(shù)據(jù)庫(kù)保護(hù),6.2 數(shù)據(jù)庫(kù)完整性 數(shù)據(jù)庫(kù)的完整性是指數(shù)據(jù)的正確性和相容性。 所謂數(shù)據(jù)庫(kù)完整性,是衡量數(shù)據(jù)庫(kù)數(shù)據(jù)質(zhì)量好壞的一種標(biāo)志,是確保數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致,正確性以及符合企業(yè)規(guī)則的一種思想,是使無(wú)序數(shù)據(jù)條理化,確保正確的數(shù)據(jù)被存放在正確位置的一種手段。它是為了防止數(shù)據(jù)庫(kù)中出現(xiàn)不符合語(yǔ)義的數(shù)據(jù),為了維護(hù)數(shù)據(jù)的完整性,數(shù)據(jù)庫(kù)管理系統(tǒng)必須提供一種機(jī)制來(lái)檢查數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否滿足語(yǔ)義規(guī)定的條件。這些加在數(shù)據(jù)庫(kù)數(shù)據(jù)上的

12、語(yǔ)義約束條件就是數(shù)據(jù)完整性約束條件,這些約束條件作為表定義的一部分存儲(chǔ)在數(shù)據(jù)庫(kù)中。而DBMS檢查數(shù)據(jù)是否滿足完整性的機(jī)制就稱為完整性檢查。 數(shù)據(jù)的完整性和安全性是兩個(gè)不同的概念。,第章數(shù)據(jù)庫(kù)保護(hù),滿足數(shù)據(jù)完整性的要求必須滿足以下特點(diǎn): 數(shù)據(jù)的值必須正確無(wú)誤,即數(shù)據(jù)類型必須正確,數(shù)據(jù)的值必須在規(guī)定范圍之內(nèi)。 數(shù)據(jù)的存在必須確保同一表格數(shù)據(jù)之間及不同表格數(shù)據(jù)之間的和諧關(guān)系。 完整性檢查是圍繞著完整性約束條件進(jìn)行的,因此完整性約束條件是完整性控制機(jī)制的核心。完整性約束條件作用的對(duì)象可以是關(guān)系、元組和列三種。 列約束主要是列的數(shù)據(jù)類型、取值范圍、精度、排序等約束條件。 元組的約束是元組中各個(gè)字段間的聯(lián)

13、系的約束。 關(guān)系的約束是若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束。,第章數(shù)據(jù)庫(kù)保護(hù),完整性約束條件涉及這三類對(duì)象,其狀態(tài)可以是靜態(tài)的,也可以是動(dòng)態(tài)的。所謂靜態(tài)約束是指數(shù)據(jù)庫(kù)每一確定狀態(tài)時(shí)的數(shù)據(jù)對(duì)象所應(yīng)滿足的約束條件。它是反映數(shù)據(jù)庫(kù)狀態(tài)合理性的約束,這是最重要的一類完整性約束。 動(dòng)態(tài)約束是指數(shù)據(jù)庫(kù)從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時(shí),新、舊值之間所應(yīng)滿足的約束條件。 綜合上述兩個(gè)方面,可以將完整性約束條件分為六類。 1靜態(tài)列級(jí)約束 靜態(tài)列級(jí)約束是對(duì)一個(gè)列的取值域的說(shuō)明,包括以下幾個(gè)方面: 對(duì)數(shù)據(jù)類型的約束 對(duì)數(shù)據(jù)格式的約束 對(duì)取值范圍或取值集合的約束 對(duì)空值的約束,規(guī)定哪些列可以為空值,哪些列不能

14、為空值,第章數(shù)據(jù)庫(kù)保護(hù),2靜態(tài)元組約束 一個(gè)元組是由若干個(gè)列值組成的,靜態(tài)元組約束就是規(guī)定元組的各個(gè)列之間的約束關(guān)系。例如,訂貨關(guān)系中包含發(fā)貨量、訂貨量等列,規(guī)定發(fā)貨量不得超過(guò)訂貨量。 3靜態(tài)關(guān)系約束 靜態(tài)關(guān)系約束是指在一個(gè)關(guān)系的各個(gè)元組之間或者若干關(guān)系之間存在的約束。常見(jiàn)的靜態(tài)約束有: 實(shí)體完整性約束 參照完整性約束 實(shí)體完整性約束和參照完整性約束是關(guān)系模型的兩個(gè)極其重要的約束,稱為關(guān)系的兩個(gè)不變性。 函數(shù)依賴約束 大部分函數(shù)依賴約束都在關(guān)系模式中定義。 統(tǒng)計(jì)約束 即字段值與關(guān)系中多個(gè)元組的統(tǒng)計(jì)值之間的約束關(guān)系。,第章數(shù)據(jù)庫(kù)保護(hù),4動(dòng)態(tài)列級(jí)約束 動(dòng)態(tài)列級(jí)約束是修改列定義或列值時(shí)應(yīng)滿足的約束條

15、件,包括下面兩方面: 修改列定義時(shí)的約束。 修改列值時(shí)的約束。 修改列值時(shí)有時(shí)需要參照其舊值,并且新舊值之間需要滿足某種約束條件。 5動(dòng)態(tài)元組約束 動(dòng)態(tài)元組約束是指修改元組的值時(shí)元組中各個(gè)字段間需要滿足某種約束條件。 6動(dòng)態(tài)關(guān)系約束 動(dòng)態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的限制條件。,第章數(shù)據(jù)庫(kù)保護(hù),6.3 數(shù)據(jù)庫(kù)的備份與修復(fù) 盡管數(shù)據(jù)庫(kù)系統(tǒng)中采取了各種保護(hù)措施來(lái)防止數(shù)據(jù)庫(kù)的安全性和完整性被破壞,保證并發(fā)事務(wù)的正確執(zhí)行,但是計(jì)算機(jī)系統(tǒng)中硬件的故障、軟件的錯(cuò)誤、操作員的失誤以及惡意的破壞仍是不可避免的,這些故障輕則造成運(yùn)行事務(wù)非正常中斷,影響數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性,重則破壞數(shù)據(jù)庫(kù),使數(shù)據(jù)庫(kù)中全部或部

16、分?jǐn)?shù)據(jù)丟失,因此數(shù)據(jù)庫(kù)管理系統(tǒng)必須具有把數(shù)據(jù)庫(kù)從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為一致?tīng)顟B(tài)或完整狀態(tài))的功能,這就是數(shù)據(jù)庫(kù)的恢復(fù)?;謴?fù)子系統(tǒng)是數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)重要組成部分。數(shù)據(jù)庫(kù)子系統(tǒng)所采用的恢復(fù)技術(shù)是否行之有效,不僅對(duì)系統(tǒng)的可靠程度起著決定性作用,而且對(duì)運(yùn)行效率也有很大影響,是衡量系統(tǒng)性能優(yōu)劣的重要指標(biāo)。,第章數(shù)據(jù)庫(kù)保護(hù),6.3.1 故障的種類 數(shù)據(jù)庫(kù)系統(tǒng)中可能發(fā)生各種各樣的故障,這里談到的故障是指DBMS本身在運(yùn)行過(guò)程中產(chǎn)生的故障,沒(méi)有包括網(wǎng)絡(luò)故障和數(shù)據(jù)傳輸過(guò)程中的通訊故障。大致可以分以下4類。 1.事務(wù)內(nèi)部的故障 它是指由于事務(wù)沒(méi)有達(dá)到預(yù)期的終點(diǎn),導(dǎo)致數(shù)據(jù)庫(kù)可能處于一種不正確的

17、狀態(tài)。事務(wù)內(nèi)部的故障有的是可以通過(guò)事務(wù)程序本身發(fā)現(xiàn)的有的是非預(yù)期的,不能由事務(wù)程序處理的。 事務(wù)故障意味著事務(wù)沒(méi)有達(dá)到預(yù)期的終點(diǎn)(COMMIT或者顯式的ROLLBACK),因此,數(shù)據(jù)庫(kù)可能處于不正確狀態(tài)?;謴?fù)程序的作用就是要在不影響其它事務(wù)運(yùn)行的情況下,強(qiáng)行回滾(ROLLBACK)該事務(wù),即撤消該事務(wù)已經(jīng)作出的任何對(duì)數(shù)據(jù)庫(kù)的修改,使得該事務(wù)好像根本沒(méi)有啟動(dòng)一樣。這類恢復(fù)操作稱為事務(wù)撤消(UNDO)。,第章數(shù)據(jù)庫(kù)保護(hù),2.系統(tǒng)故障 系統(tǒng)故障是指造成系統(tǒng)停止運(yùn)轉(zhuǎn)的任何事件,使得系統(tǒng)要重新啟動(dòng),通常稱為軟故障(Soft Crash)。這類故障影響正在運(yùn)行的所有事務(wù),但不破壞數(shù)據(jù)庫(kù)。這時(shí)主存內(nèi)容,尤其

18、是數(shù)據(jù)庫(kù)緩沖區(qū)(在內(nèi)存)中的內(nèi)容都被丟失,所有運(yùn)行事務(wù)都非正常終止。發(fā)生系統(tǒng)故障時(shí),一些尚未完成的事務(wù)的結(jié)果可能已送入物理數(shù)據(jù)庫(kù),有些已完成的事務(wù)可能有一部分甚至全部留在緩沖區(qū),尚未寫(xiě)回到磁盤(pán)上的物理數(shù)據(jù)庫(kù)中,從而造成數(shù)據(jù)庫(kù)可能處于不正確的狀態(tài)。為保證數(shù)據(jù)一致性,恢復(fù)子系統(tǒng)必須在系統(tǒng)重新啟動(dòng)時(shí)讓所有非正常終止的事務(wù)回滾,強(qiáng)行撤消(UNDO)所有未完成事務(wù)。重做(Redo)所有已提交的事務(wù),以將數(shù)據(jù)庫(kù)真正恢復(fù)到一致?tīng)顟B(tài)。,第章數(shù)據(jù)庫(kù)保護(hù),3.介質(zhì)故障 介質(zhì)故障稱為硬故障(Hard Crash),硬故障指外存故障。如磁盤(pán)損壞、磁頭碰撞,瞬時(shí)強(qiáng)磁場(chǎng)干擾等。這類故障將破壞數(shù)據(jù)庫(kù)或部分?jǐn)?shù)據(jù)庫(kù),并影響正在

19、存取這部分?jǐn)?shù)據(jù)的所有事務(wù)。這類故障比前兩類故障發(fā)生的可能性小得多,但破壞性最大。 4.計(jì)算機(jī)病毒 計(jì)算機(jī)病毒是具有破壞性、可以自我復(fù)制的計(jì)算機(jī)程序。計(jì)算機(jī)病毒已成為計(jì)算機(jī)系統(tǒng)的主要威脅,自然也是數(shù)據(jù)庫(kù)系統(tǒng)的主要威脅。因此數(shù)據(jù)庫(kù)一旦被破壞仍要用恢復(fù)技術(shù)把數(shù)據(jù)庫(kù)加以恢復(fù)。 總結(jié)以上各類故障,對(duì)數(shù)據(jù)庫(kù)的影響有兩種可能性:一是數(shù)據(jù)庫(kù)本身被破壞;二是數(shù)據(jù)庫(kù)沒(méi)有破壞,但數(shù)據(jù)可能不正確。 恢復(fù)的基本原理十分簡(jiǎn)單,可以用一個(gè)詞來(lái)概括:冗余。,第章數(shù)據(jù)庫(kù)保護(hù),6.3.2恢復(fù)實(shí)現(xiàn)技術(shù) 在數(shù)據(jù)庫(kù)系統(tǒng)中,恢復(fù)的基本含義是恢復(fù)數(shù)據(jù)庫(kù)本身。也就是說(shuō),在發(fā)生某種故障使數(shù)據(jù)庫(kù)當(dāng)前狀態(tài)已經(jīng)不再正確時(shí),把數(shù)據(jù)庫(kù)恢復(fù)到已知為正確的

20、某一狀態(tài)?;謴?fù)機(jī)制涉及的兩個(gè)關(guān)鍵問(wèn)題是:第一, 如何建立冗余數(shù)據(jù);第二,如何利用這些冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫(kù)恢復(fù)。 建立冗余數(shù)據(jù)最常用的技術(shù)是數(shù)據(jù)轉(zhuǎn)儲(chǔ)和登錄日志文件。 1.數(shù)據(jù)轉(zhuǎn)儲(chǔ) 數(shù)據(jù)轉(zhuǎn)儲(chǔ)是數(shù)據(jù)庫(kù)恢復(fù)中采用的基本技術(shù)。 1)轉(zhuǎn)儲(chǔ)的定義 所謂轉(zhuǎn)儲(chǔ),就是DBA定期地將整個(gè)數(shù)據(jù)庫(kù)復(fù)制到磁帶或另一個(gè)磁盤(pán)上保存起來(lái)的過(guò)程。這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。,第章數(shù)據(jù)庫(kù)保護(hù),當(dāng)數(shù)據(jù)庫(kù)遭到破壞后可以將后備副本重新裝入,但重裝后備副本只能將數(shù)據(jù)庫(kù)恢復(fù)到轉(zhuǎn)儲(chǔ)時(shí)的狀態(tài),要想恢復(fù)到故障發(fā)生時(shí)的狀態(tài),必須重新運(yùn)行自轉(zhuǎn)儲(chǔ)以后的所有更新事務(wù)。 系統(tǒng)在Ta時(shí)刻停止運(yùn)行事務(wù)進(jìn)行數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ),在Tb時(shí)刻轉(zhuǎn)儲(chǔ)完畢,得到Tb時(shí)刻

21、的數(shù)據(jù)庫(kù)一致性副本。系統(tǒng)運(yùn)行到Tf時(shí)刻發(fā)生故障。為恢復(fù)數(shù)據(jù)庫(kù),首先由DBA重裝數(shù)據(jù)庫(kù)后備副本,將數(shù)據(jù)庫(kù)恢復(fù)至Tb時(shí)刻的狀態(tài),然后重新運(yùn)行自Tb時(shí)刻至Tf時(shí)刻的所有更新事務(wù),這樣就把數(shù)據(jù)庫(kù)恢復(fù)到故障發(fā)生前的一致?tīng)顟B(tài)。 轉(zhuǎn)儲(chǔ)是十分耗費(fèi)時(shí)間和資源的,不能頻繁進(jìn)行, DBA應(yīng)該根據(jù)數(shù)據(jù)庫(kù)使用情況確定一個(gè)適當(dāng)?shù)霓D(zhuǎn)儲(chǔ)周期。,第章數(shù)據(jù)庫(kù)保護(hù),2)轉(zhuǎn)儲(chǔ)的分類 轉(zhuǎn)儲(chǔ)按轉(zhuǎn)儲(chǔ)時(shí)的狀態(tài)分為靜態(tài)轉(zhuǎn)儲(chǔ)和動(dòng)態(tài)轉(zhuǎn)儲(chǔ)。 靜態(tài)轉(zhuǎn)儲(chǔ)是在系統(tǒng)中無(wú)運(yùn)行事務(wù)時(shí)進(jìn)行的轉(zhuǎn)儲(chǔ)操作。 動(dòng)態(tài)轉(zhuǎn)儲(chǔ)是指轉(zhuǎn)儲(chǔ)期間允許對(duì)數(shù)據(jù)庫(kù)進(jìn)行存取或修改。即轉(zhuǎn)儲(chǔ)和用戶事務(wù)可以并發(fā)執(zhí)行。 轉(zhuǎn)儲(chǔ)按轉(zhuǎn)儲(chǔ)方式分為海量轉(zhuǎn)儲(chǔ)和增量轉(zhuǎn)儲(chǔ)。 海量轉(zhuǎn)儲(chǔ)是指每次轉(zhuǎn)儲(chǔ)全部數(shù)據(jù)庫(kù)。 增量轉(zhuǎn)儲(chǔ)

22、則指每次只轉(zhuǎn)儲(chǔ)上一次轉(zhuǎn)儲(chǔ)后更新過(guò)的數(shù)據(jù)。 從恢復(fù)角度看,使用海量轉(zhuǎn)儲(chǔ)得到的后備副本進(jìn)行恢復(fù)一般說(shuō)來(lái)會(huì)更方便些。但如果數(shù)據(jù)庫(kù)很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲(chǔ)方式更實(shí)用更有效。 數(shù)據(jù)轉(zhuǎn)儲(chǔ)有兩種方式,分別可以在兩種狀態(tài)下進(jìn)行,因此數(shù)據(jù)轉(zhuǎn)儲(chǔ)方法可以分為四類:動(dòng)態(tài)海量轉(zhuǎn)儲(chǔ)、動(dòng)態(tài)增量轉(zhuǎn)儲(chǔ)、靜態(tài)海量轉(zhuǎn)儲(chǔ)和靜態(tài)增量轉(zhuǎn)儲(chǔ)。如表6.2所示。,第章數(shù)據(jù)庫(kù)保護(hù),表6.2 數(shù)據(jù)轉(zhuǎn)儲(chǔ)分類,第章數(shù)據(jù)庫(kù)保護(hù),2.登錄日志文件 日志是指記載數(shù)據(jù)庫(kù)修改信息的數(shù)據(jù)結(jié)構(gòu)。 日志文件是用來(lái)記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作的文件。 不同數(shù)據(jù)庫(kù)系統(tǒng)采用的日志文件并不完全一樣。概括起來(lái)日志文件主要有兩種格式:以記錄為單位的日志文件和以數(shù)據(jù)塊為

23、單位的日志文件。 1)日志文件的格式和內(nèi)容 以記錄為單位的日志文件,包括: 各個(gè)事務(wù)的開(kāi)始(BEGIN TRANSACTION)標(biāo)記 各個(gè)事務(wù)的開(kāi)始(BEGIN TRANSACTION)標(biāo)記 各個(gè)事務(wù)的所有更新操作 這里每個(gè)事務(wù)開(kāi)始的標(biāo)記、結(jié)束標(biāo)記和每個(gè)更新操作構(gòu)成一個(gè)日志記錄(Log Record)。,第章數(shù)據(jù)庫(kù)保護(hù),以數(shù)據(jù)塊為單位的日志文件,包括: 事務(wù)標(biāo)識(shí)(標(biāo)明是那個(gè)事務(wù)); 操作的類型(插入、刪除或修改); 操作對(duì)象(記錄內(nèi)部標(biāo)識(shí)); 更新前數(shù)據(jù)的舊值(對(duì)插入操作而言,此項(xiàng)為空值); 對(duì)于以數(shù)據(jù)塊為單位的日志文件,日志記錄的內(nèi)容包括事務(wù)標(biāo)識(shí)和被更新的數(shù)據(jù)塊。由于將更新前的整個(gè)塊和更新后

24、的整個(gè)塊都放入日志文件中,操作的類型的操作對(duì)象等信息就不必放入日志記錄中。,第章數(shù)據(jù)庫(kù)保護(hù),2)日志文件的作用 事務(wù)故障恢復(fù)和系統(tǒng)故障必須用日志文件。 在動(dòng)態(tài)轉(zhuǎn)儲(chǔ)方式中必須建立日志文件,后援副本和日志文件綜合起來(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)行那些已完成的事務(wù)程序就可把數(shù)據(jù)庫(kù)恢復(fù)到故障前某一時(shí)刻的正確狀態(tài),如圖6.3所示。,第章數(shù)據(jù)庫(kù)保護(hù),圖6.3 利用日志文件進(jìn)行恢復(fù) 3)登記日志文件(Lo

25、gging) 為保證數(shù)據(jù)庫(kù)是可恢復(fù)的,登記日志文件時(shí)必須遵循兩條原則: 登記的次序嚴(yán)格按并發(fā)事務(wù)執(zhí)行的時(shí)間次序; 必須先寫(xiě)日志文件,后寫(xiě)數(shù)據(jù)庫(kù)。,第章數(shù)據(jù)庫(kù)保護(hù),6.3恢復(fù)策略 6.4.1 事務(wù)故障的恢復(fù) 事務(wù)故障是指事務(wù)在運(yùn)行至正常終止點(diǎn)前被中止,這時(shí)恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤消(UNDO)此事務(wù)已對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改。事務(wù)故障的恢復(fù)是由系統(tǒng)自動(dòng)完成的,對(duì)用戶是透明的。系統(tǒng)的恢復(fù)步驟是: 反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。 對(duì)該事務(wù)的更新操作執(zhí)行逆操作。 繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。 如此處理下去,直至讀到此事務(wù)的開(kāi)始標(biāo)記,事

26、務(wù)故障恢復(fù)就完成了。,第章數(shù)據(jù)庫(kù)保護(hù),6.4.2 系統(tǒng)故障的恢復(fù) 系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致?tīng)顟B(tài)的原因有兩個(gè),一是未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能已寫(xiě)入數(shù)據(jù)庫(kù),二是已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能還留在緩沖區(qū)沒(méi)來(lái)得及寫(xiě)入數(shù)據(jù)庫(kù)。因此恢復(fù)操作就是要撤消故障發(fā)生時(shí)未完成的事務(wù),重做已完成的事務(wù)。 系統(tǒng)故障的恢復(fù)是由系統(tǒng)在重新啟動(dòng)時(shí)自動(dòng)完成的,不需要用戶干預(yù)。系統(tǒng)的恢復(fù)步驟是: 正向掃描日志文件(即從頭掃描日志文件),找出在故障發(fā)生前已經(jīng)提交事務(wù)(這些事務(wù)既有BEGIN TRANSACTION記錄,也有COMMIT記錄),將其事務(wù)標(biāo)識(shí)記入重做(REDO)隊(duì)列。同時(shí)找出故障發(fā)生時(shí)尚未完成的事務(wù)(這些事務(wù)只有BEGIN TRANSACTION記錄,無(wú)相應(yīng)的COMMIT記錄

溫馨提示

  • 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)論