版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第六章數(shù)據(jù)庫保護1事務(wù)數(shù)據(jù)庫恢復(fù)并發(fā)控制數(shù)據(jù)庫安全性數(shù)據(jù)庫完整性主要內(nèi)容26.1事務(wù)事務(wù):是一個不可分割的操作序列,該操作序列要么全做,要么全不做。事務(wù)和程序是兩個概念。一個程序中可以包含多個事務(wù)。3隱式控制:由DBMS按缺省規(guī)定自動劃分。顯式控制:
BEGINTRANSACTION
[事務(wù)開始]
COMMIT
[事務(wù)提交,重新改寫數(shù)據(jù)庫]
ROLLBACK
[事務(wù)提交,發(fā)生錯誤撤消]一、事務(wù)的概念4BEGINTRANSACTIONINSERTINTOS(S#,Sname,Sage,Sdept)VALUES(‘10002’,’李娜’,18,‘計算機’)COMMIT5BEGINTRANSACTION
讀賬戶甲的余額Balance;Balance=Balance-AmountIf(Balance<0)Then{打印’金額不足,不能轉(zhuǎn)賬’;Rollback;Else{讀賬戶乙的余額Balance1;Balance1=Balance1+Amount;
寫回Balance1;commint;}6原子性(Atomicity)
事務(wù)是不可分割的工作單位一致性(Consistency)事務(wù)提交后,數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。隔離性(Isolation)在事務(wù)完成之前,它對數(shù)據(jù)庫產(chǎn)生的結(jié)果不能被其它事務(wù)引用。持續(xù)性(Durability)一旦事務(wù)執(zhí)行成功(提交),其對數(shù)據(jù)產(chǎn)生的效果永久有效。
二、事務(wù)的特性(ACID)7破壞ACID特性的因素(1)多個事務(wù)并行運行時,不同事務(wù)交叉執(zhí)行(2)事務(wù)在運行過程中被強行停止。8丟失修改不可重復(fù)讀讀“臟”數(shù)據(jù)并發(fā)操作引起的問題9丟失修改10不可重復(fù)讀11讀臟數(shù)據(jù)事務(wù)T1事務(wù)T2
讀出C=100C=C*2WRITE(C)
讀出C=200
ROLLBACKC恢復(fù)為100126.2
數(shù)據(jù)庫恢復(fù)數(shù)據(jù)庫的恢復(fù):
把數(shù)據(jù)庫從錯誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)。3.介質(zhì)故障4.計算機病毒6.2.1故障的類型1.事務(wù)故障2.系統(tǒng)故障軟故障硬故障131.事務(wù)故障
是事務(wù)內(nèi)部的故障(不需要重新啟動系統(tǒng))。預(yù)期故障:通過在程序中加判斷條件來實現(xiàn)非預(yù)期的故障:如由于死鎖而被迫撤銷的事務(wù)等142.系統(tǒng)故障(需要系統(tǒng)重新啟動)故障類型:硬件錯誤、操作系統(tǒng)故障、DBMS代碼錯誤、突然停電等。特點:故障影響正在運行的所有事務(wù),但不破壞數(shù)據(jù)庫??赡軙斐蓴?shù)據(jù)庫中數(shù)據(jù)的不一致性。其原因:故障發(fā)生時,尚未完成的事務(wù)的結(jié)果可能已送入到物理數(shù)據(jù)庫。故障發(fā)生時,有些已完成的事務(wù)所做的數(shù)據(jù)更改還在緩沖區(qū)中,尚未寫到物理數(shù)據(jù)庫中。153.介質(zhì)故障
是指存儲數(shù)據(jù)庫的磁盤發(fā)生故障。原因:可能是磁盤損壞、磁頭碰撞、瞬時強磁場干擾等。特點:使數(shù)據(jù)庫受到破環(huán)。雖然可能性小,但破壞性最大。4.計算機病毒人為的故障或破壞,是一些惡作劇者研制的一種計算機程序。166.2.2數(shù)據(jù)庫恢復(fù)的實現(xiàn)技術(shù)兩個關(guān)鍵問題:
1如何建立冗余數(shù)據(jù)
2如何利用這些冗余數(shù)據(jù)實施數(shù)據(jù)庫恢復(fù)冗余技術(shù)171.通過數(shù)據(jù)轉(zhuǎn)儲建立冗余轉(zhuǎn)儲:定期將DB復(fù)制到其它外存保存(副本)轉(zhuǎn)儲類型:
靜態(tài)轉(zhuǎn)儲
能保證副本與數(shù)據(jù)庫的一致性;但是效率太低。
動態(tài)轉(zhuǎn)儲
效率高,但不能保證副本與數(shù)據(jù)庫的一致性。轉(zhuǎn)儲運行事務(wù)故障發(fā)生點TaTb轉(zhuǎn)儲恢復(fù)重新運行事務(wù)裝入后備副本18轉(zhuǎn)儲方式海量轉(zhuǎn)儲:每次轉(zhuǎn)儲數(shù)據(jù)庫中的全部數(shù)據(jù)增量轉(zhuǎn)儲:每次轉(zhuǎn)儲上一次轉(zhuǎn)儲后更新過的數(shù)據(jù)
轉(zhuǎn)儲狀態(tài)動態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲
轉(zhuǎn)儲方式海量轉(zhuǎn)儲動態(tài)海量轉(zhuǎn)儲靜態(tài)海量轉(zhuǎn)儲增量轉(zhuǎn)儲動態(tài)增量轉(zhuǎn)儲靜態(tài)增量轉(zhuǎn)儲192.通過日志文件建立冗余日志文件記錄對數(shù)據(jù)庫每次更新活動的文件。每次更新活動的內(nèi)容作為一個“記錄”寫入日志文件。主要內(nèi)容包括:事務(wù)標識(標明是哪個事務(wù))操作類型及對象(插入、刪除、修改,記錄內(nèi)部標識)更新前后的值20事務(wù)標識操作類型對象標識前像后像日志文件的格式
事務(wù)T開始,日志記錄為(T,START…)事務(wù)T修改對象A,日志記錄為(T,UPDATE,A,前像,后
像)
事務(wù)T插入對象A,日志記錄為(T,INSERT,A,后像)
事務(wù)T刪除對象A,日志記錄為(T,DELETE,A,前像)
事務(wù)T提交,日志記錄為(T,COMMIT…)
事務(wù)T回滾,日志記錄為(T,ROLLBACK…)21日志文件的作用事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù)必須用日志文件正常運行運行事務(wù)登記日志文件TaTb轉(zhuǎn)儲介質(zhì)故障利用日志文件恢復(fù)TaTb重裝后備副本在動態(tài)轉(zhuǎn)儲方式中必須建立日志文件,后備副本和日志文件結(jié)合才能有效恢復(fù)數(shù)據(jù)庫在靜態(tài)轉(zhuǎn)儲方式中,也可以建立日志文件22登記日志文件要遵循兩條原則:
登記的次序必須嚴格按照并發(fā)事務(wù)執(zhí)行的次序
必須先寫日志,后寫數(shù)據(jù)庫,并且日志文件和數(shù)據(jù)庫文件不能和數(shù)據(jù)庫文件放在同一個磁盤上。236.2.3.事務(wù)恢復(fù)策略1.事務(wù)故障的恢復(fù)恢復(fù)策略:反向掃描日志文件,將日志中更新前的數(shù)據(jù)寫回到數(shù)據(jù)庫中,直至事務(wù)的開始標志。事務(wù)T修改對象A,日志記錄為(T,UPDATE,A,前像,后像)
事務(wù)T插入對象A,日志記錄為(T,INSERT,A,后像)
事務(wù)T刪除對象A,日志記錄為(T,DELETE,A,前像246.2.3.事務(wù)恢復(fù)策略2、系統(tǒng)故障的恢復(fù)恢復(fù)策略:撤銷故障發(fā)生時未完成的事務(wù),重做已完成的事務(wù)。方法:(1)正向掃描日志文件;找出故障發(fā)生前已經(jīng)提交的事務(wù),將該事務(wù)放入REDO隊列;找出故障發(fā)生前未提交的事務(wù),將其放入UNDO隊列。(2)對UNDO隊列做撤銷操作(3)對REDO隊列做重做操作253、介質(zhì)故障的恢復(fù)恢復(fù)策略:利用數(shù)據(jù)庫副本和日志文件副本進行恢復(fù)。(需要DBA介入)6.2.3.事務(wù)恢復(fù)策略正常運行運行事務(wù)登記日志文件TaTb轉(zhuǎn)儲介質(zhì)故障利用日志文件恢復(fù)TaTb重裝后備副本266.2.4具有檢查點的恢復(fù)策略Ci檢查點記錄地址T1D1T2D2重新開始文件日志文件檢查點記錄日志文件27具有檢查點時,動態(tài)維護數(shù)據(jù)庫日志的方法
將當前日志緩沖區(qū)中的日志記錄寫入磁盤的日志文件
在日志文件中加入一個檢查點記錄
將當前數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫
將檢查點記錄在日志文件中的地址寫入重新開始文件28Tc(檢查點)Tf(系統(tǒng)故障)T1T2T3T4T5REDOREDOUNDOUNDO29系統(tǒng)使用檢查點進行恢復(fù)的步驟
從重新開始文件中找到最后一個檢查點記錄在日志文件中的地址,找到最后一個檢查點
由該檢查點找到檢查點建立時刻所有的動態(tài)事務(wù)清單
從檢查點正向掃描日志文件
如有新開始的事務(wù),放入UNDO隊列
如有提交的事務(wù),將該事務(wù)從UNDO放入REDO隊列
執(zhí)行UNDO和REDO處理3031本次課程總結(jié)1.事務(wù)的概念,ACID特性2.數(shù)據(jù)庫恢復(fù),故障類型3.數(shù)據(jù)庫恢復(fù)技術(shù),轉(zhuǎn)儲和日志4.數(shù)據(jù)庫恢復(fù)策略32上次課程回顧1.事務(wù)的概念,ACID特性2.數(shù)據(jù)庫恢復(fù),故障類型3.數(shù)據(jù)庫恢復(fù)技術(shù),轉(zhuǎn)儲和日志4.數(shù)據(jù)庫恢復(fù)策略6.3并發(fā)控制丟失修改不可重復(fù)讀讀“臟”數(shù)據(jù)6.3.1并發(fā)操作引發(fā)的問題33丟失修改34不可重復(fù)讀35三種不可重復(fù)讀讀不一致T1讀A,T2修改A,T1讀A刪除幻影T1讀取元組集合A,T2刪除部分元組,T1讀取元組集合A插入幻影T1讀取元組集合A,T2插入一些元組,T1讀取元組集合A不可重復(fù)讀讀臟數(shù)據(jù)事務(wù)T1事務(wù)T2
讀出C=100C=C*2WRITE(C)
讀出C=200
ROLLBACKC恢復(fù)為10037并發(fā)控制的任務(wù)2.保證事務(wù)的隔離性3.保證事務(wù)的一致性1.對并發(fā)操作進行正確調(diào)度思考:事務(wù)的原子性和持久性由DBMS的哪個子系統(tǒng)進行維護?386.3.2調(diào)度及其可串行化1、事務(wù)的表示方法:
Ri(X)表示事務(wù)Ti的讀X操作
Wi(X)表示事務(wù)Ti的寫X操作例:
事務(wù)T1(Read(B);A=B+1;write(A)),事務(wù)T2(Read(A);B=A+1;write(B))可以表示成:
T1:R1(B)W1(A)T2:R2(A)W2(B)392、沖突操作定義:如果兩個操作來自不同的事務(wù),它們對同一數(shù)據(jù)單位進行操作,并且其中至少有一個是寫操作,則稱這兩個操作是相互沖突的或沖突操作。例:事務(wù)T0:W0(X)W0(Y)W0(Z)
事務(wù)T1:R1(X)R1(Z)W1(X)
在這兩個事務(wù)中有哪些沖突操作?R1(X)與W0(X)
W1(X)與W0(X)R1(Z)與W0(Z)403串行調(diào)度調(diào)度S中的任意兩個事務(wù)Ti和Tj,如果Ti的所有操作都先于Tj的所有操作,或者相反,則稱S為串行調(diào)度。串行調(diào)度事務(wù)執(zhí)行的結(jié)果總是正確的.串行調(diào)度不能夠充分利用系統(tǒng)資源.414并發(fā)調(diào)度如果在一個調(diào)度中,各個事務(wù)交叉地執(zhí)行,這個調(diào)度稱為并發(fā)調(diào)度。5可串行化的調(diào)度如果一個事務(wù)集的并發(fā)調(diào)度與某一串行調(diào)度是等價的,則稱該并發(fā)調(diào)度是可串行化的??纱谢亲鳛椴l(fā)調(diào)度正確與否的判定準則!42T1T2Read(A)A:=A-5Write(A)Read(B)B:=B+5Write(B)Read(B)B:=B-5Write(B)串行調(diào)度1T1T2Read(A)A:=A-5Write(A)Read(B)B:=B+5Write(B)Read(B)B:=B-5Write(B)串行調(diào)度2Read(A)Read(B)B:=B-5A:=A-5Write(A)Write(B)Read(B)B:=B+5Write(B)并發(fā)調(diào)度1Read(A)Read(B)B:=B-5A:=A-5Write(A)Write(B)Read(B)并發(fā)調(diào)度2B:=B+5Write(B)A=10B=10A=5B=10A=5B=10A=5B=10A=5B=15436沖突可串行化一個調(diào)度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務(wù)不沖突操作的次序得到另一個調(diào)度Sc’,如果Sc’是串行的稱調(diào)度Sc為沖突可串行化調(diào)度。一個調(diào)度是沖突可串行化的,一定是可串行化調(diào)度,反之則不成立!44調(diào)度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)判斷Sc1是否是沖突可串行化的調(diào)度。首先把w2(A)和r1(B)w1(B)交換,得到r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)再把r2(A)和r1(B)w1(B)交換,得到Sc2=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等價于串行調(diào)度T1T2,所以Sc1是沖突可串行化的例題45沖突可串行化的判定方法:構(gòu)造前驅(qū)圖設(shè)S是若干事務(wù){(diào)T1,T2,…,Tn}的一個調(diào)度,S的前驅(qū)圖G(V,E)是一個有向圖,其構(gòu)成規(guī)則如下:1)V是由所有參加調(diào)度的事務(wù)構(gòu)成的節(jié)點2)E是圖中的一條有向邊,如果Oi和Oj是沖突操作,且Oi先于Oj執(zhí)行,則在圖中有一條邊Ti→Tj。
事務(wù)Ti讀x在事務(wù)Tj寫x之前
事務(wù)Ti寫x在事務(wù)Tj讀x之前
事務(wù)Ti寫x在事務(wù)Tj寫x之前若一個調(diào)度的前趨圖無環(huán),則該調(diào)度是調(diào)度可串行化的46T4T2T1T3T1T2T4Read(x)Read(y)Write(y)Write(x)Write(x)Write(z)Read(z)Write(x)一個并發(fā)調(diào)度ST3例題47獲得調(diào)度S的一個等價的串行調(diào)度由于圖中無回路,必有一個節(jié)點無入弧,將這個節(jié)點及其相連的弧刪去,并把該節(jié)點存入先進先出的隊列中。對剩下的圖做同樣的處理,直至所有節(jié)點移入隊列中。按照隊列中次序串行安排各事務(wù)的執(zhí)行,就可以得到一個等價的串行調(diào)度前驅(qū)圖的拓撲排序48T4T2T1T3T1T2T4Read(x)Read(y)Write(y)Write(x)Write(x)Write(z)Read(z)Write(x)一個并發(fā)調(diào)度ST3T1T2T3T4T3T2T4T2T449有3個事務(wù)的一個調(diào)度R3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)該調(diào)度是沖突可串行化的么?練習(xí)1交換r1(A)和w3(B)r2(B)r2(A)w2(B)R3(B)w3(B)r2(B)r2(A)w2(B)r1(A)r1(B)w1(A)等價于串行調(diào)度T3T2T150有3個事務(wù)的一個調(diào)度R3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)該調(diào)度是沖突可串行化的么?練習(xí)1(1)找出沖突操作R2(A)和w1(A)R3(B)和w2(B)T2T1T3T2W3(B)和r2(B)W3(B)和w2(B)W3(B)和r1(B)W2(B)和r1(B)T3T2T3T2T3T1T2T151(2)得到并發(fā)操作的前趨圖T2T1T3(3)由前趨圖判斷是否可串行化,若可串行化,給出等價的串行化調(diào)度T3T2T152沖突可串行化調(diào)度是可串行化調(diào)度的充分條件,不是必要條件!調(diào)度L1=W1(Y)W1(X)W2(Y)W2(X)W3(X)調(diào)度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)53設(shè)T1,T2是如下的兩個事務(wù)
T1:A:=A*B+2 T2:B:=A*2設(shè)A的初值為2,B的初值為4:(1)若這兩個事務(wù)允許并發(fā)執(zhí)行,討論他們可能實施的調(diào)度,請一一列舉并求每種調(diào)度的結(jié)果(2)試給出一個可串行化調(diào)度,并給出執(zhí)行結(jié)果練習(xí)254(1)所有的串行調(diào)度習(xí)題2T1T2T2T1T1:A:=A*B+2T2:B:=A*2設(shè)A的初值為2,B的初值為4A=10,B=20A=10,B=4(2)試給出一個可串行化調(diào)度,并給出執(zhí)行結(jié)果5556調(diào)整次序注意:(1)不能改變沖突操作的先后次序(2)同一事務(wù)的讀寫先后順序不能改變T1T2:R1(A)R1(B)W1(A)R2(A)W2(B)無法改變順序T2T1:R2(A)W2(B)R1(A)R1(B)W1(A)可串行化調(diào)度:R2(A)
R1(A)W2(B)R1(B)W1(A)576.3.3事務(wù)的隔離性級別事務(wù)的隔離性事務(wù)在并發(fā)執(zhí)行時應(yīng)該相互獨立互不干擾。隔離性與并發(fā)性能是一對矛盾,在實踐中有時候會放松隔離性的要求,通過“隔離性級別”來權(quán)衡事務(wù)的隔離性和并發(fā)能力。事務(wù)的隔離性級別又稱事務(wù)的一致性級別,是一個事務(wù)必須與其它事務(wù)實現(xiàn)隔離的程度,是事務(wù)可接受的數(shù)據(jù)不一致程度。586.3.3事務(wù)的隔離性級別SQL92定義了四種隔離性級別讀未提交(Readuncommitted)最低的隔離級別,一個事務(wù)可以讀到另外一個事務(wù)未提交的數(shù)據(jù),不允許丟失修改,接受讀臟數(shù)據(jù)和不可重復(fù)讀現(xiàn)象。讀已提交(Readcommitted)若事務(wù)還沒提交,其他事務(wù)不能讀取該事務(wù)正在修改的數(shù)據(jù)。不允許丟失修改和讀臟數(shù)據(jù),接受不可重復(fù)讀現(xiàn)象??芍貜?fù)讀(Repeatableread)事務(wù)多次讀取同一數(shù)據(jù)對象的結(jié)果一致。不允許丟失修改、讀臟數(shù)據(jù)和讀不一致,接受幻影讀現(xiàn)象??纱谢⊿erializable)最高級別的隔離性,保證可串行化,不允許丟失修改、讀臟數(shù)據(jù)、讀不一致以及幻影讀現(xiàn)象的發(fā)生。6.3.4封鎖技術(shù)封鎖:是實現(xiàn)并發(fā)控制的一種機制。所謂封鎖,就是事務(wù)T在對某個數(shù)據(jù)對象操作之前,先對其加鎖。排它鎖(X鎖,寫鎖)若事務(wù)T對數(shù)據(jù)對象A加上排它鎖,則只允許T讀取和修改A,不允許其他任何事務(wù)再對A加鎖,直到T釋放A上的X鎖。2.共享鎖(S鎖,讀鎖)若事務(wù)T對數(shù)據(jù)對象A加上共享鎖,則事務(wù)T可以讀A但不能修改A,其他事務(wù)只能對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。。593.封鎖協(xié)議封鎖級別加鎖放鎖一級事務(wù)T在修改數(shù)據(jù)A之前必須先對其加X鎖事務(wù)結(jié)束才釋放X鎖二級一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)A之前必須對其加S鎖讀完后即可釋放S鎖三級一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)A之前必須對其加S鎖事務(wù)結(jié)束才釋放S鎖60(1)一級封鎖協(xié)議T1T2XlockA讀A=16XlockA等待等待A←A-1等待寫回A=15等待commit等待UnlockAXlockA讀A=15A←A-1寫回A=14commitUnlockAT1T2讀A=16A←A-1寫回A=15A←A-1讀A=16寫回A=15(a)丟失修改T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復(fù)讀讀B=100寫回B=200讀A=50求和=250讀B=200ROOLBACKT1T2讀C=100寫回C=200讀C=200D=C+5(c)讀臟數(shù)據(jù)寫回D=205C←C*2解決丟失修改問題61(2)二級封鎖協(xié)議ROOLBACKT1T2讀C=100寫回C=200讀C=200D=C+5(c)讀臟數(shù)據(jù)寫回D=205C←C*2解決丟失修改和讀臟數(shù)據(jù)問題ROOLBACKT1T2XlockCSlockC等待等待等待等待SlockCcommitUnlockC讀C=100寫回C=200C←C*2UnlockC讀C=200D=C+5寫回D=205T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復(fù)讀讀B=100寫回B=200讀A=50求和=250讀B=20062(3)三級封鎖協(xié)議T1T2讀A=50求和=150讀B=100B=B*2(b)不可重復(fù)讀讀B=100寫回B=200讀A=50求和=250讀B=200解決三種并發(fā)操作引起的問題讀A=50讀B=100求和=150讀A=50求和=150讀B=100T1T2SlockASlockBXlockB等待等待等待等待等待等待等待XlockB讀B=100B=B*2寫回B=200commitUnlockBUlockBUlockA63
操作級別X鎖S鎖一致性保證操作結(jié)束釋放事務(wù)結(jié)束釋放操作結(jié)束釋放事務(wù)結(jié)束釋放不丟失修改不讀臟數(shù)據(jù)可重復(fù)讀一級封鎖協(xié)議二級封鎖協(xié)議三級封鎖協(xié)議√√√√√√√√√√√64兩階段協(xié)議(Two-PhaseLockingProtocol,2PL協(xié)議)某一事務(wù)在對數(shù)據(jù)進行讀、寫之前,先要申請并獲得對該數(shù)據(jù)的封鎖。在釋放一個封鎖之后,事務(wù)不再申請和獲得任何其它封鎖。T1:Lock(A)Lock(B)Lock(C)Unlock(B)Ulock(C)Ulock(A)T1:Lock(A)ULock(A)Lock(B)lock(C)Ulock(C)Ulock(B)√ⅹ擴展階段釋放階段(4)兩階段協(xié)議65定理6.1:任何一個遵從2PL協(xié)議的調(diào)度都是可串行化的。說明1:事務(wù)遵守2PL協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件。說明2:事務(wù)遵守2PL協(xié)議可達到第3級封鎖協(xié)議的要求。66T1:Slock(X),Read(X),Ulock(X)T2:Slock(Y),Read(Y),Unlock(Y),Xlock(X),Write(X),Unlock(X)T3:Xlock(Y),Write(Y),Unlock(Y)T1T2Slock(X)Read(X)Ulock(X)Slock(Y)Read(Y)Ulock(Y)Slock(X)Write(X)Ulock(X)Slock(Y)write(Y)Ulock(Y)T3T1T2T3T1T2T3不遵守2PL協(xié)議的可串行化調(diào)度6768設(shè)T1,T2是如下的三個事務(wù)
T1:A:=A*B+2 T2:B:=A*2基于兩段鎖協(xié)議,試給出一個可串行化調(diào)度設(shè)A的初值為2,B的初值為4A=10B=4T1T2Ulock(A)Slock(A)Read(A)Ulock(A)Xlock(B)Write(B)Ulock(B)Slock(B)等待等待Slock(B)Read(B)Xlock(A)Write(A)Ulock(B)等待6.3.5封鎖導(dǎo)致的問題1.死鎖:事務(wù)T1已經(jīng)封鎖A,而又想申請封鎖B,而此時事務(wù)T2已經(jīng)封鎖B,而又想申請封鎖A,這樣,T1等待T2釋放B,而T2等待T1釋放A,使得T1、T2均無法繼續(xù)執(zhí)行下去,這種情況稱為死鎖。LOCKA…LOCKB…LOCKB…LOCKA…等待等待T1T269死鎖檢測*超時法:事務(wù)的等待超過了規(guī)定的時限*等待圖法:檢測等待圖中是否有回路存在。死鎖預(yù)防和死鎖檢測702.活鎖:事務(wù)T1,T2申請數(shù)據(jù)對象A,T1先給A加鎖,T1釋放A上的鎖后,事務(wù)T3又給A加鎖,T2等待,這樣,A始終被其他事務(wù)封鎖,事務(wù)T2可能長時間得不到A,這種情況稱為活鎖。避免活鎖的方法:采用先來先服務(wù)的原則。7172本次課程總結(jié)1.并發(fā)操作引發(fā)的問題2.調(diào)度及其可串行化3.封鎖技術(shù)上次課程總結(jié)1.并發(fā)操作引發(fā)的問題2.調(diào)度及其可串行化3.封鎖技術(shù)736.4數(shù)據(jù)庫安全性數(shù)據(jù)庫的安全性:就是防止非法用戶使用數(shù)據(jù)庫造成數(shù)據(jù)泄露、更改或破壞,以達到保護數(shù)據(jù)庫的目的。
網(wǎng)絡(luò)安全服務(wù)器安全
用戶安全
應(yīng)用程序與服務(wù)安全
數(shù)據(jù)安全計算機系統(tǒng)的安全性問題74計算機系統(tǒng)安全標準TCSEC標準CC標準安全級別
定義A1驗證設(shè)計(VerifiedDesign)B3安全域(SecurityDomains)B2結(jié)構(gòu)化保護(StructuralProtection)B1標記安全保護(LabeledSecurityProtection)C2受控的存取保護(ControlledAccessProtection)C1自主安全保護(DiscretionarySecurityProtection)D最小保護(MinimalProtection)可靠性逐漸增高向下兼容75B2以上的系統(tǒng)還處于理論研究階段應(yīng)用多限于一些特殊的部門,如軍隊等美國正在大力發(fā)展安全產(chǎn)品,試圖將目前僅限于少數(shù)領(lǐng)域應(yīng)用的B2安全級別下放到商業(yè)應(yīng)用中來,并逐步成為新的商業(yè)標準76計算機系統(tǒng)中,安全措施是一級一級層層設(shè)置77
用戶標識與鑒別
存取控制
視圖機制
數(shù)據(jù)加密
審計數(shù)據(jù)庫系統(tǒng)的安全措施786.4.1用戶標識與鑒別用戶標識與鑒別是系統(tǒng)提供的最外層安全保護措施。
DBA為數(shù)據(jù)庫用戶創(chuàng)建用戶賬號和密碼。用戶名和口令易被竊取可以重復(fù)多次。791.存取控制機制組成定義用戶權(quán)限合法權(quán)限檢查6.4.2存取控制2.用戶權(quán)限定義和合法權(quán)檢查機制一起組成了DBMS
的安全子系統(tǒng)80常用存取控制方法自主存取控制(DiscretionaryAccessControl,簡稱DAC)C2級靈活強制存取控制(MandatoryAccessControl,簡稱MAC)B1級嚴格81自主存取控制定義存取權(quán)限稱為授權(quán)
通過SQL的GRANT
語句和REVOKE語句實現(xiàn)
完成的功能:定義用戶可以在哪些數(shù)據(jù)庫對
象上進行哪些類型的操作82GRANTGRANT語句的一般格式:
GRANT<權(quán)限>[,<權(quán)限>]...[ON<對象類型><對象名>]TO<用戶>[,<用戶>]...[WITHGRANTOPTION];將對指定操作對象的指定操作權(quán)限授予指定的用戶83發(fā)出GRANTDBA
數(shù)據(jù)庫對象擁有者
擁有此權(quán)限的用戶接受權(quán)限的用戶一個或多個具體用戶PUBLIC(全體用戶)84不允許循環(huán)授權(quán)!85[例1]把查詢Student表權(quán)限授給用戶U1GRANTSELECTONTABLEStudentTOU1;[例2]把對Student表和Course表的全部權(quán)限授予用戶U2和U3GRANTALLPRIVILIGESONTABLEStudent,CourseTOU2,U3;86[例3]把對表SC的查詢權(quán)限授予所有用戶GRANTSELECTONTABLESCTOPUBLIC;[例4]把查詢Student表和修改學(xué)生學(xué)號的權(quán)限授給用戶U4GRANTUPDATE(Sno),SELECTONTABLEStudentTOU4;87
[例5]把對表SC的INSERT權(quán)限授予U5用戶,并允許他再將此權(quán)限授予其他用戶
GRANTINSERTONTABLESCTOU5
WITHGRANTOPTION;88執(zhí)行例5后,U5不僅擁有了對表SC的INSERT權(quán)限,還可以傳播此權(quán)限:
[例6]
GRANTINSERTONTABLESCTOU6WITHGRANTOPTION;同樣,U6還可以將此權(quán)限授予U7:
[例7]GRANTINSERTONTABLESCTOU7;
89授權(quán)用戶名被授權(quán)用戶名數(shù)據(jù)庫對象名允許的操作類型能否轉(zhuǎn)授權(quán)DBAU1關(guān)系StudentSELECT不能DBAU2關(guān)系StudentALL不能DBAU2關(guān)系CourseALL不能DBAU3關(guān)系StudentALL不能DBAU3關(guān)系CourseALL不能DBAPUBLIC關(guān)系SCSELECT不能DBAU4關(guān)系StudentSELECT不能DBAU4屬性列Student.SnoUPDATE不能DBAU5關(guān)系SCINSERT能U5U6關(guān)系SCINSERT能U6U7關(guān)系SCINSERT不能90授予的權(quán)限可以由DBA或其他授權(quán)者用REVOKE語句收回REVOKEREVOKE語句的一般格式為:
REVOKE<權(quán)限>[,<權(quán)限>]...[ON<對象類型><對象名>]FROM<用戶>[,<用戶>]...;91[例8]把用戶U4修改學(xué)生學(xué)號的權(quán)限收回
REVOKEUPDATE(Sno)ONTABLEStudentFROMU4;[例9]收回所有用戶對表SC的查詢權(quán)限REVOKESELECTONTABLESCFROMPUBLIC;92[例10]把用戶U5對SC表的INSERT權(quán)限收回
REVOKEINSERTONTABLESCFROMU5CASCADE;93授權(quán)用戶名被授權(quán)用戶名數(shù)據(jù)庫對象名允許的操作類型能否轉(zhuǎn)授權(quán)DBAU1關(guān)系StudentSELECT不能DBAU2關(guān)系StudentALL不能DBAU2關(guān)系CourseALL不能DBAU3關(guān)系StudentALL不能DBAU3關(guān)系CourseALL不能DBAU4關(guān)系StudentSELECT不能94數(shù)據(jù)庫角色:被命名的一組與數(shù)據(jù)庫操作相關(guān)的權(quán)限角色是權(quán)限的集合可以為一組具有相同權(quán)限的用戶創(chuàng)建一個角色簡化授權(quán)的過程95角色的創(chuàng)建
CREATEROLE<角色名>給角色授權(quán)
GRANT<權(quán)限>[,<權(quán)限>]…ON<對象類型>對象名
TO<角色>[,<角色>]…96將一個角色授予其他的角色或用戶
GRANT<角色1>[,<角色2>]…TO<受權(quán)者1>[,<受權(quán)者2>]…[WITHADMINOPTION]角色權(quán)限的收回
REVOKE<權(quán)限>[,<權(quán)限>]…ON<對象類型><對象名>FROM<角色>[,<角色>]…97[例11]通過角色來實現(xiàn)將一組權(quán)限授予一個用戶。
1.首先創(chuàng)建一個角色R1CREATEROLER1
2.然后使用GRANT語句,使角色R1擁有Student表的SELECT、UPDATE、INSERT權(quán)限
GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1;983.將這個角色授予王平,張明,趙玲。使他們具有角色R1所包含的全部權(quán)限
GRANTR1TO王平,張明,趙玲;4.可以一次性通過R1來回收王平的這3個權(quán)限
REVOKER1FROM王平;99強制存取控制強制存取控制(MAC)保證更高程度的安全性適用于對數(shù)據(jù)有嚴格而固定密級分類的部門主體客體label
絕密
機密
可信公開1006.4.3視圖機制CREATEVIEWCS_STUDENTASSELECT*FROMSTDUENTWHERESDEPT=‘計算機’;GRANTSELECTONCS_STUDENTTO王平;101審計功能把用戶對數(shù)據(jù)庫的操作自動記錄下來放入審計日志(Audit
Log),有時也被稱為審計跟蹤。6.4.4審計DBA利用審計日志找出非法存取數(shù)據(jù)的人、時間和
內(nèi)容102XMSJCZ用戶甲02-10-622:32:55進入系統(tǒng)用戶甲02-10-820:33:07錄入數(shù)據(jù)用戶乙02-10-98:50:42進入系統(tǒng)用戶乙02-10-1111:53:13修改密碼用戶丁02-10-137:19:29進入系統(tǒng)用戶丁02-10-288:00:53查詢數(shù)據(jù)6.4.4審計103[例15]對修改SC表結(jié)構(gòu)或修改SC表數(shù)據(jù)的操作進行審計
AUDITALTER,UPDATEONSC;[例16]取消對SC表的一切審計
NOAUDITALTER,UPDATEONSC;1046.5數(shù)據(jù)庫完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性,為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息的輸入和輸出。完整性安全性數(shù)據(jù)庫數(shù)據(jù)庫安全性和完整性的區(qū)別?1056.5.1完整性約束條件的類型完整性約束條件作用的對象可以是列、元組、關(guān)系完整性約束條件的類型可以分為:靜態(tài)約束和動態(tài)約束靜態(tài)列約束元組約束關(guān)系約束動態(tài)列約束元組約束關(guān)系約束106(1)靜態(tài)列約束
數(shù)據(jù)類型
數(shù)據(jù)格式取值范圍
空值
其他(2)靜態(tài)元組約束規(guī)定組成一個元組的各個列之間的約束關(guān)系。1.靜態(tài)約束107(3)靜態(tài)關(guān)系約束反應(yīng)了一個關(guān)系中各個元組之間或者若干關(guān)系之間存在的聯(lián)系或約束
實體完整性約束
參照完整性約束
函數(shù)依賴約束
統(tǒng)計約束1082.動態(tài)約束(1)動態(tài)列約束修改列定義時的約束修改列值時的約束(2)動態(tài)元組約束(3)動態(tài)關(guān)系約束1096.5.2完整性控制機制的功能1、定義功能:能夠定義完整性約束條件2、檢查功能:檢查操作請求是否違背了完整性約束條件3、保證完整性約束條件:若檢查發(fā)現(xiàn)操作請求違背了完整性約束條件,則拒絕該操作。1106.5.3完整性約束的表達方式1定義基本表時2建立constraint約束3建立觸發(fā)器111112CREATETABLES(SNOCHAR(8)PRIMARYKEY,SNAMECHAR(4),SEXCHAR(1),AGEINT,DEPTCHAR(15));113CREATETABLES(SNOCHAR(8),SNAMECHAR(4),SEXCHAR(1),AGE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中技術(shù)會考模擬試卷(二)
- 《桃花源記》說課稿17篇
- 南京工業(yè)大學(xué)浦江學(xué)院《自動化專業(yè)綜合實訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《生態(tài)文學(xué)欣賞》2021-2022學(xué)年第一學(xué)期期末試卷
- 某熱源集中供熱工程施工組織設(shè)計投標版
- dtnl說課稿部編版
- 《長方體的認識》說課稿
- 《小數(shù)乘整數(shù)》說課稿
- 南京工業(yè)大學(xué)浦江學(xué)院《概率論與數(shù)理統(tǒng)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)《住宅室內(nèi)設(shè)計》2021-2022學(xué)年第一學(xué)期期末試卷
- 安徽省示范高中培優(yōu)聯(lián)盟2023-2024學(xué)年高一上學(xué)期冬季聯(lián)賽數(shù)學(xué)試題(含答案)
- 聲母h教學(xué)課件-副本
- 印度尼西亞概況
- 變應(yīng)性支氣管肺曲霉病診治專家-共識(2022年修訂版)解讀
- 隊形隊列及廣播體操比賽評分表
- 自考《商法》00808復(fù)習(xí)筆記
- 2021年主題公園研究-環(huán)球影城
- 小學(xué)音樂-鈴兒響叮當教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 太極拳英文介紹
- 《演講與口才》(雙色2版)-課程標準
- 產(chǎn)品召回追溯演練記錄和報告
評論
0/150
提交評論