版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章數(shù)據(jù)庫安全保護(hù)
【本章重點】理解數(shù)據(jù)庫安全性控制含義,掌握數(shù)據(jù)庫安全性控制方法;理解數(shù)據(jù)庫的完整性控制;理解事務(wù)的概念,掌握數(shù)據(jù)庫并發(fā)控制的方法;掌握數(shù)據(jù)庫備份及恢復(fù)的原理和技術(shù)。36.1數(shù)據(jù)庫的安全性控制6.2數(shù)據(jù)庫完整性控制6.3事務(wù)和并發(fā)控制6.4數(shù)據(jù)庫恢復(fù)46.1數(shù)據(jù)庫的安全性數(shù)據(jù)庫系統(tǒng)的安全保護(hù)措施是否有效是數(shù)據(jù)庫系統(tǒng)主要的性能指標(biāo)之一。一般來說,對數(shù)據(jù)庫的破壞主要來自以下4個方面:(1)非法用戶(2)非法數(shù)據(jù)(3)多用戶的并發(fā)訪問(4)各種故障針對以上四種對數(shù)據(jù)庫破壞的可能情況,數(shù)據(jù)庫管理系統(tǒng)(DBMS)已采取相應(yīng)措施對數(shù)據(jù)庫實施保護(hù),具體如下:(1)利用權(quán)限機制。(2)利用完整性約束,防止非法數(shù)據(jù)進(jìn)入數(shù)據(jù)庫。(3)提供并發(fā)控制(ConcurrentControl)機制,控制多個用戶對同一數(shù)據(jù)的并發(fā)操作,以保證多個用戶并發(fā)訪問的順利進(jìn)行。(4)提供故障恢復(fù)(Recovery)能力,以保證各種故障發(fā)生后,能將數(shù)據(jù)庫中的數(shù)據(jù)從錯誤狀態(tài)恢復(fù)到一致狀態(tài)2、數(shù)據(jù)庫的安全標(biāo)準(zhǔn)目前國際上廣泛采用的是美國標(biāo)準(zhǔn)TCSEC(TDI),在此標(biāo)準(zhǔn)中將數(shù)據(jù)庫安全劃分為4大類,由低到高依次為D、C、B、A。其中C級由低到高分為C1和C2,B級由低到高分為B1、B2和B3。我國的國家標(biāo)準(zhǔn)的基本結(jié)構(gòu)與TCSEC相似。我國標(biāo)準(zhǔn)分為5級,從第1級到第5級依次與TCSEC標(biāo)準(zhǔn)的C級(C1、C2)及B級(B1、B2、B3)一致。76.1.2安全性控制的方法數(shù)據(jù)庫的安全性是指在信息系統(tǒng)的不同層次保護(hù)數(shù)據(jù)庫,防止未授權(quán)的數(shù)據(jù)訪問,避免數(shù)據(jù)的泄漏、不合法的修改或?qū)?shù)據(jù)的破壞。圖6-1計算機系統(tǒng)的安全模型8安全性控制的一般方法用戶認(rèn)證存取權(quán)限控制視圖隔離數(shù)據(jù)加密
審計跟蹤91、用戶認(rèn)證用戶標(biāo)識與鑒別,即用戶認(rèn)證,是系統(tǒng)提供的最外層安全保護(hù)措施。其方法是由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份,每次用戶要求進(jìn)入系統(tǒng)時,由系統(tǒng)進(jìn)行核對,通過鑒定正確后才提供機器使用權(quán)。用戶標(biāo)識和鑒定的方法常用的方法是通過用戶名和口令。系統(tǒng)內(nèi)部會記錄著所有合法用戶的標(biāo)識及口令,通過比對來核實是否為合法用戶,用戶口令的輸入不顯示在屏幕上。通過用戶名和口令來鑒定用戶的方法簡單易行,但其可靠程度差。近年來,一些更加有效的身份認(rèn)證技術(shù)迅速發(fā)展起來。例如使用某種計算機過程和函數(shù)、智能卡技術(shù),物理特征(指紋、聲音、手圖等)等具有高強度的認(rèn)證技術(shù)。102、存取權(quán)限控制用戶存取權(quán)限確保只授權(quán)給有資格的用戶訪問數(shù)據(jù)庫的權(quán)限,同時令所有未被授權(quán)的人員無法查看或操作數(shù)據(jù)。在存取控制技術(shù)中,DBMS所管理的全體實體分為主體和客體兩類。數(shù)據(jù)庫存取控制機制包括兩個部分:1、定義用戶權(quán)限,并將用戶權(quán)限記錄到數(shù)據(jù)字典中2、合法性權(quán)限檢查存取控制包括自主型存取控制(DAC)和強制型存取控制(MAC)兩種類型。3、視圖隔離離視圖是是從一一個或幾個基基表(或視圖圖)導(dǎo)出的表表,與基表不不同,是一個個虛表。數(shù)據(jù)據(jù)庫中只存放放視圖的定義義,而不存放放視圖對應(yīng)的的數(shù)據(jù),這些些數(shù)據(jù)仍存放放在原來的基基本表中。在實際應(yīng)用中中,常將視圖圖機制與存取取控制機制結(jié)結(jié)合起來使用用,首先用視視圖機制屏蔽蔽一部分保密密數(shù)據(jù),再在在視圖上進(jìn)一一步定義存取取權(quán)限。通過過定義不同的的視圖及有選選擇地授予視視圖上的權(quán)限限,可以將用用戶、組或角角色限制在不不同的數(shù)據(jù)子子集內(nèi)。124、數(shù)據(jù)加密密加密的基本思思想是根據(jù)一一定的算法將將原始數(shù)據(jù)((術(shù)語為明文文)變換為不不可直接識別別的格式(術(shù)術(shù)語為密文)),從而使得得不知道解密密算法的人無無法獲知數(shù)據(jù)據(jù)的內(nèi)容。數(shù)數(shù)據(jù)解密是加加密的逆過程程,即將密文文數(shù)據(jù)轉(zhuǎn)變成成可見的明文文數(shù)據(jù)。一個密碼系統(tǒng)統(tǒng)包含明文集集合、密文集集合、密鑰集集合和算法,,其中密鑰和和算法構(gòu)成了了密碼系統(tǒng)的的基本單元。。算法是一些些公式、法則則或程序,它它規(guī)定明文與與密文之間的的變換方法,,密鑰可以看看作算法中的的參數(shù)。加密方法可分分為對稱加密密與非對稱加加密兩種。135、審計跟蹤蹤審計功能是一一種監(jiān)視措施施,它跟蹤記記錄有關(guān)數(shù)據(jù)據(jù)的訪問活動動。審計功能把用用戶對數(shù)據(jù)庫庫的所有操作作自動記錄下下來,存放在在審計日志文文件中。常用兩種審計計方式包括用用戶審計和系系統(tǒng)審計。146.1.3SQLServer2012的安全性策策略SQLServer2012的的安全模型分分為三層結(jié)構(gòu)構(gòu),分別為服服務(wù)器安全管管理、數(shù)據(jù)庫庫安全管理和和數(shù)據(jù)庫對象象的訪問權(quán)限限管理:第一層安全性性是SQLServer服務(wù)器器級別的安全全性。建立在在控制服務(wù)器器登陸賬號和和密碼的基礎(chǔ)礎(chǔ)上。第二層安全性性是數(shù)據(jù)庫級級別的安全性性。即是否否具有訪問某某個數(shù)據(jù)庫的的權(quán)利。第二層安全性性是數(shù)據(jù)庫對對象級別的安安全性。15SQLServer2012的身身份驗證模式式Windows身份驗證證模式Windows身份驗證證模式使用由由Windows授權(quán)的的用戶,并允允許通過身份份驗證的用戶戶登陸SQLServer2012。用戶登登錄到SQLServer2012時,只需需選擇Windows身身份驗證模式式,無需再提提供登錄帳戶戶和密碼,系系統(tǒng)會從用戶戶登錄到Windows時提供的用用戶名和密碼碼中查找用戶戶的登錄信息息,以判斷其其是否為SQLServer2012的合法法用戶。該模式是SQLServer2012的默認(rèn)認(rèn)登陸模式,,支持Windows的的密碼策略和和鎖寫策略。。16TCP/IPSockets命名管道SQLServer身身份驗證模式式Windows身份驗證證模式混合驗證模式式混合身份驗證證模式允許以以SQLServer身份驗證模模式或者Windows身份驗證模模式來進(jìn)行驗驗證。如果在混合模模式下選擇使使用SQLServer授權(quán)用戶戶登錄SQLServer2012,則用戶戶必須提供登登錄名和密碼碼,SQLServer使用這兩兩部分內(nèi)容來來驗證用戶,,SQLServer2012通通過檢查是否否已設(shè)置SQLServer登錄錄帳戶,以及及指定的密碼碼是否與記錄錄的密碼匹配配,進(jìn)行身份份驗證。17SQLServer在在安裝時,會會自動創(chuàng)建一一個DB服務(wù)務(wù)器的登錄用用戶sa,即即系統(tǒng)管理員員,用以創(chuàng)建建其他登錄用用戶和授權(quán)。。SQLServer2012保障障服務(wù)器作用用域安全可以以通過管理登登陸名來實現(xiàn)現(xiàn)。創(chuàng)建服務(wù)器的的登錄賬號利用EnterpriseManage利用存儲過程程EXECsp_addlogin'登錄賬賬號名稱','密碼','默認(rèn)認(rèn)數(shù)據(jù)庫名','使用用的語言'[例]建立立了一個名稱稱為Jake的登錄賬號號。EXECsp_addlogin'Jake',‘‘p2015','Teach',NULL18SQLServer的的服務(wù)器角色色角色(Role)是對權(quán)權(quán)限集中管理理的一種機制制,將不同的的權(quán)限組合在在一起就形成成了一種角色色。服務(wù)器角色是是執(zhí)行服務(wù)器器級管理操作作的用戶權(quán)限限的集合。192、SQLServer的數(shù)據(jù)庫庫用戶數(shù)據(jù)庫的用戶戶賬號用戶賬號要在在特定的數(shù)據(jù)據(jù)庫內(nèi)創(chuàng)建,,并關(guān)聯(lián)一個個登錄賬號((當(dāng)一個數(shù)據(jù)據(jù)庫的用戶創(chuàng)創(chuàng)建時,必須須關(guān)聯(lián)一個登登錄賬號)。。每個登錄賬號號在一個數(shù)據(jù)據(jù)庫中只能有有一個用戶賬賬號,但每個個登錄賬號可可以在不同的的數(shù)據(jù)庫中各各有一個用戶戶賬號。注意:登錄賬號具有有對某個數(shù)據(jù)據(jù)庫的訪問權(quán)權(quán)限,并不表表示該登錄賬賬號對該數(shù)據(jù)據(jù)庫具有存取取的權(quán)限。20查看數(shù)據(jù)庫的的用戶賬號利用存儲過程程EXECsp_helpuser創(chuàng)建數(shù)據(jù)庫的的用戶賬號使用存儲過程程sp_adduser'登錄賬號號','用用戶賬號','所屬的的數(shù)據(jù)庫角色色'設(shè)置數(shù)據(jù)庫用用戶賬號的權(quán)權(quán)限對數(shù)據(jù)庫對象象的操作,具具體含義如下下SELECT:對表或者者視圖進(jìn)行查查詢。INSERT:在表或者者視圖中插入入記錄。UPDATE:對表或者者視圖中的數(shù)數(shù)據(jù)進(jìn)行修改改。DELETE:刪除表或或者視圖中的的數(shù)據(jù)。EXEC:執(zhí)執(zhí)行存儲過程程。DRI:可對對表的外鍵加加以限制,以以完成表的參參照完整性。。3、存取控制制SQLServer對對權(quán)限的管理理包含如下三三個內(nèi)容:(1)授予權(quán)權(quán)限:允許用用戶或角色具具有某種操作作權(quán)。(2)收回權(quán)權(quán)限:刪除以以前在當(dāng)前數(shù)數(shù)據(jù)庫內(nèi)的用用戶上授予或或拒絕的權(quán)限限。(3)拒絕權(quán)權(quán)限:拒絕給給當(dāng)前數(shù)據(jù)庫庫內(nèi)的安全帳帳戶授予權(quán)限限并防止安全全帳戶通過其其組或角色色成員繼承權(quán)權(quán)限。在SQLServer2012中中,權(quán)限分為為對象權(quán)限、、語句權(quán)限和和隱含權(quán)限三三種。(1)對象權(quán)權(quán)限對象權(quán)限是指指用戶對數(shù)據(jù)據(jù)庫中的表、、視圖等對象象的操作權(quán),,相當(dāng)于數(shù)據(jù)據(jù)操作語言的的語句權(quán)限。。表、視圖的的權(quán)限包括SELECT、INSERT、DELETE、、UPDATE。列的權(quán)權(quán)限包括SELECT和和UPDATE。存儲過過程的權(quán)限包包括EXECUTE。①授權(quán)語句::GRANT對對象權(quán)限限名[,…]ON{表名|視圖名名|存儲儲過程名}TO{數(shù)據(jù)庫用用戶名|用用戶角色名名}[,…][WITHGRANTOPTION]例如GRANTSELECT,INSERTONCustomerTOuser1WITHGRANTOPTION.該語句把對Customer表的查查詢權(quán)和插入入權(quán)授予給用用戶user1,user1同時獲獲得將這些權(quán)權(quán)限轉(zhuǎn)授給別別的用戶的權(quán)權(quán)限。②收回權(quán)限語語句:REVOKE對象權(quán)權(quán)限名[,……]ON{表名名|視圖圖名|存存儲過程名}FROM{數(shù)數(shù)據(jù)庫用戶名名|用戶角色色名}[,……][RESTRICT|CASCADE]例如REVOKEINSERTONStudentFROMuser1CASCADE該語句表示從從用戶user1處收回回對Student表的的插入權(quán),若若user1已把獲得的的對Student表的的插入權(quán)轉(zhuǎn)授授給其他用戶戶,則連鎖收收回。③拒絕權(quán)限語語句:DENY對對象權(quán)限名名[,…]ON{表名|視視圖名|存儲過程程名}TO{數(shù)數(shù)據(jù)庫用戶名名|用戶角色色名}[,……]例如DENYUPDATEONCustomerTOuser1該語句表示拒拒絕用戶user1對Customer表進(jìn)行行修改(2)語句權(quán)權(quán)限語句權(quán)限是指指創(chuàng)建數(shù)據(jù)庫庫或數(shù)據(jù)庫中中的項目的權(quán)權(quán)限,相當(dāng)于于數(shù)據(jù)定義語語言的語句權(quán)權(quán)限。語句權(quán)限包括括CREATEDATABASE、CREATETABLE、CREATEVIEW、CREATEDEFAULT、CREATERULE、CREATEFUNCTION、CREATEPROCEDURE、BACKUPDATABASE、BACKUPLOG。。①授予權(quán)限語語句:GRANT語語句權(quán)限限名[,…]TO{數(shù)據(jù)庫庫用戶名|用用戶角色名}[,…]【例6-1】授予用戶戶user1創(chuàng)建數(shù)據(jù)庫庫表的權(quán)限GRANTCREATETABLETOuser1②收回權(quán)限語語句:REVOKE語句權(quán)權(quán)限名[,……]FROM{數(shù)據(jù)庫用戶戶名|用戶角角色名}[,,…]【例6-2】收回用戶戶user1創(chuàng)建數(shù)據(jù)庫庫表的權(quán)限REVOKECREATETABLEFROMuser1③拒絕權(quán)限語語句:DENY語語句權(quán)限名名[,…]TO{數(shù)據(jù)庫用用戶名|用戶戶角色名}[,…]【例6-3】拒絕用戶戶user1創(chuàng)建視圖的的權(quán)限D(zhuǎn)ENYCREATEVIEWTOuser1(3)隱含權(quán)權(quán)限隱含權(quán)限是指指由SQLServer預(yù)定義的的服務(wù)器角色色、數(shù)據(jù)庫角角色、數(shù)據(jù)庫庫擁有者和數(shù)數(shù)據(jù)庫對象擁擁有者所具有有的權(quán)限。隱隱含權(quán)限是由由系統(tǒng)預(yù)先定定義好的,相相當(dāng)于內(nèi)置權(quán)權(quán)限,不需要要再明確地授授予這些權(quán)限限。例如,數(shù)數(shù)據(jù)庫擁有者者自動地?fù)碛杏袑?shù)據(jù)庫進(jìn)進(jìn)行一切操作作的權(quán)限。4、視圖通過定義不同同的視圖及有有選擇地授予予視圖上的權(quán)權(quán)限,可以將將用戶、組或或角色限制在在不同的數(shù)據(jù)據(jù)子集內(nèi)?!纠?-4】用戶user1只能能檢索Customer表中性別為為女的客戶信信息,可以先先建立視圖CS_Customer,再給user1授予予對CS_Customer的查詢詢權(quán)。CREATEVIEWCS_CustomerASSELECT*FROMCustomerWHEREcsex='女女';GRANTSELECTONCS_CustomerTOuser1;5、數(shù)據(jù)加密密MicrosoftSQLServer的的加密機制可可以對SQLSercer中存儲儲的登錄和應(yīng)應(yīng)用程序角色色密碼、作為為網(wǎng)絡(luò)數(shù)據(jù)包包而在客戶端端和服務(wù)器端端之間發(fā)送的的數(shù)據(jù)、存儲儲過程定義、、函數(shù)定義、、視圖定義、、觸發(fā)器定義義、默認(rèn)值定定義、規(guī)則定定義等數(shù)據(jù)庫庫對象進(jìn)行加加密。6.審計MicrosoftSQLServer2012提提供審計功能能,用以跟蹤蹤和記錄每個個SQLServer實例上已發(fā)發(fā)生的活動((如成功和失失敗的記錄))。SQLServer2012還還提供管理審審計記錄的接接口,即SQL事件探查查器。316.2數(shù)數(shù)據(jù)庫完整性性控制6.2.1數(shù)數(shù)據(jù)庫完完整性的概述述數(shù)據(jù)庫的完整整性是指數(shù)據(jù)據(jù)庫中數(shù)據(jù)的的正確性、有有效性和相容容性,其主要要目的是防止止錯誤的數(shù)據(jù)據(jù)進(jìn)入數(shù)據(jù)庫庫造成無效操操作。正確性是指數(shù)數(shù)據(jù)的合法性性,例如數(shù)值值型數(shù)據(jù)只能能含有數(shù)字而而不能含有字字母。有效性性是指數(shù)據(jù)是是否屬于所定定義域的有效效范圍。相容容性是指表示示同一事實的的兩個數(shù)據(jù)應(yīng)應(yīng)當(dāng)一致,不不一致即是不不相容。數(shù)據(jù)庫管理理系統(tǒng)的完完整性控制制機制應(yīng)具具有三個方方面的功能能,來防止止合法用戶戶在使用數(shù)數(shù)據(jù)庫時,,向數(shù)據(jù)庫庫注入不合合法或不合合語義的數(shù)數(shù)據(jù):(1)定義義功能,提提供定義完完整性約束束條件的機機制。(2)驗證證功能,檢檢查用戶發(fā)發(fā)出的操作作請求是否否違背了完完整性約束束條件。(3)處理理功能,如如果發(fā)現(xiàn)用用戶的操作作請求使數(shù)數(shù)據(jù)違背了了完整性約約束條件,,則采取一一定的動作作來保證數(shù)數(shù)據(jù)的完整整性。336.2.2完整整性約束條條件的分類類從約束條件件使用的對對象分值的約束和和結(jié)構(gòu)的約約束值的約束即即主要是對對數(shù)據(jù)類型型、數(shù)據(jù)格格式、取值值范圍和空空值等進(jìn)行行規(guī)定。(1)對數(shù)數(shù)據(jù)類型的的約束,包包括數(shù)據(jù)的的類型、長長度、單位位和精度等等。(2)對數(shù)數(shù)據(jù)格式的的約束。(3)對取取值范圍的的約束。(4)對空空值的約束束。結(jié)構(gòu)的約束束即對數(shù)據(jù)據(jù)之間聯(lián)系系的約束。。(1)函數(shù)數(shù)依賴約束束。(2)實體體完整性約約束。(3)參照照完整性約約束。(4)統(tǒng)計計約束。34從約束對象象的狀態(tài)分分靜態(tài)約束和和動態(tài)約束束靜態(tài)約束靜態(tài)約束是是指數(shù)據(jù)庫庫每一確定定狀態(tài)時的的數(shù)據(jù)對象象所應(yīng)滿足足的約束條條件,它是是反映數(shù)據(jù)據(jù)庫狀態(tài)合合理性的約約束,是最最重要的一一類完整性性約束。上上面介紹的的值的約束束和結(jié)構(gòu)的的約束均屬屬于靜態(tài)約約束。動態(tài)約束動態(tài)約束是是指數(shù)據(jù)庫庫從一個正正確狀態(tài)向向另一個正正確狀態(tài)的的轉(zhuǎn)化過程程中新、舊舊值之間所所應(yīng)滿足的的約束條件件,反映數(shù)數(shù)據(jù)庫狀態(tài)態(tài)變遷的約約束。例如,更新新職工表時時,工資、、工齡這些些屬性值一一般只會增增加,不會會減少。6.2.3SQLServer2012的數(shù)數(shù)據(jù)庫完整整性策略366.3事事務(wù)和并并發(fā)控制數(shù)據(jù)庫系統(tǒng)統(tǒng)是面向多多用戶的。。當(dāng)多個用用戶同時訪訪問數(shù)據(jù)庫庫時如何保保證數(shù)據(jù)的的一致性和和有效性??事務(wù)控制制和并發(fā)處處理為多用用戶同時訪訪問數(shù)據(jù)庫庫問題的解解決提供了了一種有效效的途徑。。事務(wù)是數(shù)據(jù)據(jù)庫并發(fā)控控制技術(shù)涉涉及的基本本概念,是是并發(fā)控制制的基本單單位。37事務(wù)(Transaction)是指指作為單個個邏輯工作作單元執(zhí)行行的一系列列數(shù)據(jù)庫操操作。一個事務(wù)可可以是一組組SQL語語句、一條條SQL語語句或整個個程序,一一個應(yīng)用程程序可以包包括多個事事務(wù)。一個事務(wù)內(nèi)內(nèi)的所有語語句被作為為整體執(zhí)行行,要么全全部執(zhí)行,,要么全部部不執(zhí)行。。6.3.1事務(wù)務(wù)的概念和和特點38事務(wù)的特征征原子性(Atomicity)事務(wù)是數(shù)據(jù)據(jù)庫操作的的邏輯工作作單位。就就操作而言言,事務(wù)中中的操作是是一個整體體,不能再再被分割,,要么全部部成功執(zhí)行行,要么全全部不成功功執(zhí)行。一致性(Consistency)事務(wù)一致性性是指事務(wù)務(wù)執(zhí)行前后后都能夠保保持?jǐn)?shù)據(jù)庫庫狀態(tài)的一一致性,即即事務(wù)的執(zhí)執(zhí)行結(jié)果是是將數(shù)據(jù)庫庫從一個一一致性狀態(tài)態(tài)變到另一一個一致性性狀態(tài)。隔離性(Isolation)隔離性是指指多個事務(wù)務(wù)在執(zhí)行時時不互相干干擾。事務(wù)務(wù)具有隔離離性意味著著一個事務(wù)務(wù)的內(nèi)部操操作即其使使用的數(shù)據(jù)據(jù)庫對其他他事務(wù)是不不透明的,,其他事務(wù)務(wù)不會干擾擾這些操作作和數(shù)據(jù)。。持久性(Durability)指事務(wù)一旦旦提交,則則其對數(shù)據(jù)據(jù)庫中數(shù)據(jù)據(jù)的改變就就應(yīng)該是永永久的,即即使是出現(xiàn)現(xiàn)系統(tǒng)故障障等問題,,DBMS也應(yīng)該能能恢復(fù)。為了充分利利用數(shù)據(jù)庫庫資源,很很多時候數(shù)數(shù)據(jù)庫用戶戶都是對數(shù)數(shù)據(jù)庫系統(tǒng)統(tǒng)并行存取取數(shù)據(jù),因因此會發(fā)生生多個用戶戶并發(fā)存取取同一數(shù)據(jù)據(jù)塊的情況況。若對并并發(fā)操作不不加控制可可能會產(chǎn)生生不正確的的數(shù)據(jù),破破壞數(shù)據(jù)的的完整性。。并發(fā)控制制就是解決決這類問題題,以保持持?jǐn)?shù)據(jù)庫中中數(shù)據(jù)的一一致性,即即在任何一一個時刻數(shù)數(shù)據(jù)庫都將將以相同的的形式給用用戶提供數(shù)數(shù)據(jù)。6.3.2并發(fā)控制制概述40【例6-5】并發(fā)發(fā)火車訂票票操作。以以下為火車車訂票系統(tǒng)統(tǒng)中的一個個活動序列列:①甲售票票點(甲事事務(wù))讀出出某車次的的火車票余余額A,設(shè)設(shè)A=25;②乙售票票點(乙事事務(wù))讀出出同一車次次的火車票票余額A,,也為25③甲售票票點賣出一一張火車票票,修改余余額A←A-1,所所以A為24,把A寫回數(shù)據(jù)據(jù)庫;④乙售票票點也賣出出一張火車車票,修改改余額A←←A-1,,所以A為24,把把A寫回數(shù)數(shù)據(jù)庫。結(jié)果明明賣賣出兩張火火車票,數(shù)數(shù)據(jù)庫中火火車票余額額卻只減少1,是是因為乙事事務(wù)的修改改覆蓋了甲甲事務(wù)的修修改,而這這種情況就是甲甲乙兩個事事務(wù)并發(fā)操操作而引起起的數(shù)據(jù)不不一致性。。41表6-2丟丟失修修改42數(shù)據(jù)庫的并并發(fā)操作導(dǎo)導(dǎo)致的數(shù)據(jù)據(jù)庫不一致致性主要有有以下三種種:丟失更新((LostUpdate))當(dāng)兩個事務(wù)務(wù)T1和T2讀入同同一數(shù)據(jù),,并發(fā)執(zhí)行行修改操作作時,T2把T1或或T1把T2的修改改結(jié)果覆蓋蓋掉,造成成了數(shù)據(jù)的的丟失更新新問題,導(dǎo)導(dǎo)致數(shù)據(jù)的的不一致。。污讀(DirtyRead)事務(wù)T1更更新了數(shù)據(jù)據(jù)R,事務(wù)T2讀取了更更新后的數(shù)數(shù)據(jù)R,事務(wù)T1由于某種種原因被撤撤銷,修改改無效,數(shù)數(shù)據(jù)R恢復(fù)原值。。事務(wù)T2得到的數(shù)數(shù)據(jù)與數(shù)據(jù)據(jù)庫的內(nèi)容容不一致,,這種情況況稱為“污讀”。不可重讀((UnrepeatableRead)事務(wù)T1讀讀取了數(shù)據(jù)據(jù)R,事務(wù)T2讀取并更更新了數(shù)據(jù)據(jù)R,當(dāng)事務(wù)T1再讀取取數(shù)據(jù)R以進(jìn)行核對對時,得到到的兩次讀讀取值不一一致,這種種情況稱為為“不可重讀”。43表6-3不不可重復(fù)復(fù)讀表6-4讀讀“臟””數(shù)據(jù)456.3.3封鎖鎖和封鎖協(xié)協(xié)議并發(fā)控制的的主要技術(shù)術(shù)包括封鎖鎖(Locking)、時間間戳(Timestamp)和樂觀控控制法。商商用的DBMS一般般都采用封封鎖方法。。封鎖類型((LockType)鎖就是事務(wù)務(wù)T在對某某個數(shù)據(jù)對對象(例如如表、記錄錄等)操作作之前,先先向系統(tǒng)發(fā)發(fā)出請求,,對其進(jìn)行行加鎖,以以保證數(shù)據(jù)據(jù)操作的正正確性和一一致性。46基本的封鎖鎖類型有兩兩種排它鎖(ExclusiveLock)排它鎖又稱稱為寫鎖。。若事務(wù)T對數(shù)據(jù)對對象A加上上X鎖,則則只允許T讀取和修修改A,其其他任何事事務(wù)都不能能再對A加加任何類型型的鎖,直直到T釋放放A上的鎖鎖。共享鎖(ShareLock)共享封鎖又又稱讀封鎖鎖,簡稱為為S鎖,若若事務(wù)T對對數(shù)據(jù)對象象A加上S鎖,則事事務(wù)T可以以讀A但不不能修改A,其他事事務(wù)只能再再對A加S鎖,而不不能加X鎖鎖,直到T釋放A上上的S鎖。。封鎖協(xié)議((LockProtocol)封鎖可以保保證合理地地進(jìn)行并發(fā)發(fā)控制,保保證數(shù)據(jù)的的一致性。。在封鎖時,,要考慮一一定的封鎖鎖規(guī)則,例例如,何時時開始封鎖鎖、封鎖多多長時間、、何時釋放放等,這些些封鎖規(guī)則則稱為封鎖鎖協(xié)議。47上面講述過過的并發(fā)操操作所帶來來的丟失更更新、污讀讀和不可重重讀等數(shù)據(jù)據(jù)不一致性性問題,可可以通過三三級封鎖協(xié)協(xié)議在不同同程度上給給予解決::一級封鎖協(xié)協(xié)議事務(wù)T在修修改數(shù)據(jù)R之前必須須先對其加加X鎖,直直到事務(wù)結(jié)結(jié)束才釋放放。二級封鎖協(xié)協(xié)議一級封鎖協(xié)協(xié)議加上事事務(wù)T在讀讀取數(shù)據(jù)R之前必須須先對其加加S鎖,讀讀完后即可釋釋放S鎖。。三級封鎖協(xié)協(xié)議一級封鎖協(xié)協(xié)議加上事事務(wù)T在讀讀取數(shù)據(jù)R之前必須須先對其加加S鎖,直直到事務(wù)結(jié)束束才釋放。。48表6-5解解決丟失失修改問題題49表6-6解解決讀““臟”數(shù)據(jù)據(jù)問題50表6-7解解決不可可重復(fù)讀問問題51封鎖粒度((LockGranularity)并發(fā)控制程程序選擇的的作為保護(hù)護(hù)單位的數(shù)數(shù)據(jù)項的大大小被稱為為封鎖粒度度。根據(jù)對數(shù)據(jù)據(jù)的不同處處理,封鎖鎖的對象可可以是這樣樣一些邏輯輯單元:字字段、記錄錄、表、數(shù)數(shù)據(jù)庫等。。封鎖粒度越越小,系統(tǒng)統(tǒng)中被封鎖鎖的對象就就越多,并并發(fā)性就越越高,但封封鎖機構(gòu)越越復(fù)雜,系系統(tǒng)開銷就就越大;封鎖粒度越越大,系統(tǒng)統(tǒng)中被封鎖鎖的對象就就越少,并并發(fā)性就越越低,但封封鎖機構(gòu)越越簡單,系系統(tǒng)開銷就就越小。52活鎖和死鎖鎖活鎖(Livelock)若事務(wù)T1對數(shù)據(jù)A進(jìn)行X排排他封鎖,,由于其他他事務(wù)對該該數(shù)據(jù)的操操作而使事事務(wù)T1一一直處于等等待狀態(tài),,這種狀態(tài)態(tài)成為活鎖鎖。死鎖(Deadlock)在同時處于于等待狀態(tài)態(tài)的兩個或或多個事務(wù)務(wù)中,其中中的每一個個在它能夠夠進(jìn)行之前前,都等待待著某個數(shù)數(shù)據(jù),而這這個數(shù)據(jù)已已被它們中中的某個事事務(wù)所封鎖鎖,這種狀狀態(tài)稱為死死鎖。53表6-8活活鎖54表6-9死死鎖55目前,在數(shù)數(shù)據(jù)庫中解解決死鎖問問題主要包包括兩種方方法:(1)死鎖鎖的預(yù)防一次加鎖法法:一次封鎖法法要求是每每個事務(wù)一一次將所有有要使用的的數(shù)據(jù)項全全部加鎖,,否則就不不能繼續(xù)執(zhí)執(zhí)行。順序加鎖法法:順序封鎖法法是預(yù)先對對數(shù)據(jù)對象象規(guī)定一個個封鎖順序序,所有事事務(wù)都按照照這個順序序進(jìn)行封鎖鎖。(2)死鎖鎖的診斷與與解除數(shù)據(jù)庫系統(tǒng)統(tǒng)中診斷死死鎖的方法法與操作系系統(tǒng)類似,,一般使用用超時法或或事務(wù)等待待圖法。設(shè)法解除死死鎖,通常常采用的方方法是選擇擇一個處理理死鎖代價價最小的事事務(wù),將其其撤消,釋釋放此事務(wù)務(wù)所持有的的全部鎖,,使其他事事務(wù)得以繼繼續(xù)運行下下去。6.3.5SQLServer2012的的并發(fā)控制制根據(jù)事務(wù)的的設(shè)置、用用途的不同同,SQLServer2012將事務(wù)分分為多種類類型。(1)根據(jù)據(jù)系統(tǒng)的設(shè)設(shè)置分類根據(jù)系統(tǒng)的的設(shè)置,SQLServer2012將事事務(wù)分為兩兩種類型::系統(tǒng)提供供的事務(wù)和和用戶定義義的事務(wù)(2)根據(jù)據(jù)運行模式式分類根據(jù)運行模模式,SQLServer2012將事務(wù)務(wù)分為四種種類型:自自動提交事事務(wù)、顯示示事務(wù)、隱隱式事務(wù)和和批處理級級事務(wù)。(3)事務(wù)務(wù)處理語句句BEGINTRANSACTION語句,事事務(wù)開始。。COMMITTRANSACTION語句,,成功提交交事務(wù)。ROLLBACKTRANSACTION語語句,事務(wù)務(wù)回滾。SAVETRANSACTION語語句,事務(wù)務(wù)內(nèi)設(shè)置保保存點。(4)事務(wù)務(wù)的啟動在SQLServer中,,啟動事務(wù)務(wù)的方式有有三種:顯顯示啟動、、自動提交交和隱式啟啟動。(5)終止止事務(wù)終止方法有有兩種,一一種是使用用COMMIT命令令(提交命命令),另另一種是使使用ROLLBACK命令((回滾命令令)。但這這倆種方法法有本質(zhì)上上的區(qū)別;;當(dāng)執(zhí)行COMMIT命令是是,會將語語句執(zhí)行結(jié)結(jié)果保存到到數(shù)據(jù)庫中中,并終止止事務(wù);當(dāng)當(dāng)執(zhí)行ROLLBACK命令令時,數(shù)據(jù)據(jù)庫將返回回到事務(wù)開開始時的初初始狀態(tài),,并終止事事務(wù)。2、鎖SQLServer數(shù)據(jù)據(jù)庫引擎使使用不同的的鎖模式鎖鎖定資源,,這些鎖模模式確定了了并發(fā)事務(wù)務(wù)訪問資源源的方式。。SQRSERVER2012提提供了以以下鎖模式式,如表6-10所所示。表6-10鎖模式式616.4數(shù)數(shù)據(jù)庫的恢恢復(fù)數(shù)據(jù)庫恢復(fù)復(fù)是指當(dāng)數(shù)數(shù)據(jù)庫發(fā)生生故障時,,將數(shù)據(jù)庫庫從錯誤狀狀態(tài)恢復(fù)到到某一已知知的正確狀狀態(tài)(亦稱稱為一致狀狀態(tài)或完整整狀態(tài))的的過程。數(shù)據(jù)庫恢復(fù)復(fù)的基本原原理就是利利用數(shù)據(jù)的的冗余。而而數(shù)據(jù)庫恢恢復(fù)機制涉涉及的兩個個關(guān)鍵問題題就是如何何生成冗余余數(shù)據(jù)以及及如何利用用這些冗余余數(shù)據(jù)恢復(fù)復(fù)數(shù)據(jù)庫。。生成冗余數(shù)數(shù)據(jù)對可能發(fā)生生的故障作作某些準(zhǔn)備備冗余重建利用這些冗冗余數(shù)據(jù)恢恢復(fù)數(shù)據(jù)庫庫登記日志文文件數(shù)據(jù)轉(zhuǎn)儲62數(shù)據(jù)轉(zhuǎn)儲((DataDump)數(shù)據(jù)轉(zhuǎn)儲((也成為數(shù)數(shù)據(jù)庫備份份)是數(shù)據(jù)據(jù)庫管理員員定期地將將整個數(shù)據(jù)據(jù)庫復(fù)制到到輔助存儲儲設(shè)備上,,比如磁帶帶、磁盤等等。當(dāng)數(shù)據(jù)據(jù)庫遭到破破壞后可以以利用轉(zhuǎn)儲儲的數(shù)據(jù)庫庫進(jìn)行恢復(fù)復(fù),但這種種方式只能能將數(shù)據(jù)庫庫恢復(fù)到轉(zhuǎn)轉(zhuǎn)儲時的狀狀態(tài),若想想恢復(fù)到故故障發(fā)生時時的狀態(tài),,則必須利利用轉(zhuǎn)儲后后的事務(wù)日日志,重新新執(zhí)行日志志中的事務(wù)務(wù)。按照照轉(zhuǎn)轉(zhuǎn)儲儲狀狀態(tài)態(tài),,數(shù)數(shù)據(jù)據(jù)轉(zhuǎn)轉(zhuǎn)儲儲可可以以分分為為靜靜態(tài)態(tài)轉(zhuǎn)轉(zhuǎn)儲儲和和動動態(tài)態(tài)轉(zhuǎn)轉(zhuǎn)儲儲。。按照照轉(zhuǎn)轉(zhuǎn)儲儲方方式式,,數(shù)數(shù)據(jù)據(jù)轉(zhuǎn)轉(zhuǎn)儲儲還還可可以以分分為為海海量量轉(zhuǎn)轉(zhuǎn)儲儲和和增增量量轉(zhuǎn)轉(zhuǎn)儲儲兩兩種種方方式式。。63登記記日日志志文文件件日志志文文件件是是用用來來記記錄錄事事務(wù)務(wù)對對數(shù)數(shù)據(jù)據(jù)庫庫的的更更新新操操作作的的文文件件。。典型型的的日日志志文文件件主主要要包包含含以以下下內(nèi)內(nèi)容容::(1))操操作作的的事事務(wù)務(wù)標(biāo)標(biāo)識識((標(biāo)標(biāo)明明是是哪哪個個事事務(wù)務(wù)));;(2))操操作作類類型型((插插入入、、刪刪除除或或修修改改));;(3))操操作作對對象象((記記錄錄內(nèi)內(nèi)部部標(biāo)標(biāo)識識));;(4))更更新新前前數(shù)數(shù)據(jù)據(jù)的的舊舊值值((對對插插入入操操作作,,此此項項為為空空值值));;(5))更更新新后后數(shù)數(shù)據(jù)據(jù)的的新新值值((對對刪刪除除操操作作,此此項項為為空空值值));;(6))事事務(wù)務(wù)開開始始、、結(jié)結(jié)束束及及回回寫寫時時間間。。登記記日日志志文文件件時時必必須須遵遵循循以以下下兩兩條條原原則則::(1))登登記記的的次次序序嚴(yán)嚴(yán)格格按按照照并并發(fā)發(fā)事事務(wù)務(wù)執(zhí)執(zhí)行行的的時時間間次次序序。。(2))必必須須先先寫寫日日志志文文件件,,后后寫寫數(shù)數(shù)據(jù)據(jù)庫庫。。646.4.4數(shù)據(jù)據(jù)庫庫故故障障和和恢恢復(fù)復(fù)的的策策略略故障障可可分分為為::事事務(wù)務(wù)故故障障、、系系統(tǒng)統(tǒng)故故障障、介質(zhì)質(zhì)故故障障和計計算算機機病病毒毒引引起起的的故故障障。1、、事務(wù)務(wù)故故障障及及其其恢恢復(fù)復(fù)事務(wù)務(wù)故故障障意意味味著著事事務(wù)務(wù)沒沒有有達(dá)達(dá)到到預(yù)預(yù)期期的的終終點點((COMMIT或或ROLLBACK))。。在此此討論論的的事事務(wù)務(wù)故故障障均均指指非非預(yù)預(yù)期期的的故故障障。。這類類恢恢復(fù)復(fù)操操作作稱稱為為事事務(wù)務(wù)撤撤銷銷((UNDO)),,具具體體做做法法如如下下::(1))反反向向掃掃描描日日志志文文件件,,即即從從最最后后向向前前掃掃描描日日志志文文件件,,查查找找該該事事務(wù)務(wù)的的更更新新操操作作。。(2))對對該該事事務(wù)務(wù)的的更更新新操操作作執(zhí)執(zhí)行行逆逆操操作作。。(3))繼繼續(xù)續(xù)反反向向掃掃描描日日志志文文件件,,查查找找該該事事務(wù)務(wù)的的其其他他更更新新操操作作,,并并做做同同樣樣處處理理,,直直到到讀讀到到此事事務(wù)務(wù)的的開開始始標(biāo)標(biāo)記記。。652、、系統(tǒng)統(tǒng)故故障障及及其其恢恢復(fù)復(fù)系統(tǒng)統(tǒng)故故障障是是指指造造成成系系統(tǒng)統(tǒng)停停止止運運轉(zhuǎn)轉(zhuǎn)、、系系統(tǒng)統(tǒng)要要重重新新啟啟動動的的故故障障。?;謴?fù)復(fù)的的具具體體做做法法如如下下::(1))正正向向掃掃描描日日志志文文件件,,即即從從頭頭開開始始掃掃描描日日志志文文件件。。(2))對對撤撤消消隊隊列列中中的的各各個個事事務(wù)務(wù)進(jìn)進(jìn)行行撤撤消消處處理理。。(3))對對重重做做隊隊列列中中的的各各個個事事務(wù)務(wù)進(jìn)進(jìn)行行重重做做處處理理。。66介質(zhì)質(zhì)故故障障和計計算算機機病病毒毒引引起起的的故故障障及其恢復(fù)介質(zhì)故障指外外存故障,如如磁盤損壞等等,磁盤上的的物理數(shù)據(jù)和和日志文件可可能會被破壞壞。計算病毒是可可以自我復(fù)制制且具有破壞壞性的計算機機程序,極易易傳播,且也也可以對數(shù)據(jù)據(jù)庫造成毀滅滅性的破壞。?;謴?fù)的具體做做法如下:(1)加載最最新的數(shù)據(jù)庫庫副本(離故故障發(fā)生時刻刻最近的轉(zhuǎn)儲儲副本),使使數(shù)據(jù)庫恢復(fù)復(fù)到最近一次次轉(zhuǎn)儲時的一一致性狀態(tài)。。(2)裝入最最新的日志文文件副本,重重做已完成的的事務(wù)。首先先掃描日志文文件,找出故故障發(fā)生時已已提交的事務(wù)務(wù)的標(biāo)識,將將其記入重做做隊列。然后后正向掃描日日志文件,對對重做隊列中中的所有事務(wù)務(wù)進(jìn)行重做處處理。即將日日志記錄中““更新后的值值”寫入數(shù)據(jù)據(jù)庫。6.4.5SQLServer2012恢恢復(fù)策略備份是對SQLServer數(shù)據(jù)據(jù)庫或事務(wù)日日志進(jìn)行復(fù)制制,數(shù)據(jù)庫備備份記錄了在在進(jìn)行備份這這一操作時數(shù)數(shù)據(jù)庫中所有有數(shù)據(jù)的狀態(tài)態(tài),如果數(shù)據(jù)據(jù)庫因意外而而損壞,這些些備份文件將將在數(shù)據(jù)庫還還原時用來還還原數(shù)據(jù)庫。。還原就是把遭遭受破壞、丟丟失的數(shù)據(jù)或或出現(xiàn)錯誤的的數(shù)據(jù)庫還原原到原來的正正常狀態(tài)。1、SQLServer常用備份類型(1)完整備備份。(2)差異備備份。(3)事務(wù)日日志備份。(4)文件或或文件組備份份。2、恢復(fù)模式式SQLServer2012具有有三種數(shù)據(jù)庫庫恢復(fù)模式::(1)簡單恢恢復(fù)模式(2)完整恢恢復(fù)模式(3)大容量量日志恢復(fù)模模式9、靜夜夜四無無鄰,,荒居居舊業(yè)業(yè)貧。。。12月月-2212月月-22Wednesday,December28,202210、雨雨中中黃黃葉葉樹樹,,燈燈下下白白頭頭人人。。。。21:14:1121:14:1121:1412/28/20229:14:11PM11、以我獨沈沈久,愧君君相見頻。。。12月-2221:14:1121:14Dec-2228-Dec-2212、故故人人江江海海別別,,幾幾度度隔隔山山川川。。。。21:14:1121:14:1121:14Wednesday,December28,202213、乍見見翻疑疑夢,,相悲悲各問問年。。。12月月-2212月月-2221:14:1121:14:11December28,202214、他鄉(xiāng)生生白發(fā),,舊國見見青山。。。28十十二月20229:14:11下午午21:14:1112月-2215、比比不不了了得得就就不不比比,,得得不不到到的的就就不不要要。。。。。十二二月月229:14下下午午12月月-2221:14December28,202216、行動出成果果,工作出財財富。。2022/12/2821:14:1121:14:1128December202217、做前前,能能夠環(huán)環(huán)視四四
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年醫(yī)院古醫(yī)療雜志模型館共建合同
- 2025年數(shù)字營銷服務(wù)平臺開發(fā)項目可行性研究報告
- 2025年都市休閑農(nóng)業(yè)發(fā)展項目可行性研究報告
- 2025年人工智能在金融機構(gòu)中的應(yīng)用可行性研究報告
- 紋身培訓(xùn)協(xié)議合同
- 生豬運輸合同范本
- 主人保姆協(xié)議書
- 光伏補貼協(xié)議書
- 2025年共享電單車運營平臺可行性研究報告
- 國家事業(yè)單位招聘2024中國科學(xué)院植物研究所特別研究助理(博士后)招聘筆試歷年參考題庫典型考點附帶答案詳解(3卷合一)
- 【年產(chǎn)5000噸氯化苯的工藝設(shè)計11000字(論文)】
- 光伏電站巡檢與維護(hù)
- 小學(xué)校本課程-1藍(lán)色國土教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 廣州市荔灣區(qū)事業(yè)單位招聘事業(yè)編制人員考試真題2022
- GB/T 19867.4-2008激光焊接工藝規(guī)程
- 上下班交通安全知識考試試卷
- 食堂消毒表格
- 模具定期保養(yǎng)點檢表
- 電工基礎(chǔ)(第六版)課后習(xí)題答案
- 快消品年度工作計劃
- 醫(yī)院后勤設(shè)備安全運維管理
評論
0/150
提交評論