數(shù)據(jù)庫(kù)原理與技術(shù)(金倉(cāng)KingbaseES版)-課件 第6章數(shù)據(jù)庫(kù)安全保護(hù)_第1頁(yè)
數(shù)據(jù)庫(kù)原理與技術(shù)(金倉(cāng)KingbaseES版)-課件 第6章數(shù)據(jù)庫(kù)安全保護(hù)_第2頁(yè)
數(shù)據(jù)庫(kù)原理與技術(shù)(金倉(cāng)KingbaseES版)-課件 第6章數(shù)據(jù)庫(kù)安全保護(hù)_第3頁(yè)
數(shù)據(jù)庫(kù)原理與技術(shù)(金倉(cāng)KingbaseES版)-課件 第6章數(shù)據(jù)庫(kù)安全保護(hù)_第4頁(yè)
數(shù)據(jù)庫(kù)原理與技術(shù)(金倉(cāng)KingbaseES版)-課件 第6章數(shù)據(jù)庫(kù)安全保護(hù)_第5頁(yè)
已閱讀5頁(yè),還剩140頁(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)介

第6章

數(shù)據(jù)庫(kù)安全保護(hù)6.1數(shù)據(jù)庫(kù)的安全性6.2完整性控制6.3事務(wù)的并發(fā)控制和封鎖6.4數(shù)據(jù)庫(kù)的備份和還原本章引言新疆大學(xué)軟件學(xué)院隨著社會(huì)信息化的不斷深化,各種數(shù)據(jù)庫(kù)的使用也越來(lái)越廣泛。例如,一個(gè)企業(yè)管理信息系統(tǒng)的全部數(shù)據(jù)、國(guó)家機(jī)構(gòu)的事務(wù)管理信息、國(guó)防情報(bào)機(jī)密信息、基于Web動(dòng)態(tài)發(fā)布的網(wǎng)上購(gòu)物信息等等,它們都集中或分布地存放在大大小小的數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)是由DBMS統(tǒng)一進(jìn)行管理和控制的。為了適應(yīng)和滿足數(shù)據(jù)共享的環(huán)境和要求,DBMS要保證整個(gè)系統(tǒng)的正常運(yùn)轉(zhuǎn),防止數(shù)據(jù)意外丟失和不一致數(shù)據(jù)的產(chǎn)生,以及當(dāng)數(shù)據(jù)庫(kù)遭受破壞后能迅速地恢復(fù)正常,這就是數(shù)據(jù)庫(kù)的安全保護(hù)。DBMS對(duì)數(shù)據(jù)安全的保護(hù)功能安全性控制完整性控制并發(fā)性控制數(shù)據(jù)庫(kù)恢復(fù)第6章6.1數(shù)據(jù)庫(kù)的安全性安全性問(wèn)題新疆大學(xué)軟件學(xué)院黑客公開(kāi)CSDN網(wǎng)站數(shù)據(jù)庫(kù)600余萬(wàn)用戶資料泄密(2011)第6章新疆大學(xué)軟件學(xué)院如家漢庭酒店2000萬(wàn)開(kāi)房數(shù)據(jù)1.71G/BAK,792M/CSV(2013)6.1數(shù)據(jù)庫(kù)的安全性第6章安全性問(wèn)題新疆大學(xué)軟件學(xué)院攜程網(wǎng)全面癱瘓疑似數(shù)據(jù)庫(kù)物理刪除(2015)6.1數(shù)據(jù)庫(kù)的安全性第6章安全性問(wèn)題新疆大學(xué)軟件學(xué)院6.1數(shù)據(jù)庫(kù)的安全性第6章問(wèn)題的提出數(shù)據(jù)庫(kù)的主要特點(diǎn)是數(shù)據(jù)共享數(shù)據(jù)共享必然帶來(lái)數(shù)據(jù)庫(kù)的安全性問(wèn)題數(shù)據(jù)共享不能是無(wú)條件的共享例:軍事秘密、國(guó)家機(jī)密、新產(chǎn)品實(shí)驗(yàn)數(shù)據(jù)、市場(chǎng)需求分析、

市場(chǎng)營(yíng)銷策略、銷售計(jì)劃、客戶檔案、醫(yī)療檔案、銀行儲(chǔ)蓄數(shù)據(jù)新疆大學(xué)軟件學(xué)院6.1數(shù)據(jù)庫(kù)的安全性第6章問(wèn)題的提出數(shù)據(jù)庫(kù)的主要特點(diǎn)是數(shù)據(jù)共享數(shù)據(jù)共享必然帶來(lái)數(shù)據(jù)庫(kù)的安全性問(wèn)題數(shù)據(jù)共享不能是無(wú)條件的共享數(shù)據(jù)庫(kù)中數(shù)據(jù)的共享是在DBMS統(tǒng)一嚴(yán)格的控制之下的共享,即只允許有合法使用權(quán)限的用戶訪問(wèn)允許他存取的數(shù)據(jù)數(shù)據(jù)庫(kù)系統(tǒng)的安全保護(hù)措施是否有效是數(shù)據(jù)庫(kù)系統(tǒng)主要的性能指標(biāo)之一。新疆大學(xué)軟件學(xué)院6.1數(shù)據(jù)庫(kù)的安全性第6章數(shù)據(jù)庫(kù)安全性的含義安全性問(wèn)題有許多方面:(1)法律、社會(huì)和倫理方面時(shí)問(wèn)題。例如請(qǐng)求查詢信息的人是不是有合法的權(quán)力(2)物理控制方面的問(wèn)題。例如計(jì)算機(jī)機(jī)房或終端是否應(yīng)該加鎖或用其他方法加以保護(hù)(3)政策方面的問(wèn)題。確定存取原則,允許哪些用戶存取哪些數(shù)據(jù)(4)運(yùn)行方面的問(wèn)題。使用口令時(shí),如何使口令保持秘密(5)硬件控制方面的問(wèn)題。

CPU是否提供任何安全性方面的功能,諸如存儲(chǔ)保護(hù)鍵或特權(quán)工作方式(6)操作系統(tǒng)安全性方面的問(wèn)題。在主存儲(chǔ)器和數(shù)據(jù)文件用過(guò)以后,操作系統(tǒng)是否把它們的內(nèi)容清除掉(7)數(shù)據(jù)庫(kù)系統(tǒng)本身的安全性方面的問(wèn)題。數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù)以防止非法使用所造成的數(shù)據(jù)泄露、更改或破壞。數(shù)據(jù)庫(kù)安全性回顧什么是數(shù)據(jù)庫(kù)的安全性?保護(hù)數(shù)據(jù)庫(kù),防止因用戶非法使用數(shù)據(jù)庫(kù)造成數(shù)據(jù)泄露、更改或破壞。什么是數(shù)據(jù)的保密?數(shù)據(jù)保密是指用戶合法地訪問(wèn)到機(jī)密數(shù)據(jù)后能否對(duì)這些數(shù)據(jù)保證不泄密。通過(guò)制訂法律道德準(zhǔn)則和政策法規(guī)來(lái)保證。計(jì)算機(jī)系統(tǒng)安全性保護(hù)計(jì)算機(jī)系統(tǒng)中的硬件、軟件及數(shù)據(jù),防止其因偶然或惡意的原因使系統(tǒng)遭到破壞,數(shù)據(jù)遭到更改或泄露等。立體防御:進(jìn)不來(lái)、看不見(jiàn)、搞不掉、跑不了三類安全性問(wèn)題技術(shù)安全類管理安全類政策法律類第6章

可信計(jì)算機(jī)系統(tǒng)評(píng)測(cè)標(biāo)準(zhǔn)TCSEC(桔皮書)1985年美國(guó)國(guó)防部(DoD)正式頒布《DoD可信計(jì)算機(jī)系統(tǒng)評(píng)估標(biāo)準(zhǔn)》,簡(jiǎn)稱TCSEC或DoD85。TDI(紫皮書)1991年4月美國(guó)NCSC(國(guó)家計(jì)算機(jī)安全中心)頒布了《可信計(jì)算機(jī)系統(tǒng)評(píng)估標(biāo)準(zhǔn)關(guān)于可信數(shù)據(jù)庫(kù)系統(tǒng)的解釋》,簡(jiǎn)稱TDI。將TCSEC擴(kuò)展到數(shù)據(jù)庫(kù)管理系統(tǒng)。定義了數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)中需滿足和用以進(jìn)行安全性級(jí)別評(píng)估的標(biāo)準(zhǔn)。

數(shù)據(jù)庫(kù)的安全標(biāo)準(zhǔn)可信計(jì)算機(jī)系統(tǒng)6.1數(shù)據(jù)庫(kù)的安全性第6章6.1.16.1.1數(shù)據(jù)庫(kù)的安全標(biāo)準(zhǔn)第6章安全標(biāo)準(zhǔn)發(fā)展歷程

TCSEC/TDI安全級(jí)別劃分四組七個(gè)等級(jí)。按系統(tǒng)可靠或可信程度逐漸增高。各安全級(jí)別之間具有一種偏序向下兼容的關(guān)系。

安全級(jí)別安全級(jí)別

定義A1驗(yàn)證設(shè)計(jì)(VerifiedDesign)B3安全域(SecurityDomains)

B2結(jié)構(gòu)化保護(hù)(StructuralProtection)

B1標(biāo)記安全保護(hù)(LabeledSecurityProtection)

C2受控的存取保護(hù)(ControlledAccessProtection)

C1自主安全保護(hù)(DiscretionarySecurityProtection)

D最小保護(hù)(MinimalProtection)6.1.1數(shù)據(jù)庫(kù)的安全標(biāo)準(zhǔn)第6章

D級(jí)將一切不符合更高標(biāo)準(zhǔn)的系統(tǒng)均歸于D組典型例子:DOS是安全標(biāo)準(zhǔn)為D的操作系統(tǒng),DOS在安全性方面幾乎沒(méi)有什么專門的機(jī)制來(lái)保障C1級(jí)非常初級(jí)的自主安全保護(hù),能夠?qū)崿F(xiàn)對(duì)用戶和數(shù)據(jù)的分離,進(jìn)行自主存取控制(DAC),保護(hù)或限制用戶權(quán)限的傳播。C2級(jí)安全產(chǎn)品的最低檔次;提供受控的存取保護(hù)(MAC),將C1級(jí)的DAC進(jìn)一步細(xì)化,以個(gè)人身份注冊(cè)負(fù)責(zé),并實(shí)施審計(jì)和資源隔離;達(dá)到C2級(jí)的產(chǎn)品在其名稱中往往不突出“安全”(Security)這一特色。典型例子操作系統(tǒng):Microsoft的WindowsNT3.5數(shù)據(jù)庫(kù):Oracle公司的Oracle7,Sybase公司的SQLServer11.0.6 安全級(jí)別(D級(jí)、C級(jí))第6章

安全級(jí)別(B1級(jí)、B2級(jí))第6章B1級(jí)標(biāo)記安全保護(hù)?!鞍踩?Security)或“可信的”(Trusted)產(chǎn)品。對(duì)系統(tǒng)的數(shù)據(jù)加以標(biāo)記,對(duì)標(biāo)記的主體和客體實(shí)施強(qiáng)制存取控制(MAC)、審計(jì)等安全機(jī)制。典型例子操作系統(tǒng):數(shù)字設(shè)備公司的SEVMSVAXVersion6.0,HP-UXBLSrelease9.0.9+數(shù)據(jù)庫(kù):Oracle公司的TrustedOracle7,Sybase公司的SecureSQLServerversion11.0.6,Informix公司的IncorporatedINFORMIX-OnLine/Secure5.0B2級(jí)結(jié)構(gòu)化保護(hù)建立形式化的安全策略模型并對(duì)系統(tǒng)內(nèi)的所有主體和客體實(shí)施DAC和MAC。經(jīng)過(guò)認(rèn)證的B2級(jí)以上的安全系統(tǒng)非常稀少典型例子操作系統(tǒng):TrustedInformationSystems公司的TrustedXENIX一種產(chǎn)品網(wǎng)絡(luò)產(chǎn)品:CryptekSecureCommunications公司的LLCVSLAN一種產(chǎn)品數(shù)據(jù)庫(kù):沒(méi)有符合B2標(biāo)準(zhǔn)的產(chǎn)品

安全級(jí)別(B3級(jí)、A1級(jí))第6章B3級(jí)安全域該級(jí)的TCB必須滿足訪問(wèn)監(jiān)控器的要求,審計(jì)跟蹤能力更強(qiáng),并提供系統(tǒng)恢復(fù)過(guò)程。A1級(jí)驗(yàn)證設(shè)計(jì):即提供B3級(jí)保護(hù)的同時(shí)給出系統(tǒng)的形式化設(shè)計(jì)說(shuō)明和驗(yàn)證以確信各安全保護(hù)真正實(shí)現(xiàn)說(shuō)明:B2以上的系統(tǒng)還處于理論研究階段;應(yīng)用多限于一些特殊的部門如軍隊(duì)等;美國(guó)正在大力發(fā)展安全產(chǎn)品,試圖將目前僅限于少數(shù)領(lǐng)域應(yīng)用的B2安全級(jí)別下放到商業(yè)應(yīng)用中來(lái),并逐步成為新的商業(yè)標(biāo)準(zhǔn)。自主可控的必要性思政插入第六章課程思政視頻數(shù)據(jù)庫(kù)安全等級(jí)——GB/T20273-2019第6章【國(guó)家標(biāo)準(zhǔn)】GB/T20273-2019:信息安全技術(shù)-數(shù)據(jù)庫(kù)管理系統(tǒng)安全技術(shù)要求D第一級(jí)第二級(jí)第三級(jí)第四級(jí)第五級(jí)A1最小保護(hù)用戶自主保護(hù)級(jí)系統(tǒng)審計(jì)保護(hù)級(jí)安全標(biāo)記保護(hù)級(jí)結(jié)構(gòu)化保護(hù)級(jí)訪問(wèn)驗(yàn)證保護(hù)級(jí)驗(yàn)證設(shè)計(jì)C1C2B1B2B3可靠性、可信程度逐漸增高向下兼容高等級(jí)包含低等級(jí)的所有保護(hù)機(jī)制CC評(píng)估保證級(jí)劃分第6章評(píng)估保證級(jí)定義TCSEC安全級(jí)別(近似)EAL1功能測(cè)試(functionallytested)EAL2結(jié)構(gòu)測(cè)試(structurallytested)C1EAL3系統(tǒng)地測(cè)試和檢查(methodicallytestedandchecked)C2EAL4系統(tǒng)地設(shè)計(jì)、測(cè)試和復(fù)查(methodicallydesigned,testedandreviewed)(semiformallydesignedandtested)B1EAL5半形式化設(shè)計(jì)和測(cè)試(semiformallydesignedandtested)B2EAL6半形式化驗(yàn)證的設(shè)計(jì)和測(cè)試(semiformallyverifieddesignandtested)B3EAL7形式化驗(yàn)證的設(shè)計(jì)和測(cè)試(formallyverifieddesignandtested)A1

數(shù)據(jù)庫(kù)安全性控制存在的問(wèn)題6.1數(shù)據(jù)庫(kù)的安全性第6章用戶非法使用數(shù)據(jù)庫(kù)可以有很多種情況。例如:用戶編寫一段合法的程序繞過(guò)DBMS及其授權(quán)機(jī)制,通過(guò)操作系統(tǒng)直接存取、修改或備份數(shù)據(jù)庫(kù)中的數(shù)據(jù);直接或編寫應(yīng)用程序執(zhí)行非授權(quán)操作;破壞安全性的行為可能是無(wú)意的,故意的,惡意的,都應(yīng)該嚴(yán)格加以控制。因此,系統(tǒng)還要考慮數(shù)據(jù)信息的流動(dòng)問(wèn)題并加以控制,否則有潛在的危險(xiǎn)性。因?yàn)閿?shù)據(jù)的流動(dòng)可能使無(wú)權(quán)訪問(wèn)的用戶獲得訪問(wèn)權(quán)利。6.1.26.1.2數(shù)據(jù)庫(kù)安全性控制

第6章安全性控制的一般方法新疆大學(xué)軟件學(xué)院安全性控制模型不安全因素眾多:火災(zāi)、停電、密碼泄露、人員變更、設(shè)計(jì)缺陷等物理位置人員操作系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)系統(tǒng)6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章安全性控制的一般方法1、當(dāng)用戶進(jìn)入計(jì)算機(jī)系統(tǒng)時(shí),系統(tǒng)首先根據(jù)輸入的用戶標(biāo)識(shí)進(jìn)行身份的鑒定,只有合法的用戶才準(zhǔn)許進(jìn)入系統(tǒng)。4、數(shù)據(jù)最后可以通過(guò)密碼的形式存儲(chǔ)到數(shù)據(jù)庫(kù)中。3、DBMS是建立在操作系統(tǒng)之上的,操作系統(tǒng)應(yīng)能保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)必須由DBMS訪問(wèn),而不允許用戶越過(guò)DBMS,直接通過(guò)操作系統(tǒng)訪問(wèn)。2、對(duì)已進(jìn)入系統(tǒng)的用戶,DBMS還要進(jìn)行存取控制,只允許用戶進(jìn)行合法的操作。6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章安全性控制的一般方法用戶標(biāo)識(shí)和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密審計(jì)(Audit)6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章用戶標(biāo)識(shí)和鑒定數(shù)據(jù)庫(kù)系統(tǒng)是不允許一個(gè)未經(jīng)授權(quán)的用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的。用戶標(biāo)識(shí)和鑒定是系統(tǒng)提供的最外層的安全保護(hù)措施,其方法是由系統(tǒng)提供一定的方式讓用戶標(biāo)識(shí)自己的名字或身份,系統(tǒng)內(nèi)部記錄著所有合法用戶的標(biāo)識(shí),每次用戶要求進(jìn)入系統(tǒng)時(shí),由系統(tǒng)進(jìn)行核實(shí),通過(guò)鑒定后才提供機(jī)器的使用權(quán)。常見(jiàn)方法用戶名或用戶標(biāo)識(shí)符用戶名和口令口令鑒別(靜態(tài)/動(dòng)態(tài))生物特征、智能卡等鑒別方式16.1.2數(shù)據(jù)庫(kù)安全性控制

第6章用戶標(biāo)識(shí)和鑒定的常見(jiàn)方法1.用一個(gè)用戶名或用戶標(biāo)識(shí)符來(lái)標(biāo)明用戶的身份,系統(tǒng)以此來(lái)鑒別用戶的合法性。如果正確,則可進(jìn)入下一步的核實(shí),否則,不能使用計(jì)算機(jī)。2.用戶標(biāo)識(shí)符是用戶公開(kāi)的標(biāo)識(shí),它不足以成為鑒別用戶身份的憑證。為了進(jìn)一步核實(shí)用戶身份,常采用用戶名與口令(Password)相結(jié)合的方法,系統(tǒng)通過(guò)核對(duì)口令判別用戶身份的真?zhèn)?。系統(tǒng)有一張用戶口令表,為每個(gè)用戶保持一個(gè)記錄,包括用戶名和口令兩部分?jǐn)?shù)據(jù)。用戶先輸入用戶名,然后系統(tǒng)要求用戶輸入口令。為了保密,用戶在終端上輸入的口令不顯示在屏幕上。系統(tǒng)核對(duì)口令以鑒別用戶身份。3.通過(guò)用戶名和口令來(lái)鑒定用戶的方法簡(jiǎn)單易行,但該方法在使用時(shí),由于用戶名和口令的產(chǎn)生和使用比較簡(jiǎn)單,也容易被竊取,因此還可采用更復(fù)雜的方法。

用戶標(biāo)識(shí)和鑒定的方法有多種,為了獲得更強(qiáng)的安全性,往往是多種方法并舉,常用方法有:16.1.2數(shù)據(jù)庫(kù)安全性控制

第6章用戶標(biāo)識(shí)和鑒定的常見(jiàn)方法(續(xù))(1).靜態(tài)口令鑒別靜態(tài)口令一般由用戶自己設(shè)定,這些口令是靜態(tài)不變的(2).動(dòng)態(tài)口令鑒別口令是動(dòng)態(tài)變化的,每次鑒別時(shí)均需使用動(dòng)態(tài)產(chǎn)生的新口令登錄數(shù)據(jù)庫(kù)管理系統(tǒng),即采用一次一密的方法(3).生物特征鑒別通過(guò)生物特征進(jìn)行認(rèn)證的技術(shù),生物特征如指紋、虹膜和掌紋等(4).智能卡鑒別智能卡是一種不可復(fù)制的硬件,內(nèi)置集成電路的芯片,具有硬件加密功能16.1.2數(shù)據(jù)庫(kù)安全性控制

第6章安全性控制的一般方法用戶標(biāo)識(shí)和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密審計(jì)(Audit)6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章用戶存取權(quán)限控制在數(shù)據(jù)庫(kù)系統(tǒng)中,每個(gè)用戶只能訪問(wèn)他有權(quán)存取的數(shù)據(jù)并執(zhí)行有權(quán)使用的操作。因此,必須預(yù)先定義用戶的存取權(quán)限。對(duì)于合法的用戶,系統(tǒng)根據(jù)其存取權(quán)限的定義對(duì)其各種操作請(qǐng)求進(jìn)行控制,確保合法操作。存取權(quán)限由兩個(gè)要素組成,數(shù)據(jù)對(duì)象和操作類型。定義一個(gè)用戶的存取權(quán)限就是要定義這個(gè)用戶可以在哪些數(shù)據(jù)對(duì)象上進(jìn)行哪些類型的操作。用戶存取權(quán)限指的是不同的用戶對(duì)于不同的數(shù)據(jù)對(duì)象允許執(zhí)行的操作權(quán)限。26.1.2數(shù)據(jù)庫(kù)安全性控制

第6章用戶存取權(quán)限控制在數(shù)據(jù)庫(kù)系統(tǒng)中,定義用戶存取權(quán)限稱為授權(quán)(Authorization)。用戶的存取權(quán)限有兩種:系統(tǒng)特權(quán)和對(duì)象特權(quán)。系統(tǒng)特權(quán)是由DBA授予某些數(shù)據(jù)庫(kù)用戶,只有得到系統(tǒng)特權(quán),才能成為數(shù)據(jù)庫(kù)用戶。對(duì)象特權(quán)可以由DBA授予,也可以由數(shù)據(jù)對(duì)象的創(chuàng)建者授予,使數(shù)據(jù)庫(kù)用戶具有對(duì)某些數(shù)據(jù)對(duì)象進(jìn)行某些操作的特權(quán)。在系統(tǒng)初始化時(shí),系統(tǒng)中至少有一個(gè)具有DBA特權(quán)的用戶,DBA可以通過(guò)GRANT語(yǔ)句將系統(tǒng)特權(quán)或?qū)ο筇貦?quán)授予其他用戶。對(duì)于已授權(quán)的用戶可以通過(guò)REVOKE語(yǔ)句收回所授予的特權(quán)。26.1.2數(shù)據(jù)庫(kù)安全性控制

第6章用戶存取權(quán)限控制新疆大學(xué)軟件學(xué)院這些授權(quán)定義經(jīng)過(guò)編譯后以一張授權(quán)表的形式存放在數(shù)據(jù)字典中。授權(quán)表主要有三個(gè)屬性,用戶標(biāo)識(shí)、數(shù)據(jù)對(duì)象和操作類型。用戶標(biāo)識(shí)不但可以是用戶個(gè)人,也可以是團(tuán)體、程序和終端。在非關(guān)系系統(tǒng)中,存取控制的數(shù)據(jù)對(duì)象僅限于數(shù)據(jù)本身。而關(guān)系系統(tǒng)中,存取控制的數(shù)據(jù)對(duì)象不僅有基本表、屬性列等數(shù)據(jù)本身,還有內(nèi)模式、外模式、模式等數(shù)據(jù)字典中的內(nèi)容。授權(quán)表用戶標(biāo)識(shí)數(shù)據(jù)對(duì)象操作類型對(duì)于授權(quán)表,衡量授權(quán)機(jī)制的一個(gè)重要指標(biāo)就是授權(quán)粒度,即可以定義的數(shù)據(jù)對(duì)象的范圍,在關(guān)系數(shù)據(jù)庫(kù)中,授權(quán)粒度包括關(guān)系、記錄或?qū)傩?。授?quán)粒度越細(xì),授權(quán)子系統(tǒng)就越靈活,能夠提供的安全性就越完善。不同的用戶對(duì)于不同的數(shù)據(jù)對(duì)象允許執(zhí)行的操作權(quán)限不同。用戶只能訪問(wèn)其有權(quán)限存取的數(shù)據(jù),執(zhí)行其有權(quán)限進(jìn)行的操作。26.1.2數(shù)據(jù)庫(kù)安全性控制

第6章安全性控制的一般方法用戶標(biāo)識(shí)和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密審計(jì)(Audit)6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章定義視圖3為不同的用戶定義不同的視圖,可以限制各個(gè)用戶的訪問(wèn)范圍。通過(guò)視圖機(jī)制把要保密的數(shù)據(jù)對(duì)無(wú)權(quán)存取這些數(shù)據(jù)的用戶隱藏起來(lái),從而自動(dòng)地對(duì)數(shù)據(jù)提供一定程度的安全保護(hù)。例如,USER1只能對(duì)計(jì)算機(jī)系的學(xué)生進(jìn)行操作一種方法是通過(guò)授權(quán)機(jī)制對(duì)USER1授權(quán)另一種簡(jiǎn)單的方法就是定義一個(gè)計(jì)算機(jī)系的視圖但視圖機(jī)制的安全保護(hù)功能太不精細(xì),往往不能達(dá)到應(yīng)用系統(tǒng)的要求,其主要功能在于提供了數(shù)據(jù)庫(kù)的邏輯獨(dú)立性。6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章定義視圖3視圖的作用

(1)對(duì)數(shù)據(jù)提供一定程度的安全保護(hù);(2)提供數(shù)據(jù)獨(dú)立性。在實(shí)際應(yīng)用中,通常將視圖機(jī)制與授權(quán)機(jī)制配合使用:(1)首先用視圖機(jī)制屏蔽掉一部分保密數(shù)據(jù)(2)對(duì)視圖再進(jìn)一步定義存取權(quán)限(3)間接實(shí)現(xiàn)了支持存取謂詞的用戶權(quán)限定義6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章定義視圖--例題3例6-1:設(shè)置王平只能檢索計(jì)算機(jī)系學(xué)生的信息的權(quán)限先建立計(jì)算機(jī)系學(xué)生的視圖CS_StudentCREATEVIEWCS_StudentASSELECT*FROMSWHEREDp='計(jì)算機(jī)';在視圖上進(jìn)一步定義存取權(quán)限

GRANTSELECTONCS_StudentTO‘王平’;6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章安全性控制的一般方法用戶標(biāo)識(shí)和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密

審計(jì)(Audit)6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章數(shù)據(jù)加密4前面介紹的幾種數(shù)據(jù)庫(kù)安全措施,都是防止從數(shù)據(jù)庫(kù)系統(tǒng)竊取保密數(shù)據(jù),不能防止通過(guò)不正常渠道非法訪問(wèn)數(shù)據(jù)。例如:偷取存儲(chǔ)數(shù)據(jù)的磁盤,或在通信線路上竊取數(shù)據(jù),為了防止這些竊密活動(dòng),比較好的辦法是對(duì)數(shù)據(jù)加密。數(shù)據(jù)加密是防止數(shù)據(jù)庫(kù)中數(shù)據(jù)在存儲(chǔ)和傳輸中失密的有效手段。加密的基本思想是根據(jù)一定的算法將原始數(shù)據(jù)(術(shù)語(yǔ)為明文,Plaintext)加密成為不可直接識(shí)別的格式(術(shù)語(yǔ)為密文,Ciphertext),數(shù)據(jù)以密碼的形式存儲(chǔ)和傳輸。6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章數(shù)據(jù)加密--加密方法4加密方法有兩種:一種是替換方法,該方法使用密鑰(EncryptionKey)將明文中的每一個(gè)字符轉(zhuǎn)換為密文中的一個(gè)字符。另一種是轉(zhuǎn)換方法,該方法將明文中的字符按不同的順序重新排列。通常將這兩種方法結(jié)合起來(lái)使用,就可以達(dá)到相當(dāng)高的安全程度。例如美國(guó)1977年制定的官方加密標(biāo)準(zhǔn),數(shù)據(jù)加密標(biāo)準(zhǔn)(DataEncryptionStandard,簡(jiǎn)稱DES)就是使用這種算法的例子。數(shù)據(jù)加密后,對(duì)于不知道解密算法的人,即使利用系統(tǒng)安全措施的漏洞非法訪問(wèn)數(shù)據(jù),也只能看到一些無(wú)法辨認(rèn)的二進(jìn)制代碼。合法的用戶檢索數(shù)據(jù)時(shí),首先提供密碼鑰匙,由系統(tǒng)進(jìn)行譯碼后,才能得到可識(shí)別的數(shù)據(jù)。

6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章數(shù)據(jù)加密--加密方法4目前不少數(shù)據(jù)庫(kù)產(chǎn)品提供了數(shù)據(jù)加密例行程序,用戶可根據(jù)要求自行進(jìn)行加密處理,還有一些未提供加密程序的產(chǎn)品也提供了相應(yīng)的接口,用戶用其他廠商的加密程序?qū)?shù)據(jù)加密。用密碼存儲(chǔ)數(shù)據(jù),在存入時(shí)需加密,在查詢時(shí)需解密,這個(gè)過(guò)程會(huì)占用大量系統(tǒng)資源,降低了數(shù)據(jù)庫(kù)的性能。因此,數(shù)據(jù)加密功能通常允許用戶自由選擇,只對(duì)那些保密要求特別高的數(shù)據(jù),才值得采用此方法。6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章安全性控制的一般方法用戶標(biāo)識(shí)和鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密審計(jì)(Audit)

6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章審計(jì)5對(duì)于某些高度敏感的保密數(shù)據(jù),必須以審計(jì)作為預(yù)防手段。審計(jì)功能是一種監(jiān)視措施,跟蹤記錄有關(guān)數(shù)據(jù)的訪問(wèn)活動(dòng)。審計(jì)追蹤把用戶對(duì)數(shù)據(jù)庫(kù)的所有操作自動(dòng)記錄下來(lái),存放在一個(gè)特殊文件上中,即審計(jì)日志(AuditLog)中。前面介紹的各種數(shù)據(jù)庫(kù)安全性措施,都可將用戶操作限制在規(guī)定的安全范圍內(nèi)。但實(shí)際上任何系統(tǒng)的安全性措施都不是絕對(duì)可靠的,竊密者總有辦法打破這些控制。6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章審計(jì)5記錄的內(nèi)容一般包括:操作類型,如修改、查詢等;操作終端標(biāo)識(shí)與操作者標(biāo)識(shí);操作日期和時(shí)間;操作所涉及到的相關(guān)數(shù)據(jù),如基本表、視圖、記錄、屬性等。利用這些信息,可以重現(xiàn)導(dǎo)致數(shù)據(jù)庫(kù)現(xiàn)有狀況的一系列事件,以進(jìn)一步找出非法存取數(shù)據(jù)的人、時(shí)間和內(nèi)容等。6.1.2數(shù)據(jù)庫(kù)安全性控制

第6章審計(jì)5KingbaseES中,以SYSSAO連接數(shù)據(jù)庫(kù)開(kāi)啟審計(jì)功能,執(zhí)行下面的語(yǔ)句:

ALTERSYSTEMSETENABLE_AUDIT=1;

CALLsys_reload_conf();如若要關(guān)閉審計(jì)功能,執(zhí)行下面語(yǔ)句:

ALTERSYSTEMSETENABLE_AUDIT=0;

CALLsys_reload_conf();

使用審計(jì)功能會(huì)大大增加系統(tǒng)的開(kāi)銷,所以DBMS通常將其作為可選特征,提供相應(yīng)的操作語(yǔ)句可靈活地打開(kāi)或關(guān)閉審計(jì)功能。

KingbaseES數(shù)據(jù)安全管理三員管理、三權(quán)分立6.1數(shù)據(jù)庫(kù)的安全性第6章6.1.3TCSEC(可信計(jì)算機(jī)系統(tǒng)評(píng)估準(zhǔn)則)安全等級(jí):TCSECB2(四組七個(gè)等級(jí)。A1,B3,B2,B1,C2,C1,D)三權(quán)分立(行政、立法、司法),特權(quán)用戶:系統(tǒng)管理員(SYSTEM)主要負(fù)責(zé)執(zhí)行數(shù)據(jù)庫(kù)日常管理的各種操作和自主存取控制。安全管理員(SYSSSO)主要負(fù)責(zé)強(qiáng)制存取控制規(guī)則的制定和管理,且不能創(chuàng)建和操作普通對(duì)象。審計(jì)管理員(SYSSAO)主要負(fù)責(zé)數(shù)據(jù)庫(kù)的審計(jì),監(jiān)督前兩類用戶的操作。且不能創(chuàng)建和操作普通對(duì)象。6.1.3KingbaseES數(shù)據(jù)安全管理機(jī)制第6章用戶身份鑒別KingbaseES:支持強(qiáng)化口令的身份認(rèn)證模式(雙向可信認(rèn)證)、外部統(tǒng)一身份認(rèn)證模式、集中化身份認(rèn)證模式基于強(qiáng)化口令的身份認(rèn)證:對(duì)數(shù)據(jù)庫(kù)用戶施加口令復(fù)雜度檢查、帳戶和口令有效期限設(shè)置、帳戶鎖定等安全策略管理等機(jī)制;其他身份認(rèn)證:KingbaseES還支持基于Kerberos、Radius、LDAP認(rèn)證協(xié)議和CA等技術(shù)在內(nèi)的與第三方身份認(rèn)證產(chǎn)品相結(jié)合的外部統(tǒng)一身份鑒別或集中化身份認(rèn)證方式。6.1.3KingbaseES數(shù)據(jù)安全管理機(jī)制第6章用戶身份鑒別KingbaseES數(shù)據(jù)庫(kù)連接:支持強(qiáng)化口令的身份認(rèn)證截圖

6.1.3KingbaseES數(shù)據(jù)安全管理機(jī)制第6章數(shù)據(jù)訪問(wèn)控制與保護(hù)在訪問(wèn)控制模型中包括主體、客體和控制策略三個(gè)要素。主體指主動(dòng)對(duì)其它實(shí)體施加動(dòng)作的實(shí)體;客體是被動(dòng)接受其他實(shí)體訪問(wèn)的實(shí)體;控制策略為主體對(duì)客體的操作行為和約束條件。這三者之間需要滿足基本的安全策略:(1)最小特權(quán)原則

(2)最小泄漏原則

(3)多級(jí)安全策略6.1.3KingbaseES數(shù)據(jù)安全管理機(jī)制第6章數(shù)據(jù)訪問(wèn)控制與保護(hù)(1)最小特權(quán)原則。給主體分配權(quán)限時(shí)要遵循權(quán)限最小化原則,能最大限度地限制主體實(shí)施授權(quán)行為,可以避免來(lái)自突發(fā)事件、錯(cuò)誤和未授權(quán)使用主體的危險(xiǎn)。(2)最小泄漏原則。主體執(zhí)行任務(wù)時(shí),按照主體所需要知道的信息最小化的原則分配給主體權(quán)利。也就是要保護(hù)敏感信息不要被無(wú)關(guān)人員知道。(3)多級(jí)安全策略。主體和客體間的數(shù)據(jù)流向和權(quán)限控制按照安全級(jí)別的絕密(TS)、秘密(S)、機(jī)密(C)、限制(RS)和無(wú)級(jí)別(U)五級(jí)來(lái)劃分。可以避免敏感信息的擴(kuò)散,只有安全級(jí)別更高的主體才能夠訪問(wèn)。6.1.3KingbaseES數(shù)據(jù)安全管理機(jī)制第6章金倉(cāng)的數(shù)據(jù)訪問(wèn)控制與保護(hù)KingbaseES支持自主訪問(wèn)控制(DAC)和強(qiáng)制訪問(wèn)控制(MAC)。用戶只有同時(shí)具有數(shù)據(jù)庫(kù)管理員的自主存取控制(DAC)授權(quán)和安全管理員的強(qiáng)制存取控制(MAC)授權(quán),才能查看到某些敏感數(shù)據(jù)。自主訪問(wèn)控制作用是對(duì)主體(如用戶)操作客體(如表)進(jìn)行授權(quán)管理,它主要包括權(quán)限授予、回收及傳播。KingbaseESDAC采用存取控制列表(ACL)技術(shù)實(shí)現(xiàn)。

權(quán)限和角色6.1數(shù)據(jù)庫(kù)的安全性第6章6.1.4只有當(dāng)用戶被授予適當(dāng)系統(tǒng)權(quán)限或?qū)ο髾?quán)限時(shí),才能執(zhí)行相應(yīng)操作。授權(quán)方法有:直接授權(quán):利用GRANT命令直接為用戶授權(quán)。間接授權(quán):先將權(quán)限授予角色,然后再將角色授予用戶。KingbaseES使用角色的概念來(lái)管理數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限。一個(gè)角色可以被看成是一個(gè)數(shù)據(jù)庫(kù)“用戶”或“用戶組”,這取決于角色被怎樣設(shè)置。角色可以擁有數(shù)據(jù)庫(kù)對(duì)象(例如,表和函數(shù)),并且能夠把數(shù)據(jù)庫(kù)對(duì)象上的權(quán)限賦予其他角色。6.1.4權(quán)限和角色第6章角色管理(數(shù)據(jù)庫(kù)對(duì)象管理工具)1在“數(shù)據(jù)庫(kù)對(duì)象管理工具”中,在數(shù)據(jù)庫(kù)導(dǎo)航標(biāo)簽下,通過(guò)“數(shù)據(jù)庫(kù)->安全性->用戶/角色”,右鍵選擇“新建角色”或者“新建用戶”。KingbaseES中可通過(guò)“數(shù)據(jù)庫(kù)對(duì)象管理工具”和SQL語(yǔ)句兩種方式實(shí)現(xiàn)角色的管理。6.1.4權(quán)限和角色第6章角色管理(SQL語(yǔ)句)1KingbaseES中用戶/角色的創(chuàng)建:CREATEUSER/CREATEROLESUPERUSER|NOSUPERUSER:角色是否是“超級(jí)用戶”,默認(rèn)值為NOSUPERUSER。CREATEDB|NOCREATDB:定義新角色創(chuàng)建數(shù)據(jù)庫(kù)的能力,默認(rèn)值為NOCREATEDB。CREATEROLE|NOCREATROLE:定義新角色創(chuàng)建角色的能力,默認(rèn)值為NOCREATEROLE。LOGIN|NOLOGIN:新角色是否被允許登陸。設(shè)置LOGIN的角色被認(rèn)為是用戶,可在客戶端登陸數(shù)據(jù)庫(kù)。PASSWORD:設(shè)置角色的口令?!纠?-2】創(chuàng)建用戶名為user1、登陸口令為“123456”的用戶。CREATEUSERuser1withPASSWORD‘123456’;【例6-3】創(chuàng)建角色名為role1、沒(méi)有登陸口令的角色。CREATEROLErole1withLOGIN;6.1.4權(quán)限和角色第6章角色管理(例題)16.1.4權(quán)限和角色第6章權(quán)限管理2KingbaseES中用戶操作權(quán)限分為系統(tǒng)權(quán)限、對(duì)象權(quán)限和列級(jí)權(quán)限。系統(tǒng)權(quán)限:指在數(shù)據(jù)庫(kù)級(jí)別執(zhí)行某種操作的權(quán)限,或針對(duì)某一類對(duì)象執(zhí)行某種操作的權(quán)限。例如,CREATEDB、CREATEROLE、SUPERUSER、SSO、SAO系統(tǒng)權(quán)限。(5種)對(duì)象權(quán)限:指對(duì)某個(gè)特定的數(shù)據(jù)庫(kù)對(duì)象執(zhí)行某種操作的權(quán)限。例如,對(duì)特定表的插入、刪除、修改、查詢的權(quán)限。

列級(jí)權(quán)限:對(duì)給定的用戶授予在給定表或視圖上某些列執(zhí)行操作集。此動(dòng)作只能為INSERT、UPDATE和REFERENCES。權(quán)限管理就是用戶登錄后只能進(jìn)行權(quán)限范圍內(nèi)的操作,所謂權(quán)限就是執(zhí)行特定類型的SQL命令或訪問(wèn)其他用戶的對(duì)象的權(quán)利。用戶在數(shù)據(jù)庫(kù)中可以執(zhí)行什么樣的操作,以及可以對(duì)哪些對(duì)象進(jìn)行操作,完全取決于該用戶所擁有的權(quán)限。6.1.4權(quán)限和角色第6章權(quán)限管理2KingbaseES中的操作權(quán)限:系統(tǒng)權(quán)限、對(duì)象權(quán)限和列級(jí)權(quán)限授權(quán)GRANTGRANT<權(quán)限>,[,<權(quán)限>][ON<對(duì)象類型><對(duì)象名>]TO<用戶>[,<用戶>]…[WITHGRANTOPTION];6.1.4權(quán)限和角色第6章回收REVOKEREVOKE<權(quán)限>,[,<權(quán)限>]ON<對(duì)象類型><對(duì)象名>FROM<用戶>[,<用戶>]…[CASCADE|RESTRICT];【例6-4】把表S的插入權(quán)限授予給用戶user1。GRANTINSERTONSTOuser1;【例6-5】把視圖S_VIEW的所有可用權(quán)限授予用戶user2。GRANTALLONS_VIEWTOuser2;6.1.4權(quán)限和角色第6章權(quán)限管理(對(duì)象權(quán)限-例題)2【例6-6】從用戶user1收回表S的插入權(quán)限。REVOKEINSERTONSFROMuser1;【例6-7】從用戶user2收回視圖S_VIEW的所有權(quán)限。GRANTALLONS_VIEWFROMuser2;授權(quán)GRANT回收REVOKE6.1.4權(quán)限和角色第6章權(quán)限管理-對(duì)象權(quán)限-列級(jí)權(quán)限2列級(jí)權(quán)限是對(duì)給定的用戶授予在給定表或視圖上某些列執(zhí)行操作集。此動(dòng)作只能為INSERT、UPDATE和REFERENCES。6.1.4權(quán)限和角色第6章示例練習(xí)-126.1.4權(quán)限和角色第6章示例練習(xí)-226.1.4權(quán)限和角色第6章示例練習(xí)-326.1.4權(quán)限和角色第6章刪除角色2由于角色可以擁有數(shù)據(jù)庫(kù)對(duì)象并且能持有訪問(wèn)其他對(duì)象的特權(quán),刪除一個(gè)角色常常并非一次DROPROLE就能解決。任何被該用戶所擁有的對(duì)象必須首先被刪除或者轉(zhuǎn)移給其他擁有者,并且任何已被授予給該角色的權(quán)限必須被收回。對(duì)象的擁有關(guān)系可以使用ALTER命令一次轉(zhuǎn)移出去,格式如下:ALTER<對(duì)象類型><對(duì)象名>OWNERTO<對(duì)象類型><對(duì)象名>;REASSIGNOWNED命令可以把要被刪除的角色old_role擁有的所有對(duì)象權(quán)限轉(zhuǎn)移給另一個(gè)角色new_role,格式如下:REASSINGOWNEDBYold_roleTOnew_role;ALTERREASSIGN

數(shù)據(jù)庫(kù)完整性的含義6.2完整性控制第6章6.2.1廣義的完整性泛指所有可能引發(fā)錯(cuò)誤的范疇,包含語(yǔ)義完整性、并發(fā)控制、安全控制、DB故障恢復(fù)等。狹義的完整性特指語(yǔ)義完整性。通常來(lái)說(shuō),DBMS具有專門的完整性管理機(jī)制與程序來(lái)處理語(yǔ)義完整性問(wèn)題。接下來(lái)討論的也主要是語(yǔ)義完整性。6.2.1數(shù)據(jù)庫(kù)完整性的含義第6章關(guān)系完整性的分類1與關(guān)系的完整性不同,數(shù)據(jù)庫(kù)完整性是DBMS內(nèi)的范疇,從更宏觀的角度對(duì)數(shù)據(jù)庫(kù)的操作進(jìn)行約束與規(guī)范。行的完整性、行的唯一標(biāo)識(shí)、主鍵約束等;實(shí)體完整性EntityIntegrity表的外鍵需要與其他表的主鍵對(duì)應(yīng);參照完整性ReferentialIntegrity允許用戶自己對(duì)不同粒度的對(duì)象添加不同約束;用戶自定義完整性User-definedIntegrity6.2.1數(shù)據(jù)庫(kù)完整性的含義第6章數(shù)據(jù)庫(kù)完整性的定義2數(shù)據(jù)庫(kù)的完整性是指保護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性、一致性和相容性,防止錯(cuò)誤的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)造成無(wú)效操作。數(shù)據(jù)庫(kù)的完整性是指防止合法用戶使用數(shù)據(jù)庫(kù)時(shí)向數(shù)據(jù)庫(kù)中加入不符合語(yǔ)義的數(shù)據(jù)。完整性措施的防范對(duì)象是不合語(yǔ)義的數(shù)據(jù)。只有符合語(yǔ)義約束的合法數(shù)據(jù)才能進(jìn)入數(shù)據(jù)庫(kù)正確性保證數(shù)據(jù)之間的邏輯關(guān)系是正確的,對(duì)數(shù)據(jù)庫(kù)更新時(shí),數(shù)據(jù)庫(kù)從一個(gè)一致?tīng)顟B(tài)到另一個(gè)一致?tīng)顟B(tài)一致性同一個(gè)事實(shí)的兩個(gè)數(shù)據(jù)應(yīng)當(dāng)是相同或存在引用制約的,這兩個(gè)數(shù)據(jù)可能存放在不同的關(guān)系之中。相容性6.2.1數(shù)據(jù)庫(kù)完整性的含義第6章完整性與安全性3數(shù)據(jù)庫(kù)的完整性與安全性是數(shù)據(jù)庫(kù)保護(hù)的兩個(gè)不同方面。完整性措施防范的對(duì)象是不合語(yǔ)義的數(shù)據(jù),維護(hù)的是數(shù)據(jù)的正確性、一致性、相容性;安全性措施防范的對(duì)象是非法用戶與非法操作,保證數(shù)據(jù)不被非法使用、更改、泄密和破壞。完整性控制機(jī)制6.2.2完整性規(guī)則的組成第6章完整性規(guī)則的構(gòu)成1完整性規(guī)則主要由以下三部分構(gòu)成。觸發(fā)條件:規(guī)定系統(tǒng)什么時(shí)候使用完整性規(guī)則來(lái)檢查數(shù)據(jù)。約束條件:規(guī)定系統(tǒng)檢查用戶發(fā)出的操作請(qǐng)求違背了什么樣的完整性約束條件。違約響應(yīng):規(guī)定系統(tǒng)如果發(fā)現(xiàn)用戶發(fā)出的操作請(qǐng)求違背了完整性約束條件,應(yīng)該采取一定的動(dòng)作來(lái)保證數(shù)據(jù)的完整性,即違約時(shí)要做的事情。6.2.2完整性規(guī)則的組成第6章規(guī)則的執(zhí)行時(shí)間2完整性規(guī)則從執(zhí)行時(shí)間上可分為立即執(zhí)行約束(ImmediateConstraints)和延遲執(zhí)行約束(DeferredConstraints)。立即執(zhí)行約束是指在執(zhí)行用戶事務(wù)過(guò)程中,某一條語(yǔ)句執(zhí)行完成后,系統(tǒng)立即對(duì)此數(shù)據(jù)進(jìn)行完整性約束條件檢查;延遲執(zhí)行約束是指在整個(gè)事務(wù)執(zhí)行結(jié)束后,再對(duì)約束條件進(jìn)行完整性檢查,結(jié)果正確后才能提交。6.2.2完整性規(guī)則的組成第6章規(guī)則的構(gòu)成元素3D(Data):代表約束作用的數(shù)據(jù)對(duì)象,可以是關(guān)系、元組和列三種對(duì)象;O(Operation):代表觸發(fā)完整性檢查的數(shù)據(jù)庫(kù)操作,即當(dāng)用戶發(fā)出什么操作請(qǐng)求時(shí)需要檢查該完整性規(guī)則,是立即執(zhí)行還是延遲執(zhí)行;A(Assertion):代表數(shù)據(jù)對(duì)象必須滿足的語(yǔ)義約束,這是規(guī)則的主體;C(Condition):代表選擇A作用的數(shù)據(jù)對(duì)象值的謂詞;P(Procedure):代表違反完整性規(guī)則時(shí)觸發(fā)執(zhí)行的操作過(guò)程。一條完整性規(guī)則可以用一個(gè)五元組(D,O,A,C,P)來(lái)形式化地表示【例6-8】對(duì)于“學(xué)號(hào)(SNo)不能為空”的這條完整性約束中,(D,O,A,C,P)的含義分別如下:D:代表約束作用的數(shù)據(jù)對(duì)象為SNo屬性;O:當(dāng)用戶插入或修改數(shù)據(jù)時(shí)需要檢查該完整性規(guī)則,屬于立即執(zhí)行約束;A:SNo不能為空;C:A可作用于所有記錄的SNo屬性;P:拒絕執(zhí)行用戶請(qǐng)求。6.2.2完整性規(guī)則的組成第6章規(guī)則的構(gòu)成元素-例題3完整性約束條件是完整性控制機(jī)制的核心。

完整性約束條件的分類6.2完整性控制第6章6.2.3廣義的完整性泛指所有可能引發(fā)錯(cuò)誤的范疇,包含語(yǔ)義完整性、并發(fā)控制、安全控制、DB故障恢復(fù)等。狹義的完整性特指語(yǔ)義完整性。通常來(lái)說(shuō),DBMS具有專門的完整性管理機(jī)制與程序來(lái)處理語(yǔ)義完整性問(wèn)題。接下來(lái)討論的也主要是語(yǔ)義完整性。6.2.3完整性約束條件的分類第6章從約束條件使用的對(duì)象劃分1值的約束即對(duì)數(shù)據(jù)類型、數(shù)據(jù)格式、取值范圍和空值等進(jìn)行規(guī)定。(1)對(duì)數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長(zhǎng)度、單位和精度等。(2)對(duì)數(shù)據(jù)格式的約束。(3)對(duì)取值范圍的約束。(4)對(duì)空值的約束。從約束條件使用的對(duì)象來(lái)劃分,可以分為值的約束和結(jié)構(gòu)的約束。6.2.3完整性約束條件的分類第6章從約束條件使用的對(duì)象劃分1結(jié)構(gòu)的約束即對(duì)數(shù)據(jù)之間聯(lián)系的約束。(1)函數(shù)依賴約束(2NF、3NF、BCNF)。(2)實(shí)體完整性約束。

(3)參照完整性約束。(4)統(tǒng)計(jì)約束。規(guī)定某個(gè)屬性值與關(guān)系多個(gè)元組的統(tǒng)計(jì)值之間必須滿足某種約束條件。例如,規(guī)定系主任的獎(jiǎng)金不得高于該系的平均獎(jiǎng)金的50%,不得低于該系的平均獎(jiǎng)金的15%。這里該系平均獎(jiǎng)金的值就是一個(gè)統(tǒng)計(jì)計(jì)算值。從約束條件使用的對(duì)象來(lái)劃分,可以分為值的約束和結(jié)構(gòu)的約束。實(shí)體完整性約束和參照完整性約束是關(guān)系模型的兩個(gè)極其重要的約束,被稱為關(guān)系的兩個(gè)不變性。注:統(tǒng)計(jì)約束實(shí)現(xiàn)起來(lái)開(kāi)銷很大。6.2.3完整性約束條件的分類第6章從約束對(duì)象的狀態(tài)劃分2從約束對(duì)象的狀態(tài)來(lái)劃分,可以分為靜態(tài)約束和動(dòng)態(tài)約束。靜態(tài)約束靜態(tài)約束是指對(duì)數(shù)據(jù)庫(kù)每一個(gè)確定狀態(tài)所應(yīng)滿足的約束條件,是反映數(shù)據(jù)庫(kù)狀態(tài)合理性的約束,這是最重要的一類完整性約束。上面介紹的值的約束和結(jié)構(gòu)的約束均屬于靜態(tài)約束。動(dòng)態(tài)約束動(dòng)態(tài)約束是指數(shù)據(jù)庫(kù)從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時(shí),新舊值之間所應(yīng)滿足的約束條件,動(dòng)態(tài)約束反映的是數(shù)據(jù)庫(kù)狀態(tài)變遷的約束。例如,學(xué)生年齡在更改時(shí)只能增長(zhǎng),職工工資在調(diào)整時(shí)不得低于其原來(lái)的工資。

數(shù)據(jù)完整性的實(shí)施6.2完整性控制第6章6.2.4數(shù)據(jù)完整性的兩種實(shí)施形式:聲明式數(shù)據(jù)完整性和程序化數(shù)據(jù)完整性聲明式數(shù)據(jù)完整性

--是實(shí)施數(shù)據(jù)完整性的首選聲明式數(shù)據(jù)完整性是將數(shù)據(jù)所需符合的條件融入到對(duì)象的定義中,這樣DBMS會(huì)自動(dòng)確保數(shù)據(jù)符合事先制定的條件。聲明式數(shù)據(jù)完整性的特點(diǎn)是:①通過(guò)針對(duì)表和字段定義聲明的約束,可使聲明式數(shù)據(jù)完整性成為數(shù)據(jù)定義的一部分。②使用約束、默認(rèn)值與規(guī)則實(shí)施聲明式數(shù)據(jù)完整性。6.2.4數(shù)據(jù)完整性的實(shí)施第6章實(shí)施的形式-程序化數(shù)據(jù)完整性1程序化數(shù)據(jù)完整性如果所需符合的條件以及該條件的實(shí)施均通過(guò)所編寫的程序代碼完成,則這種形式的數(shù)據(jù)完整性稱為程序化數(shù)據(jù)完整性。程序化數(shù)據(jù)完整性的特點(diǎn)是:程序化數(shù)據(jù)完整性可以通過(guò)相關(guān)的程序語(yǔ)言及工具在客戶端或服務(wù)器端實(shí)施。常用的類型是:存儲(chǔ)過(guò)程、觸發(fā)器等形式實(shí)施程序化數(shù)據(jù)完整性。6.2.4數(shù)據(jù)完整性的實(shí)施第6章實(shí)施的形式1綜上,實(shí)施數(shù)據(jù)完整性的方法有五種:約束(Constraint)、默認(rèn)值(Default)、規(guī)則(Rule)、存儲(chǔ)過(guò)程(StoredProcedure)和觸發(fā)器(Trigger)。在選用實(shí)施數(shù)據(jù)完整性的方法時(shí),應(yīng)優(yōu)先選用約束,因?yàn)榧s束在SQLServer的可執(zhí)行部分有一段代碼,執(zhí)行速度比默認(rèn)值和規(guī)則要快。

有關(guān)約束的定義和使用方法參見(jiàn)3.4.3小節(jié),有關(guān)存儲(chǔ)過(guò)程和觸發(fā)器的內(nèi)容參見(jiàn)7.2和7.3節(jié)。下面介紹規(guī)則和默認(rèn)。6.2.4數(shù)據(jù)完整性的實(shí)施第6章規(guī)則2規(guī)則(Rule)就是數(shù)據(jù)庫(kù)對(duì)存儲(chǔ)在表中的列或用戶自定義數(shù)據(jù)類型中的值的規(guī)定和限制。規(guī)則系統(tǒng)非常有效,KingbaseES中,視圖(VIEW)系統(tǒng)就是利用規(guī)則實(shí)現(xiàn)的。

CREATE[ORREPLACE]RULEnameASONevent

TOtable[WHEREcondition]

DO[ALSO|INSTEAD]{NOTHING|command|(command;command...)}其中,WHEREcondition是規(guī)則條件,它是一個(gè)限制,告訴規(guī)則動(dòng)作什么時(shí)候做、什么時(shí)候不做。這個(gè)條件只能引用NEW和/或OLD偽關(guān)系,它們基本上代表作為對(duì)象給定的關(guān)系(但是有著特殊含義)。6.2.4數(shù)據(jù)完整性的實(shí)施第6章規(guī)則-示例2CREATETABLEshoelace_log(

sl_nametext,--改變的鞋帶

sl_availinteger,--新的可用值

log_whotext,--誰(shuí)做的

log_whentimestamp--何時(shí)做的

);【例6-9】跟蹤shoelace_data關(guān)系中的sl_avail列。建立一個(gè)日志表和一條規(guī)則,這條規(guī)則每次在shoelace_data上執(zhí)行UPDATE時(shí)有條件地寫入一個(gè)日志項(xiàng)。CREATERULElog_shoelaceASONUPDATETOshoelace_data

WHERENEW.sl_avail<>OLD.sl_avail

DOINSERTINTOshoelace_logVALUES(

NEW.sl_name,

NEW.sl_avail,

current_user,

current_timestamp

);

事務(wù)存在的問(wèn)題6.3事務(wù)的并發(fā)控制和封鎖第6章為了充分利用數(shù)據(jù)庫(kù)資源,很多時(shí)候數(shù)據(jù)庫(kù)用戶都是對(duì)數(shù)據(jù)庫(kù)系統(tǒng)并行存取數(shù)據(jù),這樣就會(huì)發(fā)生多個(gè)用戶并發(fā)存取同一數(shù)據(jù)的情況,如果對(duì)并發(fā)操作不加控制可能會(huì)產(chǎn)生不正確的數(shù)據(jù),破壞數(shù)據(jù)的完整性。并發(fā)控制就是解決這類問(wèn)題,以保持?jǐn)?shù)據(jù)庫(kù)中數(shù)據(jù)的一致性,即在任何一個(gè)時(shí)刻數(shù)據(jù)庫(kù)都將以相同的形式給用戶提供數(shù)據(jù)。6.3.1

事務(wù)(定義、相關(guān)語(yǔ)句)6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.1

事務(wù)是數(shù)據(jù)庫(kù)系統(tǒng)中執(zhí)行的一個(gè)工作單位,它是由用戶定義的一組操作序列。一個(gè)事務(wù)可以是一組SQL語(yǔ)句、一條SQL語(yǔ)句或整個(gè)程序,一個(gè)應(yīng)用程序可以包括多個(gè)事務(wù)。定義事務(wù)的相關(guān)語(yǔ)句有三條:BEGIN

事務(wù)的開(kāi)始COMMIT

事務(wù)的提交ROLLBACK

事務(wù)的回滾

事務(wù)(特征:ACID)6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.1事務(wù)對(duì)數(shù)據(jù)庫(kù)的作用是數(shù)據(jù)庫(kù)從一個(gè)一致?tīng)顟B(tài)轉(zhuǎn)變到另一個(gè)一致?tīng)顟B(tài)。所謂數(shù)據(jù)庫(kù)的一致?tīng)顟B(tài)是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)滿足完整性約束。一致性(Consistency)如果多個(gè)事務(wù)并發(fā)地執(zhí)行,應(yīng)像各個(gè)事務(wù)獨(dú)立執(zhí)行一樣,一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及數(shù)據(jù)對(duì)其他事務(wù)是隔離的。隔離性(Isolation)持久性指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是持久的,即使數(shù)據(jù)庫(kù)因故障而受到破壞,DBMS也應(yīng)該能夠恢復(fù)。持續(xù)性(Durability)

一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)在執(zhí)行時(shí),應(yīng)該遵守“要么不做,要么全做”(NothingorAll)的原則,即不允許完成部分的事務(wù)。原子性(Atomicity)事務(wù)(并發(fā)的示例)6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.1在銀行業(yè)務(wù)中,“從帳號(hào)A轉(zhuǎn)移資金額R到帳號(hào)B”是一個(gè)典型的事務(wù),這個(gè)事務(wù)包括兩個(gè)操作,從帳號(hào)A中減去資金額R和在帳號(hào)B中增加資金額R,如果只執(zhí)行其中一個(gè)操作,則數(shù)據(jù)庫(kù)處于不一致?tīng)顟B(tài),帳務(wù)會(huì)出現(xiàn)問(wèn)題。也就是說(shuō),兩個(gè)操作要么全做,要么全不做,否則就不能成為事務(wù)。事務(wù)的一致性與原子性是密切相關(guān)的ACID事務(wù)(并發(fā)的示例)6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.1BEGINTRANSACTIONREADAA←A-RIFA<0/*A款不足*/THENBEGINDISPLAY“A款不足”

ROLLBACKENDELSE/*撥款*/BEGINB←B+RDISPLAY“撥款完成”

COMMITEND并發(fā)執(zhí)行與數(shù)據(jù)的不一致性6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.2(1)提高系統(tǒng)的資源利用率(2)減少事務(wù)的等待時(shí)間并發(fā)執(zhí)行的必要性(1)讀臟數(shù)據(jù)(DirtyRead)(2)不可重復(fù)讀(UnrepeatableRead)(3)丟失更新(LostUpdate)并發(fā)執(zhí)行的問(wèn)題當(dāng)同一數(shù)據(jù)庫(kù)系統(tǒng)中有多個(gè)事務(wù)并發(fā)運(yùn)行時(shí),如果不加以適當(dāng)控制,可能產(chǎn)生數(shù)據(jù)的不一致性。[例5-9]并發(fā)取款操作。假設(shè)存款余額R=1000元,甲事務(wù)T1取走存款100元,乙事務(wù)T2取走存款200元,如果正常操作,即甲事務(wù)T1執(zhí)行完畢再執(zhí)行乙事務(wù)T2,存款余額更新后應(yīng)該是700元。但是如果按照如下順序操作,則會(huì)有不同的結(jié)果:(1)甲事務(wù)T1讀取存款余額R=1000元;(2)乙事務(wù)T2讀取存款余額R=1000元;(3)甲事務(wù)T1取走存款100元,修改存款余額R=R-100=900,把R=900寫回到數(shù)據(jù)庫(kù);(4)乙事務(wù)T2取走存款200元,修改存款余額R=R-200=800,把R=800寫回到數(shù)據(jù)庫(kù);結(jié)果兩個(gè)事務(wù)共取走存款300元,而數(shù)據(jù)庫(kù)中的存款卻只少了200元。得到這種錯(cuò)誤的結(jié)果是由甲乙兩個(gè)事務(wù)并發(fā)操作引起的。6.2.4并發(fā)執(zhí)行與數(shù)據(jù)的不一致性第6章并發(fā)執(zhí)行的問(wèn)題-讀臟數(shù)據(jù)2

事務(wù)T1更新了數(shù)據(jù)R,事務(wù)T2讀取了更新后的數(shù)據(jù)R,事務(wù)T1由于某種原因被撤銷,修改無(wú)效,數(shù)據(jù)R恢復(fù)原值。事務(wù)T2得到的數(shù)據(jù)與數(shù)據(jù)庫(kù)的內(nèi)容不一致,這種情況稱為“污讀”。在右表中,事務(wù)T1把R的值改為900,但此時(shí)尚未做COMMIT操作,事務(wù)T2將修改過(guò)的值900讀出來(lái),之后事務(wù)T1執(zhí)行ROLLBACK操作,R的值恢復(fù)為1000,而事務(wù)T2將仍在使用已被撤消了的R值900。原因在于在t4時(shí)刻事務(wù)T2讀取了T1未提交的更新操作結(jié)果,這種值是不穩(wěn)定的,在事務(wù)T1結(jié)束前隨時(shí)可能執(zhí)行ROLLBACK操作。對(duì)于這些未提交的隨后又被撤消的更新數(shù)據(jù)稱為“臟數(shù)據(jù)”。比如,這里事務(wù)T2在t2時(shí)刻讀取的就是“臟數(shù)據(jù)”。6.2.4并發(fā)執(zhí)行與數(shù)據(jù)的不一致性第6章并發(fā)執(zhí)行的問(wèn)題-不可重復(fù)讀2事務(wù)T1讀取了數(shù)據(jù)R,事務(wù)T2讀取并更新了數(shù)據(jù)R,當(dāng)事務(wù)T1再讀取數(shù)據(jù)R以進(jìn)行核對(duì)時(shí),得到的兩次讀取值不一致,這種情況稱為“不可重讀”。在右表中,在t0時(shí)刻事務(wù)T1讀取R的值為1000,但事務(wù)T2在t4時(shí)刻將R的值更新為為800。所以T1所使用的值已經(jīng)與開(kāi)始讀取的值不一致。時(shí)間事務(wù)T1數(shù)據(jù)庫(kù)中R的值事務(wù)T2t0

1000

t1FINDR

t2

FINDRt3

R=R-200t4

UPDATERt5

800

6.2.4并發(fā)執(zhí)行與數(shù)據(jù)的不一致性第6章并發(fā)執(zhí)行的問(wèn)題-丟失更新2在右表中,數(shù)據(jù)庫(kù)中R的初值是1000,事務(wù)T1包含三個(gè)操作::讀入R初值(FINDR);計(jì)算(R=R-100);更新R(UPDATER)。事務(wù)T2也包含三個(gè)操作:FINDR;計(jì)算(R=R-200);UPDATER。如果事務(wù)T1和T2順序執(zhí)行,則更新后,R的值是700。但如果T1和T2按照表7.1所示的并發(fā)執(zhí)行,R的值是800,得到錯(cuò)誤的結(jié)果,原因在于在t7時(shí)刻丟失了T1對(duì)數(shù)據(jù)庫(kù)的更新操作。因此,這個(gè)并發(fā)操作不正確。當(dāng)兩個(gè)事務(wù)T1和T2讀入同一數(shù)據(jù)做修改,并發(fā)執(zhí)行修改操作時(shí),T2把T1或T1把T2的修改結(jié)果覆蓋掉,造成了數(shù)據(jù)的丟失更新問(wèn)題,導(dǎo)致數(shù)據(jù)的不一致。6.2.4并發(fā)執(zhí)行與數(shù)據(jù)的不一致性第6章并發(fā)執(zhí)行的問(wèn)題-丟失更新2產(chǎn)生上述三類數(shù)據(jù)不一致性的主要原因就是并發(fā)操作破壞了事務(wù)的隔離性。并發(fā)控制就是要求DBMS提供并發(fā)控制功能以正確的方式高度并發(fā)事務(wù),避免并發(fā)事務(wù)之間的相互干擾造成數(shù)據(jù)的不一致性,保證數(shù)據(jù)庫(kù)的完整性。

封鎖和封鎖協(xié)議6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.3封鎖就是當(dāng)一個(gè)事務(wù)在對(duì)某個(gè)數(shù)據(jù)對(duì)象(可以是數(shù)據(jù)項(xiàng)、記錄、數(shù)據(jù)集以至整個(gè)數(shù)據(jù)庫(kù))進(jìn)行操作之前,必須獲得相應(yīng)的鎖,以保證數(shù)據(jù)操作的正確性和一致性。加鎖后事務(wù)T就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對(duì)象。封鎖是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)封鎖過(guò)程分為三個(gè)步驟:申請(qǐng)封鎖→獲得鎖

→釋放鎖。6.2.4封鎖和封鎖協(xié)議第6章封鎖的方式及相容矩陣1基本的封鎖類型有兩種:排他鎖和共享鎖。排他型封鎖(ExclusiveLock)排他型封鎖又稱寫封鎖,簡(jiǎn)稱為X封鎖,它采用的原理是禁止并發(fā)操作。當(dāng)事務(wù)T對(duì)某個(gè)數(shù)據(jù)對(duì)象R實(shí)現(xiàn)X封鎖后,其他事務(wù)要等T解除X封鎖以后,才能對(duì)R進(jìn)行封鎖。這就保證了其他事務(wù)在T釋放R上的鎖之前,不能再對(duì)R進(jìn)行操作。

共享封鎖(ShareLock)共享封鎖又稱讀封鎖,簡(jiǎn)稱為S鎖,它采用的原理是允許其他用戶對(duì)同一數(shù)據(jù)對(duì)象進(jìn)行查詢,但不能對(duì)該數(shù)據(jù)對(duì)象進(jìn)行修改。當(dāng)事務(wù)T對(duì)某個(gè)數(shù)據(jù)對(duì)象R實(shí)現(xiàn)S封鎖后,其他事務(wù)只能對(duì)R加S鎖,而不能加X(jué)鎖,直到T釋放R上的S鎖。這就保證了其他事務(wù)在T釋放R上的S鎖之前,只能讀取R,而不能再對(duì)R作任何修改。6.2.4封鎖和封鎖協(xié)議第6章封鎖的方式及相容矩陣1只有共享鎖和共享鎖是相容的,共享鎖與排他鎖以及排他鎖之間都是不相容的。因此,對(duì)一個(gè)數(shù)據(jù)項(xiàng),可以同時(shí)有多個(gè)共享鎖,此后事務(wù)的排他鎖申請(qǐng)必須等待,直到其他事務(wù)釋放了數(shù)據(jù)項(xiàng)上的共享鎖。事務(wù)通過(guò)SLOCK(A)指令申請(qǐng)數(shù)據(jù)項(xiàng)A的共享鎖,通過(guò)XLOCK(A)指令申請(qǐng)數(shù)據(jù)項(xiàng)A的排他鎖,通過(guò)UNLOCK(A)指令釋放數(shù)據(jù)項(xiàng)A的鎖。每個(gè)事務(wù)都要根據(jù)自己將要執(zhí)行的操作類型項(xiàng)鎖管理器申請(qǐng)適當(dāng)?shù)逆i。只有在鎖管理器授予所需鎖后,事務(wù)才能進(jìn)行相關(guān)操作。相容性矩陣6.2.4封鎖和封鎖協(xié)議第6章封鎖協(xié)議2封鎖可以保證合理地進(jìn)行并發(fā)控制,保證數(shù)據(jù)的一致性。在封鎖時(shí),要考慮一定的封鎖規(guī)則,例如,何時(shí)開(kāi)始封鎖、封鎖多長(zhǎng)時(shí)間、何時(shí)釋放等,這些封鎖規(guī)則稱為封鎖協(xié)議。對(duì)封鎖方式規(guī)定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議。封鎖協(xié)議在不同程度上對(duì)正確控制并發(fā)操作提供了一定的保證。上面講述過(guò)的并發(fā)操作所帶來(lái)的丟失更新、污讀和不可重讀等導(dǎo)致數(shù)據(jù)不一致性問(wèn)題,可以通過(guò)三級(jí)封鎖協(xié)議在不同程度上給予解決,下面介紹三級(jí)封鎖協(xié)議。6.2.4封鎖和封鎖協(xié)議第6章封鎖協(xié)議--一級(jí)封鎖協(xié)議2一級(jí)封鎖協(xié)議內(nèi)容:事務(wù)T在修改數(shù)據(jù)對(duì)象之前必須對(duì)其加X(jué)鎖,直到事務(wù)結(jié)束。具體地說(shuō),就是任何企圖更新記錄R的事務(wù)必須先執(zhí)行“XLOCKR”操作,以獲得對(duì)該記錄進(jìn)行尋址的能力并對(duì)它取得X封鎖。如果未獲準(zhǔn)“X封鎖”,那么這個(gè)事務(wù)進(jìn)入等待狀態(tài),一直到獲準(zhǔn)“X封鎖”,該事務(wù)才繼續(xù)做下去。該事務(wù)規(guī)定事務(wù)在更新記錄R時(shí)必須獲得排他性封鎖,使得兩個(gè)同時(shí)要求更新R的并行事務(wù)之一必須在一個(gè)事務(wù)更新操作執(zhí)行完成之后才能獲得X封鎖,這樣就避免了兩個(gè)事務(wù)讀到同一個(gè)R值而先后更新時(shí)所發(fā)生的丟失更新問(wèn)題。利用一級(jí)封鎖協(xié)議可以解決表中的數(shù)據(jù)丟失更新問(wèn)題,如下表所示。6.2.4封鎖和封鎖協(xié)議第6章封鎖協(xié)議--一級(jí)封鎖協(xié)議2新疆大學(xué)軟件學(xué)院事務(wù)T1先對(duì)R進(jìn)行X封鎖(XLOCK),事務(wù)T2執(zhí)行“XLOCKR”操作,未獲準(zhǔn)“X封鎖”,則進(jìn)入等待狀態(tài),直到事務(wù)T1更新R值以后,解除X封鎖操作(UNLOCKX)。此后事務(wù)T2再執(zhí)行“XLOCKR”操作,獲準(zhǔn)“X封鎖”,并對(duì)R值進(jìn)行更新(此時(shí)R已是事務(wù)T1更新過(guò)的值,R=900)。這樣就能得出正確的結(jié)果。

一級(jí)封鎖協(xié)議只有當(dāng)修改數(shù)據(jù)時(shí)才進(jìn)行加鎖,如果只是讀取數(shù)據(jù)并不加鎖,所以它不能防止“污讀”和“不可重讀”數(shù)據(jù)。6.2.4封鎖和封鎖協(xié)議第6章封鎖協(xié)議--二級(jí)封鎖協(xié)議2二級(jí)封鎖協(xié)議內(nèi)容:在一級(jí)封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后釋放S鎖。所以二級(jí)封鎖協(xié)議不但可以解決更新時(shí)所發(fā)生的數(shù)據(jù)丟失問(wèn)題,還可以進(jìn)一步防止“污讀”。利用二級(jí)封鎖協(xié)議可以解決數(shù)據(jù)“污讀”問(wèn)題,如下表所示。6.2.4封鎖和封鎖協(xié)議第6章封鎖協(xié)議--二級(jí)封鎖協(xié)議2新疆大學(xué)軟件學(xué)院事務(wù)T1先對(duì)R進(jìn)行X封鎖(XLOCK),把R的值改為900,但尚未提交。這時(shí)事務(wù)T2請(qǐng)求對(duì)數(shù)據(jù)R加S鎖,因?yàn)門1已對(duì)R加了X鎖,T2只能等待,直到事務(wù)T1釋放X鎖。之后事務(wù)T1因某種原因撤銷,數(shù)據(jù)R恢復(fù)原值1000,并釋放R上的X鎖。事務(wù)T2可對(duì)數(shù)據(jù)R加S鎖,讀取R=1000,得到了正確的結(jié)果,從而避免了事務(wù)T2讀取“臟數(shù)據(jù)”。時(shí)間事務(wù)T1數(shù)據(jù)庫(kù)中R的值事務(wù)T2t0XLOCKR1000

t1FINDR

t2R=R-100

t3UPDATER

t4

900SLOCKRt5ROLLBACK

WAITt6UNLOCKR1000SLOCKRt7

FINDRT8

UNLOCKS二級(jí)封鎖協(xié)議在讀取數(shù)據(jù)之后,立即釋放S鎖,所以它仍然不能防止“不可重讀”數(shù)據(jù)。6.2.4封鎖和封鎖協(xié)議第6章封鎖協(xié)議--三級(jí)封鎖協(xié)議2新疆大學(xué)軟件學(xué)院三級(jí)封鎖協(xié)議內(nèi)容:在一級(jí)封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后并不釋放S鎖,而直到事務(wù)T結(jié)束才釋放。所以三級(jí)封鎖協(xié)議除了可以防止更新丟失問(wèn)題和“污讀”數(shù)據(jù)外,還可進(jìn)一步防止不可重讀數(shù)據(jù),徹底解決了并發(fā)操作所帶來(lái)的三個(gè)不一致性問(wèn)題。利用三級(jí)封鎖協(xié)議可以解決表中的不可重讀問(wèn)題,如下表所示。6.2.4封鎖和封鎖協(xié)議第6章封鎖協(xié)議--三級(jí)封鎖協(xié)議2新疆大學(xué)軟件學(xué)院在表中,事務(wù)T1讀取R的值之前先對(duì)其加S鎖,這樣其他事務(wù)只能對(duì)R加S鎖,而不能加X(jué)鎖,即其他事務(wù)只能讀取R,而不能對(duì)R進(jìn)行修改。所以當(dāng)事務(wù)T2在t3時(shí)刻申請(qǐng)對(duì)R加X(jué)鎖時(shí)被拒絕,使其無(wú)法執(zhí)行修改操作,只能等待事務(wù)T1釋放R上的S鎖,這時(shí)事務(wù)T1再讀取數(shù)據(jù)R進(jìn)行核對(duì)時(shí),得到的值仍是1000,與開(kāi)始所讀取的數(shù)據(jù)是一致的,即可重讀。在事務(wù)T1釋放S鎖后,事務(wù)T2可以對(duì)R加X(jué)鎖,進(jìn)行更新操作,這樣便保證了數(shù)據(jù)的一致性。6.2.4封鎖和封鎖協(xié)議第6章封鎖協(xié)議--總結(jié)2新疆大學(xué)軟件學(xué)院通過(guò)三級(jí)封鎖協(xié)議在不同程度上給予解決:一級(jí)封鎖協(xié)議事務(wù)T在修改數(shù)據(jù)對(duì)象之前必須對(duì)其加X(jué)鎖,直到事務(wù)結(jié)束。二級(jí)封鎖協(xié)議在一級(jí)封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后釋放S鎖。三級(jí)封鎖協(xié)議在一級(jí)封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后并不釋放S鎖,而直到事務(wù)T結(jié)束才釋放。6.2.4封鎖和封鎖協(xié)議第6章封鎖協(xié)議--拓展&思考2新疆大學(xué)軟件學(xué)院封鎖粒度指封鎖的單位。

多大比較合適???根據(jù)對(duì)數(shù)據(jù)的不同處理,封鎖的對(duì)象可以是這樣一些邏輯單元:字段、記錄、表、數(shù)據(jù)庫(kù)等,封鎖的數(shù)據(jù)對(duì)象的大小叫封鎖粒度。封鎖粒度越小,系統(tǒng)中能夠被封鎖的對(duì)象就越多,并發(fā)度越高,但封鎖機(jī)構(gòu)復(fù)雜,系統(tǒng)開(kāi)銷也就越大。封鎖粒度越大,系統(tǒng)中能夠被封鎖的對(duì)象就越少,并發(fā)度越低,封鎖機(jī)構(gòu)越簡(jiǎn)單,相應(yīng)系統(tǒng)開(kāi)銷也就越小。

活鎖和死鎖6.3事務(wù)的并發(fā)控制和封鎖第6章6.3.4(1)活鎖(Livelock)當(dāng)某個(gè)事務(wù)請(qǐng)求對(duì)某一數(shù)據(jù)進(jìn)行排他性封鎖時(shí),由于其他事務(wù)對(duì)該數(shù)據(jù)的操作而使這個(gè)事務(wù)處于永久等待狀態(tài),這種狀態(tài)稱為活鎖。封鎖技術(shù)可有效解決并行操作的一致性問(wèn)題,但也可產(chǎn)生新的問(wèn)題,即活鎖和死鎖問(wèn)題。6.3.4活鎖和死鎖第6章活鎖及或活鎖的避免1

活鎖如左表5.11所示。事務(wù)T1在對(duì)數(shù)據(jù)R封鎖后,事務(wù)T2又請(qǐng)求封鎖R,于是T2等待。T3也請(qǐng)求封鎖R。當(dāng)T1釋放了R上的封鎖后首先批準(zhǔn)了T3的請(qǐng)求,T2繼續(xù)等待。然后又有又T4請(qǐng)求封鎖R,T3釋放了R上的封鎖后又批準(zhǔn)了T4的請(qǐng)求……T2可能長(zhǎng)久處于等待狀態(tài),從而發(fā)生了活鎖。避免活鎖的簡(jiǎn)單方法是采用先來(lái)先服務(wù)的策略,按照請(qǐng)求封鎖的次序?qū)κ聞?wù)排隊(duì),一旦記錄上的鎖釋放,就使申請(qǐng)隊(duì)列中的第一個(gè)事務(wù)獲得鎖。有關(guān)活鎖的問(wèn)題不再詳細(xì)討論,因?yàn)樗梨i的問(wèn)題較為常見(jiàn),這里主要討論有關(guān)死鎖的問(wèn)題。6.3.4活鎖和死鎖第6章死鎖的出現(xiàn)2死鎖(Deadlock)在同時(shí)處于等待狀態(tài)的兩個(gè)或多個(gè)事務(wù)中,其中的每一個(gè)在它能夠進(jìn)行之前,都等待著某個(gè)數(shù)據(jù),而這個(gè)數(shù)據(jù)已被它們中的某個(gè)事務(wù)所封鎖,這種狀態(tài)稱為死鎖。時(shí)間事務(wù)T1事務(wù)T2t0LOCKR1

t1

LOCKR2t2

…t3LOCKR2

t4WAIT

t5WAITLOCKR1t6WAITWAITt7WAITWAIT例如,事務(wù)T1在對(duì)數(shù)據(jù)R1封鎖后,又要求對(duì)數(shù)據(jù)R2封鎖,而事務(wù)T2已獲得對(duì)數(shù)據(jù)R2的封鎖,又要求對(duì)數(shù)據(jù)R1封鎖,這樣兩個(gè)事務(wù)由于都不能得到封鎖而處于等待狀態(tài),發(fā)生了死鎖。如左表所示。6.3.4活鎖和死鎖第6章死鎖產(chǎn)生的條件2互斥條件:一個(gè)數(shù)據(jù)對(duì)象一次只能被一個(gè)事務(wù)所使用,即對(duì)數(shù)據(jù)的封鎖采用排他式。不可搶占條件:一個(gè)數(shù)據(jù)對(duì)象只能被占有它的事務(wù)所釋放,而不能被別的事務(wù)強(qiáng)行搶占。部分分配條件:一個(gè)事務(wù)已經(jīng)封鎖分給它的數(shù)據(jù)對(duì)象,但仍然要求封鎖其他數(shù)據(jù)。循環(huán)等待條件:允許等待其他事務(wù)釋放數(shù)據(jù)對(duì)象,系統(tǒng)處于加鎖請(qǐng)求相互等待的狀態(tài)。6.3.4活鎖和死鎖第6章死鎖的預(yù)防2

①一次加鎖法:一次加鎖法是每個(gè)事物必須將所有要使用的數(shù)據(jù)對(duì)象全部一次加鎖,并要求加鎖成功,只要一個(gè)加鎖不成功,表示本次加鎖失敗,則應(yīng)該立即釋放所有加鎖成功的數(shù)據(jù)對(duì)象,然后重新開(kāi)始加鎖。死鎖一旦發(fā)生,系統(tǒng)效率將會(huì)大大下降,因而要盡量避免死鎖的發(fā)生。同操作系統(tǒng)預(yù)防死鎖的方法類似,在數(shù)據(jù)庫(kù)環(huán)境下,常用的方法有以下兩種:6.3.4活鎖和死鎖第6章死鎖的預(yù)防--一次加鎖法2

一次加鎖法程序框圖

一次加鎖法是每個(gè)事物必須將所有要使用的數(shù)據(jù)對(duì)象全部依次加鎖,并要求加鎖成功,只要一個(gè)加鎖不成功,表示本次加鎖失敗,則應(yīng)該立即釋放所有已加鎖成功的數(shù)據(jù)對(duì)象,然后重新開(kāi)始從頭加鎖。一次加鎖法的程序框圖如圖所示。6.3.4活鎖和死鎖第6章死鎖的預(yù)防--一次加鎖法2一次加鎖法雖然可以有效地預(yù)防死鎖的發(fā)生,但也存在一些問(wèn)題。首先,對(duì)某一事務(wù)所要使用的全部數(shù)據(jù)一次性加鎖,擴(kuò)大了封鎖的范圍,從而降低了系統(tǒng)的并發(fā)度。其次,數(shù)據(jù)庫(kù)中的數(shù)據(jù)是不斷變化的,原來(lái)不要求封鎖的數(shù)據(jù),在執(zhí)行過(guò)程中可能會(huì)變成封鎖對(duì)象,所以很難事先精確地確定每個(gè)事務(wù)所要封鎖的數(shù)據(jù)對(duì)象,這樣只能在開(kāi)始擴(kuò)大封鎖范圍,將可能要封鎖的數(shù)據(jù)全部加鎖,這就進(jìn)一步降低了并發(fā)度,影響了系統(tǒng)的運(yùn)行效率。6.3.4活鎖和死鎖第6章死鎖的預(yù)防--順序加鎖法2②順序加鎖法:預(yù)先對(duì)所有可加鎖的數(shù)據(jù)對(duì)象規(guī)定一個(gè)加鎖順序,每個(gè)事務(wù)都需要按此順序加鎖,在釋放時(shí),按逆序進(jìn)行。順序加鎖法同一次加鎖法一樣,也存在一些問(wèn)題。因?yàn)槭聞?wù)的封鎖請(qǐng)求可以隨著事務(wù)的執(zhí)行而動(dòng)態(tài)地決定,所以很難事先確定封鎖對(duì)象,從而更難確定封鎖順序。即使確定了封鎖順序,隨著數(shù)據(jù)操作的不斷變化,維護(hù)這些數(shù)據(jù)的封鎖順序要需要很大的系統(tǒng)開(kāi)銷。6.3.4活鎖和死鎖第6章死鎖的檢測(cè)2新疆大學(xué)軟件學(xué)院數(shù)據(jù)庫(kù)系統(tǒng)中檢測(cè)死鎖的方法與操作系統(tǒng)類似??梢岳檬聞?wù)依賴圖的形式來(lái)測(cè)試系統(tǒng)中是否存在死鎖。例如,在下圖(中)里,事務(wù)T1需要數(shù)據(jù)R,但R已經(jīng)被事務(wù)T2封鎖,那么從T1到T2劃一個(gè)箭頭。如果在事務(wù)依賴圖中沿著箭頭方向存在一個(gè)循環(huán),那么死鎖的條件就形成了,系統(tǒng)就會(huì)出現(xiàn)死鎖。數(shù)據(jù)RT1T2

事務(wù)依賴圖6.3.4活鎖和死鎖第6章死鎖的恢復(fù)/解除2如果已經(jīng)發(fā)現(xiàn)死鎖,DBA從依賴相同資源的事務(wù)中抽出某個(gè)事務(wù)作為犧牲品,將它撤銷,解除它的所有封鎖,釋放此事務(wù)占用的所有數(shù)據(jù)資源,分配給其他事務(wù),使其他事務(wù)得以繼續(xù)運(yùn)行下去,這樣就有可能消除死鎖。在解除死鎖的過(guò)程中,抽取犧牲事務(wù)的標(biāo)準(zhǔn)是根據(jù)系統(tǒng)狀態(tài)及其應(yīng)用的實(shí)際情況來(lái)確定的,通常采用的方法之一是選擇一個(gè)處理死鎖代價(jià)最小的事務(wù),將其撤銷。不重要的用戶,取消其操作,釋放封鎖的數(shù)據(jù),恢復(fù)對(duì)數(shù)據(jù)庫(kù)所作的改變。新疆大學(xué)軟件學(xué)院封鎖粒度指封鎖的單位。

多大比較合適???根據(jù)對(duì)數(shù)據(jù)的不同處理,封鎖的對(duì)象可以是這樣一些邏輯單元:字段、記錄、表、數(shù)據(jù)庫(kù)等,封鎖的數(shù)據(jù)對(duì)象的大小叫封鎖粒度。封鎖粒度越小,系統(tǒng)中能夠被封鎖的對(duì)象就越多,并發(fā)度越高,但封鎖機(jī)構(gòu)復(fù)雜,系統(tǒng)開(kāi)銷也就越大。封鎖粒度越大,系統(tǒng)中能夠被封鎖的對(duì)象就越少,并發(fā)度越低,封鎖機(jī)構(gòu)越簡(jiǎn)單,相應(yīng)系統(tǒng)開(kāi)銷也就越小。6.3.4活鎖和死鎖第6章封鎖的粒度36.4數(shù)據(jù)庫(kù)的備份和還原第6章雖然數(shù)據(jù)庫(kù)系統(tǒng)中已采取一定的措施,來(lái)防止數(shù)據(jù)庫(kù)的安全性和完整性的破壞,保證并發(fā)事務(wù)的正確執(zhí)行。但數(shù)據(jù)庫(kù)中的數(shù)據(jù)仍然無(wú)法保證絕對(duì)不遭受破壞,比如計(jì)算機(jī)系統(tǒng)中硬件的故障、軟件的的錯(cuò)誤,操作員的失誤,惡意的破壞等都有可能發(fā)生,這些故障的發(fā)生影響數(shù)據(jù)庫(kù)數(shù)據(jù)的正確性,甚至可能破壞數(shù)據(jù)庫(kù),使數(shù)據(jù)庫(kù)中的數(shù)據(jù)全部或部分丟失。因此,系統(tǒng)必須具有檢測(cè)故障并把數(shù)據(jù)從錯(cuò)誤狀態(tài)中恢復(fù)(還原)到某一正確狀態(tài)(備份)的功能,這就是數(shù)據(jù)庫(kù)的恢復(fù)。課程導(dǎo)入

數(shù)據(jù)庫(kù)備份和還原概述6.4數(shù)據(jù)庫(kù)的備份和還原第6章6.4.1數(shù)據(jù)庫(kù)備份記錄了在進(jìn)行數(shù)據(jù)庫(kù)備份操作時(shí)的所有數(shù)據(jù)狀態(tài)。在KingbaseES中,數(shù)據(jù)庫(kù)需要備份的內(nèi)容包括控制文件、數(shù)據(jù)文件和REDO日志文件。備份是指對(duì)數(shù)據(jù)庫(kù)部分或全部?jī)?nèi)容進(jìn)行處理,生成一個(gè)副本的過(guò)程。還原就是把遭受破壞、丟失的數(shù)據(jù)或出現(xiàn)錯(cuò)誤的數(shù)據(jù)庫(kù)還原到原來(lái)的正常狀態(tài)。

備份--備份的分類6.4.1數(shù)據(jù)庫(kù)備份和還原概述第6章1數(shù)據(jù)庫(kù)完整備份

事務(wù)日志備份差異備份文件和文件組備份數(shù)據(jù)庫(kù)備份是指對(duì)數(shù)據(jù)庫(kù)內(nèi)的所有對(duì)象都進(jìn)行備份事務(wù)日志備份只備份數(shù)據(jù)庫(kù)的事務(wù)日志內(nèi)容。是完整備份的補(bǔ)充,只備份自從上次數(shù)據(jù)庫(kù)完整備份后數(shù)據(jù)庫(kù)變動(dòng)的部分。是針對(duì)單一數(shù)據(jù)庫(kù)文件或者是文件組做備份

還原與恢復(fù)6.4.1數(shù)據(jù)庫(kù)備份和還原概述第6章2簡(jiǎn)單還原SimpleRecovery完全還原FullRecovery大容量日志記錄還原Bulk-LoggedRecovery簡(jiǎn)單還原模式可以將數(shù)據(jù)庫(kù)還原到上次備份處,但是無(wú)法將數(shù)據(jù)庫(kù)還原到故障點(diǎn)或待定的某時(shí)刻。完全還原模式使用數(shù)據(jù)庫(kù)的完全備份和事務(wù)日志備份將數(shù)據(jù)庫(kù)還原到故障點(diǎn)或特定的時(shí)間點(diǎn)。大容量日志記錄還原模式為某些大規(guī)?;虼笕萘繌?fù)制操作提供最佳性能和最少日志使用空間。

備份策略6.4.1數(shù)據(jù)庫(kù)備份和還原概述第6章3應(yīng)定期進(jìn)行數(shù)據(jù)轉(zhuǎn)儲(chǔ),制作后備副本。但轉(zhuǎn)儲(chǔ)又是十分耗費(fèi)時(shí)間和資源的,不能頻繁進(jìn)行。DBA應(yīng)該根據(jù)數(shù)據(jù)庫(kù)使用情況確定適當(dāng)?shù)霓D(zhuǎn)儲(chǔ)周期和轉(zhuǎn)儲(chǔ)方法例:

溫馨提示

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