第6章數(shù)據(jù)庫保護(hù)_第1頁
第6章數(shù)據(jù)庫保護(hù)_第2頁
第6章數(shù)據(jù)庫保護(hù)_第3頁
第6章數(shù)據(jù)庫保護(hù)_第4頁
第6章數(shù)據(jù)庫保護(hù)_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

6.1事務(wù)的概念6.2數(shù)據(jù)庫恢復(fù)技術(shù)6.3數(shù)據(jù)庫并發(fā)控制6.4數(shù)據(jù)庫安全性6.5數(shù)據(jù)庫完整性第6章數(shù)據(jù)庫保護(hù)16.1事務(wù)的概念事務(wù):是一個(gè)不可分割的操作序列,該操作序列要么全做,要么全不做。事務(wù)和程序事務(wù)的開始與結(jié)束隱式控制顯式控制強(qiáng)調(diào):事務(wù)和程序是兩個(gè)概念。一個(gè)程序中可以包含多個(gè)事務(wù)。隱式控制:由DBMS按缺省規(guī)定自動(dòng)劃分。顯式控制:

BEGINTRANSACTION

[事務(wù)開始]COMMIT

[事務(wù)提交,重新改寫數(shù)據(jù)庫]ROLLBACK

[事務(wù)提交,發(fā)生錯(cuò)誤撤消]2BEGINTRANSACTIONINSERTINTOS(S#,Sname,Sage,Sdept)VALUES(‘10002’,’李娜’,18,‘計(jì)算機(jī)’)COMMIT例如:

BEGINTRANSACTIONDELETEFROMSWHERES#=‘10002’;DELETEFROMSCWHERES#=‘10002’;ROLLBACK36.1事務(wù)的概念事務(wù)的ACID特性AtomicityConsistencyIsolationDurability41、原子性(Atomicity):事務(wù)是不可分割的工作單位2、一致性(Consistency)事務(wù)提交后,數(shù)據(jù)庫從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。3、隔離性(Isolation)在事務(wù)完成之前,它對數(shù)據(jù)庫產(chǎn)生的結(jié)果不能被其它事務(wù)引用。4、持續(xù)性(Durability)一旦事務(wù)執(zhí)行成功(提交),其對數(shù)據(jù)庫產(chǎn)生的效果永久有效。事務(wù)的性質(zhì)(ACID)56.1事務(wù)的概念事務(wù)管理功能保證事務(wù)的ACID特性事務(wù)ACID特性可能遭到破壞的原因:多個(gè)事務(wù)并行運(yùn)行時(shí),多個(gè)事務(wù)中的操作交叉執(zhí)行;事務(wù)正在執(zhí)行時(shí),被強(qiáng)迫終止。數(shù)據(jù)庫的恢復(fù)和并發(fā)控制66.2數(shù)據(jù)庫恢復(fù)硬件故障、軟件故障、操作失誤、惡意破壞等,導(dǎo)致事務(wù)運(yùn)行的非正常中斷,甚至破壞數(shù)據(jù)庫,造成數(shù)據(jù)丟失數(shù)據(jù)庫恢復(fù):把數(shù)據(jù)庫從錯(cuò)誤狀態(tài)恢復(fù)到某一個(gè)已知的正確狀態(tài)76.2數(shù)據(jù)庫恢復(fù)

一、數(shù)據(jù)庫的故障種類事務(wù)內(nèi)部故障系統(tǒng)故障介質(zhì)故障計(jì)算機(jī)病毒8一、數(shù)據(jù)庫的故障種類事務(wù)內(nèi)部故障銀行轉(zhuǎn)帳業(yè)務(wù):從帳號甲將一筆金額轉(zhuǎn)入帳號乙BEGINTRANSACTION 讀取帳號甲的余額BALANCE; BALANCE=BALANCE–AMOUNT; 寫回BALANCE; if(BALANCE<0)then{ROLLBACK;} else{ 讀取帳號乙的余額BALANCE1; BALANCE1=BALANCE1+AMOUNT; 寫回BALANCE1;

COMMIT;}9一、數(shù)據(jù)庫的故障種類事務(wù)內(nèi)部故障非預(yù)期的事務(wù)內(nèi)部故障:運(yùn)算溢出、違約處理辦法:強(qiáng)行回滾ROLLBACK該事務(wù),即事務(wù)撤銷(UNDO操作)10一、數(shù)據(jù)庫的故障種類系統(tǒng)故障系統(tǒng)停機(jī),需要重啟。如CPU故障、OS故障、DBMS代碼錯(cuò)誤、系統(tǒng)斷電影響正在運(yùn)行的事務(wù),但不會破壞數(shù)據(jù)庫處理辦法:(1)UNDO所有未完成的事務(wù);(2)REDO所有已提交的事務(wù)11一、數(shù)據(jù)庫的故障種類介質(zhì)故障硬故障:磁盤損壞、磁頭碰撞、瞬間強(qiáng)磁場干擾等出現(xiàn)概率小、破壞性非常大計(jì)算機(jī)病毒破壞系統(tǒng)、修改數(shù)據(jù)12一、數(shù)據(jù)庫的故障種類各類故障的影響數(shù)據(jù)庫本身被破壞數(shù)據(jù)庫沒有被破壞,但數(shù)據(jù)可能不正確如何恢復(fù)呢?冗余13兩個(gè)關(guān)鍵問題:

1如何建立冗余數(shù)據(jù)2如何利用冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫恢復(fù)6.2數(shù)據(jù)庫恢復(fù)

二、數(shù)據(jù)庫恢復(fù)技術(shù)冗余14二、數(shù)據(jù)庫恢復(fù)技術(shù)如何建立冗余數(shù)據(jù)數(shù)據(jù)轉(zhuǎn)儲登錄日志文件數(shù)據(jù)轉(zhuǎn)儲DBA定期地將整個(gè)數(shù)據(jù)庫復(fù)制到其它外存上保存的過程后備副本/后援副本(BACKUP)15數(shù)據(jù)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲:在系統(tǒng)空閑的時(shí)候進(jìn)行,轉(zhuǎn)儲期間不允許對數(shù)據(jù)庫進(jìn)行操作。優(yōu)點(diǎn):簡單、保證副本和數(shù)據(jù)庫數(shù)據(jù)的一致性;缺點(diǎn)需等待。動(dòng)態(tài)轉(zhuǎn)儲:轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進(jìn)行操作優(yōu)點(diǎn):效率高;缺點(diǎn)是不能保證副本和數(shù)據(jù)庫數(shù)據(jù)的一致性,必須記錄轉(zhuǎn)儲期間各事務(wù)對數(shù)據(jù)庫的修改活動(dòng)(日志文件)16兩種轉(zhuǎn)儲方式:海量轉(zhuǎn)儲:每次轉(zhuǎn)儲數(shù)據(jù)庫中的全部數(shù)據(jù)增量轉(zhuǎn)儲:每次轉(zhuǎn)儲上一次轉(zhuǎn)儲后更新過的數(shù)據(jù)

兩種轉(zhuǎn)儲狀態(tài)動(dòng)態(tài)轉(zhuǎn)儲靜態(tài)轉(zhuǎn)儲兩種轉(zhuǎn)儲方式海量轉(zhuǎn)儲動(dòng)態(tài)海量轉(zhuǎn)儲靜態(tài)海量轉(zhuǎn)儲增量轉(zhuǎn)儲動(dòng)態(tài)增量轉(zhuǎn)儲靜態(tài)增量轉(zhuǎn)儲17二、數(shù)據(jù)庫恢復(fù)技術(shù)登錄日志文件用來記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件兩種格式的日志文件:(1)以記錄為單位的日志文件(2)以數(shù)據(jù)塊為單位的日志文件例如:以記錄為單位的日志文件 各個(gè)事務(wù)的開始標(biāo)記 各個(gè)事務(wù)的結(jié)束標(biāo)記 各個(gè)事務(wù)的所有更新操作日志記錄:事務(wù)標(biāo)識操作類型操作對象更新前的舊值更新后的新值18二、數(shù)據(jù)庫恢復(fù)技術(shù)日志文件的作用:進(jìn)行事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù),并協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù)。事務(wù)故障和系統(tǒng)故障恢復(fù)必須用日志文件;在動(dòng)態(tài)轉(zhuǎn)儲方式中必須建立日志文件,并結(jié)合后備副本和日志文件對數(shù)據(jù)庫進(jìn)行有效的恢復(fù);靜態(tài)轉(zhuǎn)儲時(shí)也可建立日志文件19二、數(shù)據(jù)庫恢復(fù)技術(shù)登記日志文件的原則先來先登記原則:嚴(yán)格按照并發(fā)事務(wù)執(zhí)行的時(shí)間順序登記;先寫日志文件原則:必須先寫日志文件,后寫數(shù)據(jù)庫。20數(shù)據(jù)庫鏡像:自動(dòng)將數(shù)據(jù)庫中的全部數(shù)據(jù)或關(guān)鍵數(shù)據(jù)復(fù)制到另外一張盤上。應(yīng)用1應(yīng)用2應(yīng)用3應(yīng)用4update復(fù)制readreadread應(yīng)用1應(yīng)用2應(yīng)用3應(yīng)用4update恢復(fù)readread(a)(b)read鏡像鏡像缺點(diǎn):降低系統(tǒng)效率21四、數(shù)據(jù)庫恢復(fù)策略1.事務(wù)故障的恢復(fù)2.系統(tǒng)故障的恢復(fù)3.介質(zhì)故障的恢復(fù)對于不同的故障類型要采用不同的恢復(fù)策略22多用戶數(shù)據(jù)庫系統(tǒng)事務(wù)執(zhí)行方式串行執(zhí)行:ACID無破壞,效率低并發(fā)執(zhí)行:ACID可能破壞,效率高交叉并發(fā):InterleavedConcurrency同時(shí)并發(fā):SimultaneousConcurrency6.3并發(fā)控制23一、并發(fā)操作引起的問題丟失修改不可重復(fù)讀讀“臟”數(shù)據(jù)封鎖協(xié)議6.3并發(fā)控制24例:銀行中,C賬戶上原有存款500元,現(xiàn)有兩位顧客同時(shí)給此賬戶存款,分別運(yùn)行下面兩個(gè)事務(wù):T1:READ(C),C=C+100,WRITE(C);T2:READ(C),C=C+200,WRITE(C);運(yùn)行過程可能如下:(1)先執(zhí)行事務(wù)T1,然后執(zhí)行事務(wù)T2(2)先執(zhí)行事務(wù)T2,然后執(zhí)行事務(wù)T1(3)事務(wù)T1和事務(wù)T2并發(fā)執(zhí)行25讀出C,C=500讀出C,C=500C=C+100,C=600把C寫到數(shù)據(jù)庫C=C+200,C=700把C寫到數(shù)據(jù)庫C:600C:700C:500T1的運(yùn)行T2的運(yùn)行26事務(wù)T1事務(wù)T2讀出C,C=500C=C+100C=600讀出C,C=500C=C+200C=700丟失修改27事務(wù)T1事務(wù)T2

讀出A=50讀出B=100求和=150

讀出B=100B=B*2WRITE(B)

讀出A=50讀出B=200求和=250(驗(yàn)算不對)不可重復(fù)讀28三種不可重復(fù)讀讀不一致T1讀A,T2修改A,T1讀A刪除幻影T1讀取元組集合A,T2刪除部分元組,T1讀取元組集合A插入幻影T1讀取元組集合A,T2插入一些元組,T1讀取元組集合A不可重復(fù)讀29事務(wù)T1事務(wù)T2

讀出C=100C=C*2WRITE(C)

讀出C=200

ROLLBACKC恢復(fù)為100讀“臟”數(shù)據(jù)T1修改A,T2讀A,T1撤銷修改30導(dǎo)致問題的原因丟失修改、不可重復(fù)讀、讀“臟”數(shù)據(jù)原因:并發(fā)操作破壞了事務(wù)的隔離性是否可以找到并發(fā)操作的合理調(diào)度方式,從而避免三類問題?311、事務(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)二、調(diào)度可串行性32R1(X)R1(Y)W1(Y)符號→表示先于(<),即R1(X)先于W1(Y)執(zhí)行,R1(Y)先于W1(Y)執(zhí)行,而R1(X)和R1(Y)的先后次序無關(guān)緊要。332、沖突操作定義:如果兩個(gè)操作來自不同的事務(wù),它們對同一數(shù)據(jù)單位進(jìn)行操作,并且其中至少有一個(gè)是寫操作,則稱這兩個(gè)操作是相互沖突的或沖突操作。例:事務(wù)T0:W0(X)W0(Y)W0(Z)事務(wù)T1:R1(X)R1(Z)W1(X)則在這兩個(gè)事務(wù)中有沖突操作:R1(X)與W0(X)

W1(X)與W0(X)

R1(Z)與W0(Z)調(diào)度:對于沖突操作不能同時(shí)執(zhí)行,哪個(gè)先執(zhí)行,哪個(gè)后執(zhí)行。343、調(diào)度:事務(wù)執(zhí)行的次序。設(shè)τ={T1,T2,…Tn}是一事務(wù)集,τ的一個(gè)調(diào)度S是一擬序集(∑,<s)其中:1)

∑說明S執(zhí)行的操作正是T1,T2,…Tn的操作。2)<s說明調(diào)度S遵守每個(gè)事務(wù)的操作的內(nèi)部執(zhí)行次序3)每對沖突操作的執(zhí)行次序由S決定。R1(X)R1(Z)W1(X)S1=W0(X)W0(Y)W0(Z)S1=({W0(X),W0(Y)

,W0(Z),R1(X),R1(Z)

,W1(X)},{W0(X)<R1(X),W0(Z)<R1(Z),R1(X)<W1(X),R1(Z)<W1(X)})S1=({W0(X),W0(Y)

,W0(Z),R1(X),R1(Z)

,W1(X)},{W0(X)<R1(X),W0(Z)<R1(Z),R1(X)<R1(Z),R1(X)<W1(X),R1(Z)<W1(X)})S1=({W0(X),W0(Y)

,W0(Z),R1(X),R1(Z)

,W1(X)},{W0(X)<R1(X),W0(Z)<R1(Z),R1(Z)<R1(X),R1(X)<W1(X),R1(Z)<W1(X)})354、串行調(diào)度:如果在一個(gè)調(diào)度中,各個(gè)事務(wù)不交叉執(zhí)行,而順序地串行執(zhí)行,這個(gè)調(diào)度被稱為串行調(diào)度。定義:如果調(diào)度S中的任意兩個(gè)事務(wù)Ti和Tj,如果Ti的所有操作都先于Tj的所有操作,或者相反,則稱S為串行調(diào)度。注意:在串行調(diào)度中每一個(gè)事務(wù)都是在下一個(gè)事務(wù)開始執(zhí)行之前提交。因此,串行調(diào)度沒有并發(fā)性,故每一個(gè)串行調(diào)度都是一個(gè)正確的執(zhí)行。5、并發(fā)調(diào)度:如果在一個(gè)調(diào)度中,各個(gè)事務(wù)交叉地執(zhí)行,這個(gè)調(diào)度稱為并發(fā)調(diào)度。366、可串行化的調(diào)度:如果一個(gè)事務(wù)集的并發(fā)調(diào)度與某一串行調(diào)度是等價(jià)的,則稱該并發(fā)調(diào)度是可串行化的。7、串行化定理定理:一個(gè)調(diào)度S是可串行化的,當(dāng)且僅當(dāng)它的串行圖是無環(huán)的。串行圖:設(shè)S是若干事務(wù){(diào)T1,T2,…,Tn}的一個(gè)調(diào)度,S的串行圖SG(S)是一個(gè)有向圖,其構(gòu)成規(guī)則如下:1)圖中的結(jié)點(diǎn)表示事務(wù)2)如果Oi和Oj是沖突操作,且Oi先于Oj執(zhí)行,則在圖中有一條邊Ti→Tj。37R1(X)W1(X)R3(X)W3(Z)R2(X)W2(Y)W1(Y)T2T1T3R1(X)W1(X)R3(X)W3(X)R2(X)W2(Y)W1(Y)T2T1T3例:388、等價(jià)的串行調(diào)度:如果SG(S)是無環(huán)的,則S等價(jià)于SG(S)的任一拓?fù)渑判?。T2T1T3拓?fù)渑判驗(yàn)椋篢2,T1,T3T1T2T3拓?fù)渑判驗(yàn)椋篢1,T3,T2或?yàn)椋篢1,T2,T3拓?fù)渑判颍簭臒o入弧的節(jié)點(diǎn)開始遞歸去除39W0(X)W0(Y)W0(Z)R1(X)R1(Z)W1(X)R3(Z)W3(Y)W3(Z)R4(X)R4(Y)R4(Z)R2(X)W2(Y)T0T1T2T3T4調(diào)度S的串行圖拓?fù)渑判驗(yàn)椋篢0,T2,T1,T3,T4或?yàn)椋篢0,T2,T3,T1,T4401、封鎖:事務(wù)T在對數(shù)據(jù)進(jìn)行操作之前,先向系統(tǒng)申請對其進(jìn)行加鎖,獲得鎖后不允許其它事務(wù)更新該數(shù)據(jù),直到事務(wù)T釋放該數(shù)據(jù)上的鎖。2、封鎖的類型排它鎖(又稱寫鎖,簡稱X鎖)若事務(wù)T對數(shù)據(jù)對象A加上X鎖,則其它事務(wù)不能在A上加任何類型的鎖,此時(shí),只允許事務(wù)T讀取和修改A,直到T釋放A上的鎖。共享鎖(又稱讀鎖,簡稱S鎖)若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則其它事務(wù)也可在A上加S鎖,但不能加X鎖,事務(wù)T和其它事務(wù)只能讀取A,但不能修改A。三、基于封鎖的并發(fā)控制41封鎖級別加鎖放鎖防止丟失修改保證可重復(fù)讀不讀“臟”數(shù)據(jù)一級事務(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鎖可防止能保證能保證3、封鎖協(xié)議42一級封鎖協(xié)議例XlockARead(A)A=10A=A-5Write(A)CommitUnlockAXlockARead(A)A=5A=A-5Write(A)CommitUnlockA等待等待等待等待獲得XlockA事務(wù)T1事務(wù)T2沒有丟失修改READ(C,D)M=C+DREAD(C,D)M=C+DREAD(C,D)C=C+10D=D+10事務(wù)T1事務(wù)T2不可重復(fù)讀Write(D)Write(C)XlockCXlockDUnlockCUnlockD43二級封鎖協(xié)議例READ(C,D)M=C+DREAD(C,D)C=C+10D=D+10事務(wù)T1事務(wù)T2防止讀“臟”數(shù)據(jù)Write(D)Write(C)XlockCXlockDUnlockCUnlockDRollBackSlockCSlockD等待等待等待獲得SlockC獲得SlockDUnlockCUnlockDREAD(C,D)M=C+DREAD(C,D)C=C+10D=D+10事務(wù)T1事務(wù)T2不可重復(fù)讀Write(D)Write(C)XlockCXlockDUnlockCUnlockDSlockCSlockDUnlockCUnlockD等待獲得XlockC獲得XlockDREAD(C,D)M=C+DSlockCSlockDUnlockCUnlockD等待獲得SlockC獲得SlockDCommitCommitCommit44三級封鎖協(xié)議例READ(C,D)M=C+DREAD(C,D)C=C+10D=D+10事務(wù)T1事務(wù)T2可重復(fù)讀Write(D)Write(C)XlockCXlockDUnlockCUnlockDREAD(C,D)M=C+DSlockCSlockDUnlockCUnlockD等待獲得XlockC獲得XlockD等待CommitCommit45活鎖:事務(wù)T1,T2申請數(shù)據(jù)對象A,T1先給A加鎖,T1釋放A上的鎖后,事務(wù)T3又給A加鎖,T2等待,這樣,A始終被其他事務(wù)封鎖,事務(wù)T2可能長時(shí)間得不到A,這種情況稱為活鎖。避免活鎖的方法:采用先來先服務(wù)的原則。死鎖:事務(wù)T1已經(jīng)封鎖A,而又想申請封鎖B,而此時(shí)事務(wù)T2已經(jīng)封鎖B,而又想申請封鎖A,這樣,T1等待T2釋放B,而T2等待T1釋放A,使得T1、T2均無法繼續(xù)執(zhí)行下去,這種情況稱為死鎖。LOCKA…LOCKB…LOCKB…LOCKA…46

1)某一事務(wù)在對數(shù)據(jù)進(jìn)行讀、寫之前,先要申請并獲得對該數(shù)據(jù)的封鎖。2)在釋放一個(gè)封鎖之后,事務(wù)不再申請和獲得任何其它封鎖。

說明:規(guī)則1避免了兩個(gè)沖突操作同時(shí)存取同一數(shù)據(jù)。規(guī)則2把每個(gè)事務(wù)分為兩個(gè)階段:上升段和下降段。上升下降每一事務(wù)只有得到全部鎖以后才放鎖。4、兩階段封鎖協(xié)議(2PL協(xié)議)472PL調(diào)度優(yōu)點(diǎn):簡單缺點(diǎn):易死鎖例如:對于如下兩個(gè)事務(wù)采用兩段鎖協(xié)議T1:R1(X)W1(Y)T2:W2(Y)W2(X)T1與T2的一個(gè)調(diào)度過程:

1初始時(shí),沒有事務(wù)占有鎖2調(diào)度器接到R1(X),對X加讀鎖,執(zhí)行R1(X)。3調(diào)度器接到W2(Y),對Y加寫鎖,執(zhí)行W2(Y)4調(diào)度器接到W2(X),T2等待5調(diào)度器接到W1(Y),T1等待這樣就造成了死鎖。48定理:任何一個(gè)遵從2PL協(xié)議的調(diào)度都是可串行化的。說明:事務(wù)遵守2PL協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件。即若并發(fā)事務(wù)都遵守2PL協(xié)議,則對這些事務(wù)的任何并發(fā)調(diào)度策略都是可串行化的;若對并發(fā)事務(wù)的一個(gè)調(diào)度是可串行化的,不一定所有事務(wù)都符合2PL協(xié)議。49預(yù)防死鎖*一次封鎖法:要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部封鎖,否則,不能執(zhí)行。缺點(diǎn):降低了系統(tǒng)的并發(fā)度。*順序封鎖法:預(yù)先對數(shù)據(jù)對象規(guī)定一個(gè)封鎖次序,所有事務(wù)都按這個(gè)次序?qū)嵭蟹怄i。缺點(diǎn):排列封鎖次序困難。判斷并解除死鎖*超時(shí)法:事務(wù)的等待超過了規(guī)定的時(shí)限*等待圖法:檢測等待圖中是否有回路存在。四、死鎖506.4數(shù)據(jù)庫安全性數(shù)據(jù)庫的安全性:就是防止非法用戶使用數(shù)據(jù)庫造成數(shù)據(jù)泄露、更改或破壞,以達(dá)到保護(hù)數(shù)據(jù)庫的目的。計(jì)算機(jī)系統(tǒng)安全性為計(jì)算機(jī)系統(tǒng)建立和采取的各種安全保護(hù)措施,保護(hù)計(jì)算機(jī)系統(tǒng)(硬件、軟件及數(shù)據(jù))不會遭到破壞。保護(hù)數(shù)據(jù)庫以防止不合法使用一般計(jì)算機(jī)系統(tǒng)中,安全措施是一級一級層層設(shè)置的第一節(jié)安全性51用戶標(biāo)識與鑒別存取控制視圖機(jī)制審計(jì)數(shù)據(jù)加密第二節(jié)數(shù)據(jù)庫安全性控制用戶DBMSDBOS用戶標(biāo)識和鑒定存取控制操作系統(tǒng)安全保護(hù)密碼存取*為不同的用戶定義不同的視圖把用戶對數(shù)據(jù)庫的所有操作自動(dòng)記錄下來放入審計(jì)日志中。Oracle安全措施主要有:

1用戶標(biāo)識和鑒定2存取控制3審計(jì)52XMSJCZ用戶甲02-10-622:32:55進(jìn)入系統(tǒng)用戶甲02-10-820:33:07錄入數(shù)據(jù)用戶乙02-10-98:50:42進(jìn)入系統(tǒng)用戶乙02-10-1111:53:13修改密碼用戶丁02-10-137:19:29進(jìn)入系統(tǒng)用戶丁02-10-288:00:53查詢數(shù)據(jù)531.用戶標(biāo)識與鑒別用戶標(biāo)識:Identification用戶名:UserName,或者用戶標(biāo)識號:UID用戶鑒別:Authentication用戶名+口令:Password542.存取控制數(shù)據(jù)庫安全的主要思路:存取控制給合適的人以合適的權(quán)限存取控制機(jī)制定義用戶及其權(quán)限,在數(shù)據(jù)字典中登記用戶權(quán)限;權(quán)限合法性檢查552.存取控制兩類實(shí)現(xiàn)存取控制的方法自主存取控制:DiscretionaryAccessControla)用戶對不同的數(shù)據(jù)對象有不同的權(quán)限;b)不同用戶對同一對象具有不同的權(quán)限;c)允許用戶之間的傳遞授予權(quán)限強(qiáng)制存取控制:MandatoryAccessControla)以一定的密級標(biāo)注數(shù)據(jù)對象b)授予每個(gè)用戶以某一級別的許可證多數(shù)DBMS均支持DAC56自主存取控制DAC用戶權(quán)限誰+在哪個(gè)對象上+可以干什么事情授權(quán):將用戶權(quán)限授予特定用戶的過程用戶數(shù)據(jù)庫對象操作類型用戶權(quán)限的二要素57自主存取控制DAC對象類型數(shù)據(jù)庫對象操作類型數(shù)據(jù)庫模式CreateSchema基本表CreateTable,AlterTable模式視圖CreateView索引CreateIndex數(shù)據(jù)基本表和視圖Select,Insert,Update,Delete,References,AllPrivileges數(shù)據(jù)屬性列Select,Insert,Update,Delete,References,AllPrivileges58自主存取控制DACSQL標(biāo)準(zhǔn)對DAC的支持授權(quán):Grant語句回收:Revoke語句SQL創(chuàng)建用戶時(shí)賦予用戶的權(quán)限D(zhuǎn)BA、RESOURCE、CONNECTCreateUser<用戶名>[WithDBA|RESOURCE|CONNECT]59自主存取控制DAC默認(rèn)用戶權(quán)限:CONNECTCreateUser<用戶名>[WithDBA|RESOURCE|CONNECT]CONNECT用戶的初始權(quán)限:只能登錄數(shù)據(jù)庫RESOURCE用戶的初始權(quán)限:創(chuàng)建基本表和視圖,并成為所創(chuàng)建對象的屬主不能創(chuàng)建模式和新用戶可授權(quán)DBA用戶的初始權(quán)限:創(chuàng)建新用戶、模式、基本表、視圖等擁有對所有數(shù)據(jù)庫對象的存取權(quán)限可授權(quán)60自主存取控制DAC授權(quán)權(quán)限:Grant語句把“在某個(gè)對象上”“干某種事情”的權(quán)限授予“某個(gè)用戶”GRANT<權(quán)限>ON<數(shù)據(jù)對象>TO<用戶>[WITHGRANTOPTION]61自主存取控制DAC<數(shù)據(jù)對象>::=<基表>|<視圖>|<屬性>|…<用戶>::=PUBLIC|<用戶名>PUBLIC是所有數(shù)據(jù)庫用戶的總稱若有WITHGRANTOPTION,則用戶可將此特權(quán)轉(zhuǎn)授給其它<用戶>。不允許循環(huán)授權(quán)GRANT<權(quán)限>ON<數(shù)據(jù)對象>TO<用戶>[WITHGRANTOPTION]62例如:GRANTSELECTONTABLE表1TOPUBLIC;//將對表1的SELECT特權(quán)授予所有的用戶。GRANTSELECT(列1,列5)ON表1TOsam;//將對表1中1和5列的INSERT特權(quán)授予sam。GRANTALLPRIVILEGESONTABLE表1TObob,sam;//將對表1的所有操作特權(quán)授予bob和sam。GRANTUPDATE(列2,列4)ON表1TOwangWITHGRANTOPTION;//將對表1中2和4列的UPDATE特權(quán)授予wang,并允許他將此特權(quán)轉(zhuǎn)授給其它用戶。63自主存取控制DAC回收權(quán)限:Revoke語句把“在某個(gè)對象上”“干某種事情”的權(quán)限從“某個(gè)用戶”那里要回來REVOKE<權(quán)限>ON<數(shù)據(jù)對象>FROM<用戶>[CASCADE|RESTRICT]REVOKEUPDATE(Sno)ONTABLEStudentFromuser4;64以單個(gè)權(quán)限為單位授權(quán)太過麻煩角色:權(quán)限的集合為具有相同權(quán)限的用戶群創(chuàng)建一個(gè)角色基于角色來管理權(quán)限簡化授權(quán)過程創(chuàng)建角色給角色授權(quán)或授予角色給用戶授予角色自主存取控制DAC65自主存取控制DAC角色的創(chuàng)建CREATEROLE<角色名>給角色授權(quán)GRANT<權(quán)限>ON<數(shù)據(jù)對象>TO<角色>GRANT<角色>TO<角色>[WITHADMINOPTION]給用戶授予角色GRANT<角色>TO<用戶>[WITHADMINOPTION]66角色權(quán)限的回收REVOKE<權(quán)限>ON<數(shù)據(jù)對象>FROM<角色>舉例:創(chuàng)建角色R1使R1具有Student表的Select/Update/Insert權(quán)限將R1角色授予用戶王平和李明修改R1,使其具有Student表的Delete權(quán)限自主存取控制DAC673.視圖機(jī)制視圖機(jī)制王平老師只能查詢計(jì)算機(jī)系學(xué)生的信息系主任李明具有處置計(jì)算機(jī)系學(xué)生信息的所有權(quán)限CREATEVIEWCS_STUASSelect*FromStudentWhereSdept=‘CS’;GRANTSELECTONCS_STUTO王平;GRANTALLPRIVILIGESONCS_STUTO李明684.審計(jì)Audit和數(shù)據(jù)加密審計(jì):C2級DBMS的必要指標(biāo),是把用戶對數(shù)據(jù)庫的所有操作自動(dòng)記錄下來放入審計(jì)日志用戶級審計(jì)系統(tǒng)級審計(jì)數(shù)據(jù)加密69數(shù)據(jù)庫完整性:數(shù)據(jù)的正確性和相容性。完整性安全性數(shù)據(jù)庫完整性和安全性的區(qū)別完整性防止錯(cuò)誤信息的輸入與輸出。安全性是保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取。6.5數(shù)據(jù)庫完整性70DBMS對數(shù)據(jù)庫完整性的支持提供定義完整性約束的機(jī)制 實(shí)體完整性、參照完整性、自定義完整性提供完整性檢查的方法違約處理:拒絕執(zhí)行、級聯(lián)執(zhí)行6.5數(shù)據(jù)庫完整性711完整性約束的概念完整性約束:加在數(shù)據(jù)之上的語義約束完整性約束的作用對象●關(guān)系:若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束●元組:元組的約束是元組中各個(gè)字段間的聯(lián)系的約束●屬性列:主要是列的數(shù)據(jù)類型、取值范圍、精度、排序等約束條件721完整性約束的概念完整性約束的類型靜態(tài)約束:數(shù)據(jù)庫在確定狀態(tài)時(shí)數(shù)據(jù)對象應(yīng)滿足的約束條件;動(dòng)態(tài)約束:數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時(shí),新、舊值之間應(yīng)滿足的約束條件73

1)靜態(tài)列約束:是對一個(gè)列的取值域等的限制。對數(shù)據(jù)類型的約束;對數(shù)據(jù)格式的約束;對取值范圍或取值集合的約束;對空值的約束;2)靜態(tài)元組約束:規(guī)定組成一個(gè)元組的各個(gè)列之間的約束關(guān)系。例如:庫存關(guān)系中出庫數(shù)量不能大于庫存數(shù)量。3)靜態(tài)關(guān)系約束:反映了一個(gè)關(guān)系中各個(gè)元組之間或者若干關(guān)系之間存在的聯(lián)系或約束。實(shí)體完整性約束;參照完整性約束;靜態(tài)約束74

1)動(dòng)態(tài)列約束:規(guī)定修改列定義或列值時(shí)應(yīng)滿足的約束條件。如:將允許為空的列修改為不允許為空;學(xué)生的年齡只能增長。2)動(dòng)態(tài)元組約束:規(guī)定修改元組的值時(shí)其各個(gè)屬性列之間需要滿足的約束條件例如:職工工資調(diào)整時(shí)新工資不得低于原工資+工齡*1.5。3)動(dòng)態(tài)關(guān)系約束:加在關(guān)系變化前后狀態(tài)上的限制條件。事務(wù)的ACID特性:原子性/一致性/隔離性/持久性動(dòng)態(tài)約束752實(shí)體/參照完整性約束實(shí)體完整性:PRIMARYKEY列級定義關(guān)系級定義參照完整性:FOREIGNKEY/REFERENCES違約處理:拒絕、級聯(lián)刪除、設(shè)置為空762實(shí)體/參照完整性約束CREATETABLESC(SnoCHAR(8)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(Cno)REFERENCESCourse(Cno)ONDELETENOACTIONONUPDATECASCADE);773用戶自定義完整性約束定義屬性列的約束條件列值非空:NOTNULL列值唯一:UNIQUE語義檢查:CHECK短語舉例:性別只允許取值“男”或“女”CREATETABLEStudent(……SsexCHAR(2)CHECK(SsexIN(“男”,“女”)),……);成績只能在0-100之間:CREATETABLESC(….….GradeSMALLINTCHECK(Grade>=0andGrade<=100),……);78違約處理和保護(hù):createtables(snochar(2)primarykey,sgenderchar(2)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論