![第章數(shù)據(jù)庫(kù)保護(hù)_第1頁(yè)](http://file4.renrendoc.com/view/5f594f72a8e56031f5e5f3b8ac19ece6/5f594f72a8e56031f5e5f3b8ac19ece61.gif)
![第章數(shù)據(jù)庫(kù)保護(hù)_第2頁(yè)](http://file4.renrendoc.com/view/5f594f72a8e56031f5e5f3b8ac19ece6/5f594f72a8e56031f5e5f3b8ac19ece62.gif)
![第章數(shù)據(jù)庫(kù)保護(hù)_第3頁(yè)](http://file4.renrendoc.com/view/5f594f72a8e56031f5e5f3b8ac19ece6/5f594f72a8e56031f5e5f3b8ac19ece63.gif)
![第章數(shù)據(jù)庫(kù)保護(hù)_第4頁(yè)](http://file4.renrendoc.com/view/5f594f72a8e56031f5e5f3b8ac19ece6/5f594f72a8e56031f5e5f3b8ac19ece64.gif)
![第章數(shù)據(jù)庫(kù)保護(hù)_第5頁(yè)](http://file4.renrendoc.com/view/5f594f72a8e56031f5e5f3b8ac19ece6/5f594f72a8e56031f5e5f3b8ac19ece65.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第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ù)策略。1.數(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ù)不被破壞,這是通過數(shù)據(jù)庫(kù)的安全機(jī)制實(shí)現(xiàn)的;第二是保證數(shù)據(jù)庫(kù)中的世界與現(xiàn)實(shí)世界相符,這是通過數(shù)據(jù)庫(kù)的完整性控制機(jī)制實(shí)現(xiàn)的;第三是保證當(dāng)由于各種原因而造成數(shù)據(jù)損害時(shí),數(shù)據(jù)不會(huì)丟失,這是通過數(shù)據(jù)庫(kù)的備份和恢復(fù)機(jī)制實(shí)現(xiàn)的。本章我們介紹這三方面的內(nèi)容。2.6.1數(shù)據(jù)庫(kù)安全性安全性對(duì)于一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)來說是至關(guān)重要的。數(shù)據(jù)庫(kù)通過存儲(chǔ)了大量的數(shù)據(jù),這些數(shù)據(jù)可能包括了個(gè)人信息、客戶清單或其他機(jī)密資料。如果有人未經(jīng)授權(quán)非法侵入了數(shù)據(jù)庫(kù),并查看和修改了數(shù)據(jù),那么將會(huì)造成極大的危害,特別是在銀行、金融等系統(tǒng)中更是如此。安全性問題并非是數(shù)據(jù)庫(kù)系統(tǒng)所獨(dú)有,實(shí)際上在許多系統(tǒng)上都存在同樣的問題。數(shù)據(jù)的安全控制是指在數(shù)據(jù)庫(kù)系統(tǒng)的不同層次提供安全防范措施,以免數(shù)據(jù)庫(kù)系統(tǒng)遭到有意或無(wú)意的損壞。在數(shù)據(jù)庫(kù)中,可采用加密存、取數(shù)據(jù)的方法防止有意的非法活動(dòng);使用用戶身份驗(yàn)證、限制操作權(quán)來控制有意的非法操作;采用提高系統(tǒng)的可靠性和數(shù)據(jù)備份來控制無(wú)意的破壞。3.數(shù)據(jù)庫(kù)的安全性和完整性是兩個(gè)不同的概念,完整性是指防止合法用戶的無(wú)意操作而造成的數(shù)據(jù)錯(cuò)誤。通俗的來說,安全性防范的是非法用戶的有意破壞,完整性防范的是合法用戶的無(wú)意破壞。4.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)該具備安全保護(hù)功能外,還需要從管理機(jī)制、人員行為等多方面采取措施。所以,數(shù)據(jù)庫(kù)安全性應(yīng)該從如下幾個(gè)層次采取措施:⑴物理層⑵人員層⑶操作系統(tǒng)層⑷數(shù)據(jù)庫(kù)控制層5.在一般數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,安全措施是一級(jí)一級(jí)層層設(shè)置的。圖6.1顯示了從用戶使用數(shù)據(jù)庫(kù)應(yīng)用程序開始一直到訪問后臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)經(jīng)過的安全認(rèn)證過程。圖6.1數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的安全模型6.當(dāng)用戶訪問數(shù)據(jù)庫(kù)數(shù)據(jù)時(shí),首先應(yīng)該進(jìn)入到數(shù)據(jù)庫(kù)系統(tǒng)。用戶進(jìn)入到數(shù)據(jù)庫(kù)系統(tǒng)通常是通過數(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)入到下一步的操作。若是合法用戶,當(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è)置文件的訪問權(quán)限等。對(duì)于存儲(chǔ)在磁盤上的文件,還可以加密存儲(chǔ),這樣即使數(shù)據(jù)被人竊取,竊取者也很難讀懂?dāng)?shù)據(jù)。另外,還可以將數(shù)據(jù)庫(kù)文件保存多份,這樣當(dāng)出現(xiàn)意外情況時(shí)(比如,磁盤壞了),不至于丟失數(shù)據(jù)。這里,我們只討論與數(shù)據(jù)有關(guān)的用戶身份驗(yàn)證和用戶權(quán)限管理等技術(shù)。7.6.1.2存取控制數(shù)據(jù)庫(kù)安全性所關(guān)心的主要是DBMS的存取控制機(jī)制。數(shù)據(jù)庫(kù)安全最重要的一點(diǎn)就是確保只授權(quán)給有資格的用戶訪問數(shù)據(jù)庫(kù)的權(quán)限,同時(shí)令所有未被授權(quán)的人員無(wú)法接近數(shù)據(jù),者主要是通過數(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)。8.存取控制方式主要分為兩種:自主存取控制(DiscretionaryControl,DAC)和強(qiáng)制存取控制(MandataryControl,MAC)。自主存取控制方式就是由用戶(如數(shù)據(jù)庫(kù)管理員)自主控制操作數(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ù)管理。9.6.1.3數(shù)據(jù)庫(kù)權(quán)限的分類及用戶的分類1.權(quán)限的分類通常情況下,數(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ì)象擁有者⑶普通用戶10.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<權(quán)限>[,<權(quán)限>]ON操作對(duì)象
TO<用戶名>[,<用戶名>]
[WITHGRANTOPTION]
其語(yǔ)義為:將對(duì)指定數(shù)據(jù)對(duì)象的指定操作權(quán)限授予指定的用戶。對(duì)不同類型的操作對(duì)象有不同的操作權(quán)限,常見的操作權(quán)限如表6.1所示。11.表6.1不同對(duì)象類型的操作權(quán)限對(duì)屬性列和視圖的操作權(quán)限有:查詢(SELECT)、插入(INSERT)、修改(UPDATE)、刪除(DELETE)以及這四種權(quán)限的總和(ALLPRIVILEGES)。對(duì)基本表的操作權(quán)限有:查詢(SELECT)、插入(INSERT)、修改(UPDATE)、刪除(DELETE)、修改表(ALTER)和建立索引(INDEX)以及這六種權(quán)限的總和(ALLPRIVILEGES)。對(duì)象對(duì)象類型操作權(quán)限屬性列TABLESELECT,INSERT,UPDATE,DELETE,ALLPRIVILEGES視圖TABLESELECT,INSERT,UPDATE,DELETE,ALLPRIVILEGES基本表TABLESELECT,INSERT,UPDATE,DELETE,ALTER,INDEX,ALLPRIVILEGES數(shù)據(jù)庫(kù)DATABASECREATETAB12.對(duì)數(shù)據(jù)庫(kù)可以建立表(CREATETAB)的權(quán)限,該權(quán)限屬于DBA,可由DBA授予普通用戶,普通用戶擁有此權(quán)限后可以建立基本表,基本表的屬主(Owner)擁有對(duì)該表的一切操作權(quán)限。如果指定了WITHGRANTOPTION子句,它使得被授權(quán)的用戶具有授權(quán)權(quán)限,即被授權(quán)的用戶有權(quán)力將得到的指定權(quán)限再授予其他用戶。如果沒有指定WITHGRANTOPTION子句,則獲得某種權(quán)限的用戶只能使用該權(quán)限,但不能傳播該權(quán)限。13.2.收權(quán)可以使用REVOKE語(yǔ)句將被授予的權(quán)限收回。在收回某用戶的權(quán)限時(shí),系統(tǒng)自動(dòng)將此次用戶轉(zhuǎn)授給其他用戶的此權(quán)限一并收回。⑴收回創(chuàng)建對(duì)象權(quán)
REVOKE<權(quán)限>[,<權(quán)限>]...
FROM<用戶名>[,<用戶名>]...其中,<權(quán)限>和<用戶名>的含義GRANT語(yǔ)句。⑵收回?cái)?shù)據(jù)操作權(quán)
REVOKE<權(quán)限>[,<權(quán)限>]...
[ON<對(duì)象名>]
FROM<用戶名>[,<用戶名>]...其中,各選項(xiàng)含義同GRANT語(yǔ)句。14.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ī)制來檢查數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否滿足語(yǔ)義規(guī)定的條件。這些加在數(shù)據(jù)庫(kù)數(shù)據(jù)上的語(yǔ)義約束條件就是數(shù)據(jù)完整性約束條件,這些約束條件作為表定義的一部分存儲(chǔ)在數(shù)據(jù)庫(kù)中。而DBMS檢查數(shù)據(jù)是否滿足完整性的機(jī)制就稱為完整性檢查。數(shù)據(jù)的完整性和安全性是兩個(gè)不同的概念。15.滿足數(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)系的約束。
●關(guān)系的約束是若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束。16.完整性約束條件涉及這三類對(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è)列的取值域的說明,包括以下幾個(gè)方面:⑴對(duì)數(shù)據(jù)類型的約束⑵對(duì)數(shù)據(jù)格式的約束⑶對(duì)取值范圍或取值集合的約束⑷對(duì)空值的約束,規(guī)定哪些列可以為空值,哪些列不能為空值17.
2.靜態(tài)元組約束一個(gè)元組是由若干個(gè)列值組成的,靜態(tài)元組約束就是規(guī)定元組的各個(gè)列之間的約束關(guān)系。例如,訂貨關(guān)系中包含發(fā)貨量、訂貨量等列,規(guī)定發(fā)貨量不得超過訂貨量。
3.靜態(tài)關(guān)系約束靜態(tài)關(guān)系約束是指在一個(gè)關(guān)系的各個(gè)元組之間或者若干關(guā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)系。18.
4.動(dòng)態(tài)列級(jí)約束動(dòng)態(tài)列級(jí)約束是修改列定義或列值時(shí)應(yīng)滿足的約束條件,包括下面兩方面:⑴修改列定義時(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)上的限制條件。19.6.3數(shù)據(jù)庫(kù)的備份與修復(fù)盡管數(shù)據(jù)庫(kù)系統(tǒng)中采取了各種保護(hù)措施來防止數(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ù)中全部或部分?jǐn)?shù)據(jù)丟失,因此數(shù)據(jù)庫(kù)管理系統(tǒng)必須具有把數(shù)據(jù)庫(kù)從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為一致狀態(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)。20.6.3.1故障的種類數(shù)據(jù)庫(kù)系統(tǒng)中可能發(fā)生各種各樣的故障,這里談到的故障是指DBMS本身在運(yùn)行過程中產(chǎn)生的故障,沒有包括網(wǎng)絡(luò)故障和數(shù)據(jù)傳輸過程中的通訊故障。大致可以分以下4類。
1.事務(wù)內(nèi)部的故障它是指由于事務(wù)沒有達(dá)到預(yù)期的終點(diǎn),導(dǎo)致數(shù)據(jù)庫(kù)可能處于一種不正確的狀態(tài)。事務(wù)內(nèi)部的故障有的是可以通過事務(wù)程序本身發(fā)現(xiàn)的有的是非預(yù)期的,不能由事務(wù)程序處理的。事務(wù)故障意味著事務(wù)沒有達(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ù)好像根本沒有啟動(dòng)一樣。這類恢復(fù)操作稱為事務(wù)撤消(UNDO)。21.2.系統(tǒng)故障系統(tǒng)故障是指造成系統(tǒng)停止運(yùn)轉(zhuǎn)的任何事件,使得系統(tǒng)要重新啟動(dòng),通常稱為軟故障(SoftCrash)。這類故障影響正在運(yùn)行的所有事務(wù),但不破壞數(shù)據(jù)庫(kù)。這時(shí)主存內(nèi)容,尤其是數(shù)據(jù)庫(kù)緩沖區(qū)(在內(nèi)存)中的內(nèi)容都被丟失,所有運(yùn)行事務(wù)都非正常終止。發(fā)生系統(tǒng)故障時(shí),一些尚未完成的事務(wù)的結(jié)果可能已送入物理數(shù)據(jù)庫(kù),有些已完成的事務(wù)可能有一部分甚至全部留在緩沖區(qū),尚未寫回到磁盤上的物理數(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ài)。22.3.介質(zhì)故障介質(zhì)故障稱為硬故障(HardCrash),硬故障指外存故障。如磁盤損壞、磁頭碰撞,瞬時(shí)強(qiáng)磁場(chǎng)干擾等。這類故障將破壞數(shù)據(jù)庫(kù)或部分?jǐn)?shù)據(jù)庫(kù),并影響正在存取這部分?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ù)??偨Y(jié)以上各類故障,對(duì)數(shù)據(jù)庫(kù)的影響有兩種可能性:一是數(shù)據(jù)庫(kù)本身被破壞;二是數(shù)據(jù)庫(kù)沒有破壞,但數(shù)據(jù)可能不正確?;謴?fù)的基本原理十分簡(jiǎn)單,可以用一個(gè)詞來概括:冗余。23.6.3.2恢復(fù)實(shí)現(xiàn)技術(shù)在數(shù)據(jù)庫(kù)系統(tǒng)中,恢復(fù)的基本含義是恢復(fù)數(shù)據(jù)庫(kù)本身。也就是說,在發(fā)生某種故障使數(shù)據(jù)庫(kù)當(dāng)前狀態(tài)已經(jīng)不再正確時(shí),把數(shù)據(jù)庫(kù)恢復(fù)到已知為正確的某一狀態(tài)?;謴?fù)機(jī)制涉及的兩個(gè)關(guā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è)磁盤上保存起來的過程。這些備用的數(shù)據(jù)文本稱為后備副本或后援副本。24.當(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í)刻的數(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ài)。轉(zhuǎn)儲(chǔ)是十分耗費(fèi)時(shí)間和資源的,不能頻繁進(jìn)行,
DBA應(yīng)該根據(jù)數(shù)據(jù)庫(kù)使用情況確定一個(gè)適當(dāng)?shù)霓D(zhuǎn)儲(chǔ)周期。25.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ǔ)則指每次只轉(zhuǎn)儲(chǔ)上一次轉(zhuǎn)儲(chǔ)后更新過的數(shù)據(jù)。從恢復(fù)角度看,使用海量轉(zhuǎn)儲(chǔ)得到的后備副本進(jìn)行恢復(fù)一般說來會(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所示。26.表6.2數(shù)據(jù)轉(zhuǎn)儲(chǔ)分類轉(zhuǎn)儲(chǔ)狀態(tài)動(dòng)態(tài)轉(zhuǎn)儲(chǔ)靜態(tài)轉(zhuǎn)儲(chǔ)轉(zhuǎn)儲(chǔ)方式海量轉(zhuǎn)儲(chǔ)動(dòng)態(tài)海量轉(zhuǎn)儲(chǔ)靜態(tài)海量轉(zhuǎn)儲(chǔ)增量轉(zhuǎn)儲(chǔ)動(dòng)態(tài)增量轉(zhuǎn)儲(chǔ)靜態(tài)增量轉(zhuǎn)儲(chǔ)27.2.登錄日志文件日志是指記載數(shù)據(jù)庫(kù)修改信息的數(shù)據(jù)結(jié)構(gòu)。日志文件是用來記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作的文件。不同數(shù)據(jù)庫(kù)系統(tǒng)采用的日志文件并不完全一樣。概括起來日志文件主要有兩種格式:以記錄為單位的日志文件和以數(shù)據(jù)塊為單位的日志文件。1)日志文件的格式和內(nèi)容以記錄為單位的日志文件,包括:●各個(gè)事務(wù)的開始(BEGINTRANSACTION)標(biāo)記●各個(gè)事務(wù)的開始(BEGINTRANSACTION)標(biāo)記●各個(gè)事務(wù)的所有更新操作這里每個(gè)事務(wù)開始的標(biāo)記、結(jié)束標(biāo)記和每個(gè)更新操作構(gòu)成一個(gè)日志記錄(LogRecord)。28.以數(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è)塊和更新后的整個(gè)塊都放入日志文件中,操作的類型的操作對(duì)象等信息就不必放入日志記錄中。29.2)日志文件的作用①事務(wù)故障恢復(fù)和系統(tǒng)故障必須用日志文件。②在動(dòng)態(tài)轉(zhuǎn)儲(chǔ)方式中必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復(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所示。30.圖6.3利用日志文件進(jìn)行恢復(fù)
3)登記日志文件(Logging)為保證數(shù)據(jù)庫(kù)是可恢復(fù)的,登記日志文件時(shí)必須遵循兩條原則:①登記的次序嚴(yán)格按并發(fā)事務(wù)執(zhí)行的時(shí)間次序;②必須先寫日志文件,后寫數(shù)據(jù)庫(kù)。31.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ù)的開始標(biāo)記,事務(wù)故障恢復(fù)就完成了。32.6.4.2系統(tǒng)故障的恢復(fù)系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致狀態(tài)的原因有兩個(gè),一是未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能已寫入數(shù)據(jù)庫(kù),二是已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能還留在緩沖區(qū)沒來得及寫入數(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ù)既有BEGINTRANSACTION記錄,也有COMMIT記錄),將其事務(wù)標(biāo)識(shí)記入重做(RE
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)聯(lián)盟運(yùn)營(yíng)管理協(xié)議
- 2025年藥物載體材料項(xiàng)目提案報(bào)告范文
- 2025年高阻隔性封裝材料項(xiàng)目提案報(bào)告
- 2025年生鮮電商項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模板
- 2025年停車服務(wù)授權(quán)協(xié)議范本
- 2025年合作招商協(xié)議范例
- 2025年投資策劃合作協(xié)議書樣本
- 2025年醫(yī)療美容服務(wù)合同范本
- 2025年體育館施工協(xié)作協(xié)議
- 2025年住宅區(qū)綠化工程合同協(xié)議書
- 2024-2025年中國(guó)專網(wǎng)通信行業(yè)市場(chǎng)前景預(yù)測(cè)及投資戰(zhàn)略研究報(bào)告
- 二零二五年度能源行業(yè)員工勞動(dòng)合同標(biāo)準(zhǔn)范本3篇
- 培訓(xùn)課件:律師客戶溝通技巧
- 2025年春新外研版(三起)英語(yǔ)三年級(jí)下冊(cè)課件 Unit5第1課時(shí)Startup
- 2025年春新外研版(三起)英語(yǔ)三年級(jí)下冊(cè)課件 Unit1第2課時(shí)Speedup
- 2024年石柱土家族自治縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 西藏事業(yè)單位c類歷年真題
- 上海市2024年中考英語(yǔ)試題及答案
- 2025中國(guó)移動(dòng)安徽分公司春季社會(huì)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 砂光機(jī)培訓(xùn)課件
- 七年級(jí)英語(yǔ)下學(xué)期開學(xué)考試(深圳專用)-2022-2023學(xué)年七年級(jí)英語(yǔ)下冊(cè)單元重難點(diǎn)易錯(cuò)題精練(牛津深圳版)
評(píng)論
0/150
提交評(píng)論