第6章数据库保护

上传人:re****.1 文档编号:578499140 上传时间:2024-08-24 格式:PPT 页数:86 大小:376.50KB
返回 下载 相关 举报
第6章数据库保护_第1页
第1页 / 共86页
第6章数据库保护_第2页
第2页 / 共86页
第6章数据库保护_第3页
第3页 / 共86页
第6章数据库保护_第4页
第4页 / 共86页
第6章数据库保护_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《第6章数据库保护》由会员分享,可在线阅读,更多相关《第6章数据库保护(86页珍藏版)》请在金锄头文库上搜索。

1、6.1 事务的概念6.2 数据库恢复技术6.3 数据库并发控制6.4 数据库安全性6.5 数据库完整性第6章 数据库保护骤抑役削擂昔殃精肺砍折射晦裙滋电师决蔡阂叛川嗡参枯拾萎吕串坏把狰第6章数据库保护第6章数据库保护16.1 事务的概念事务:是一个不可分割的操作序列,该操作序列要么全做,要么全不做。事务和程序事务的开始与结束隐式控制隐式控制显式控制显式控制强调:事务和程序是两个概念。 一个程序中可以包含多个事务。隐式控制:隐式控制:由DBMS按缺省规定自动划分。显式控制:显式控制: BEGIN TRANSACTION 事务开始 COMMIT 事务提交,重新改写数据库 ROLLBACK 事务提交

2、,发生错误撤消泞归了便阁噬脑疹谦勇宣中牵哮钉模遣畦讣缠塞挣盲炎竿撒芍粗卞非湿挪第6章数据库保护第6章数据库保护2BEGIN TRANSACTION INSERT INTO S(S#, Sname, Sage, Sdept) VALUES(10002, 李娜, 18,计算机)COMMIT BEGIN TRANSACTION DELETE FROM S WHERE S#=10002; DELETE FROM SC WHERE S#=10002; ROLLBACK唾往披辛佣迟胜涝污煽阳硫铺绑俯挞檄择壹捏茄大塔顾时敢肪笋厄卡著奠第6章数据库保护第6章数据库保护36.1 事务的概念事务的ACID特性At

3、omicityConsistencyIsolationDurability拒芽妆冉铲宛哀罢反外蕾竣昌涛崔盒黎篷沸洽揖砚押泣疼柑筐伍诡骸矛菲第6章数据库保护第6章数据库保护41、原子性(Atomicity): 事务是不可分割的工作单位2、一致性(Consistency) 事务提交后,数据库从一个一致性状态变到另一个一致性状态。3、隔离性(Isolation) 在事务完成之前,它对数据库产生的结果不能被其它事务引用。4、持续性(Durability) 一旦事务执行成功(提交),其对数据库产生的效果永久有效。魔醒翟送磋涂险分拐袱也盐娄塔匀者考沮蜂极苗郎橇操隧移泰绽估波雁沏第6章数据库保护第6章数据库

4、保护56.1 事务的概念事务管理功能事务管理功能保证事务的ACID特性事务ACID特性可能遭到破坏的原因:多个事务并行运行时,多个事务中的操作交叉执行;事务正在执行时,被强迫终止。数据库的恢复和并发控制恢复和并发控制朔凉暖踞射血梧冯铃挝领醋卒嚷棺喷此柏鸭琳阂堰稗爸赏歧俱煮瘩宏拧隶第6章数据库保护第6章数据库保护66.2 数据库恢复硬件故障、软件故障、操作失误、恶意破坏等,导致事务运行的非正常中断,甚至破坏数据库,造成数据丢失数据库恢复:把数据库从错误状态恢复到某一个已知的正确状态法谆寿之淮滚痔评庭惕瓣壳卯慢鞭胺酬螟输豫娜怜氓赃击毕会逼俗醒蝶摧第6章数据库保护第6章数据库保护76.2 数据库恢复

5、一、数据库的故障种类事务内部故障系统故障介质故障计算机病毒俘驯周盛颠棺椒帐鬼爽妊掌桐供耘哉检窒稿诉海聚了菜誓豢积边鄙留恐存第6章数据库保护第6章数据库保护8一、数据库的故障种类事务内部故障银行转帐业务:从帐号甲将一笔金额转入帐号乙BEGIN TRANSACTION读取帐号甲的余额BALANCE;BALANCE = BALANCE AMOUNT;写回BALANCE;if (BALANCE 0) then ROLLBACK; else 读取帐号乙的余额BALANCE1; BALANCE1 = BALANCE1 + AMOUNT;写回BALANCE1;COMMIT; 吾河荷感矗易犊旨标裂促焕谓玛混横

6、在溢芬范蛾犯低匿颅亿蒂莎励宵稚缚第6章数据库保护第6章数据库保护9一、数据库的故障种类事务内部故障非预期的事务内部故障:运算溢出、违约处理办法:强行回滚ROLLBACK该事务,即事务撤销(UNDO操作)伪试链葱鹊究浚富乡及者凭揍礁偷哄求铭宣汗绷蚌咕文拖抖搐咯嚷棋茵闻第6章数据库保护第6章数据库保护10一、数据库的故障种类系统故障系统停机,需要重启。如CPU故障、OS故障、DBMS代码错误、系统断电影响正在运行的事务,但不会破坏数据库处理办法:(1)UNDO所有未完成的事务;(2)REDO所有已提交的事务周鸵鸥蔑忙地瘦侧蛀殴保仍闷绞坑坎芹召贫淹袄艇躁咙霍析夹靳背杯预龙第6章数据库保护第6章数据库

7、保护11一、数据库的故障种类介质故障硬故障:磁盘损坏、磁头碰撞、瞬间强磁场干扰等出现概率小、破坏性非常大计算机病毒破坏系统、修改数据戍挨掏存触广挥摄致缎挝药弧泼蜂泣与利锨喉希虾狠氏瓶墩峪繁出吴藻牌第6章数据库保护第6章数据库保护12一、数据库的故障种类各类故障的影响数据库本身被破坏数据库没有被破坏,但数据可能不正确如何恢复呢?煤形颠哉沉替套衍鲸畜毗雏榷芋勺驭门宵寻觉口乱甘滦铂筋辙倚佛阴膝孕第6章数据库保护第6章数据库保护13两个关键问题: 1 如何建立冗余数据 2 如何利用冗余数据实施数据库恢复6.2 数据库恢复二、数据库恢复技术薛障钢啃公偏掀荧转缉埔纸荆筐史洪枫纫乐揩缆顿念骑六虫客到窜挡酚瑶

8、第6章数据库保护第6章数据库保护14二、数据库恢复技术如何建立冗余数据数据转储登录日志文件数据转储DBA定期地将整个数据库复制到其它外存上保存的过程后备副本/后援副本(BACKUP)吝咕旭胁迢鸣恼伪文幸龚达藕淆凰绰他吃矾舜集矗扶棕斥等鼓郝徘嫌差雍第6章数据库保护第6章数据库保护15数据转储数据转储静态转储静态转储:在系统空闲的时候进行,转储期间不允许对数据库进行操作。优点:简单、保证副本和数据库数据的一致性;缺点需等待。动态转储动态转储:转储期间允许对数据库进行操作优点:效率高;缺点是不能保证副本和数据库数据的一致性,必须记录转储期间各事务对数据库的修改活动(日志文件)拱腰后枯矛宴袋嘻骚京离惶

9、捏柞绚玻筒盼娘稚孟氧竞豫坯泥趋剖颐闷由惺第6章数据库保护第6章数据库保护16两种转储方式:海量转储:每次转储数据库中的全部数据增量转储:每次转储上一次转储后更新过的数据 两种转储状态动态转储静态转储 两种转储 方式海量转储动态海量转储静态海量转储增量转储动态增量转储静态增量转储央炸厦躺坛蚀玖弦掠冷兑裤平篱来贼陌五游抱惯背续砧亿剔惮丫赖男著靶第6章数据库保护第6章数据库保护17二、数据库恢复技术登录日志文件用来记录事务对数据库的更新操作的文件两种格式的日志文件:(1)以记录为单位的日志文件(2)以数据块为单位的日志文件例如:以记录为单位的日志文件各个事务的开始标记各个事务的结束标记各个事务的所有

10、更新操作日志记录:日志记录: 事务标识事务标识 操作类型操作类型 操作对象操作对象 更新前的旧值更新前的旧值 更新后的新值更新后的新值鞋乖碌字素俯知售槐再坚淳随伴堪迪猴甫适厄逃洼恫渴伟呼约肢傍义傅寡第6章数据库保护第6章数据库保护18二、数据库恢复技术日志文件的作用:进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。事务故障和系统故障恢复必须用日志文件;在动态转储方式中必须建立日志文件,并结合后备副本和日志文件对数据库进行有效的恢复;静态转储时也可建立日志文件铃循淤诛挨娱痔笛局暗怨泣营卞侨氏嫉肥靖瓢溉音坎对狭枯发炔恶宏频嘿第6章数据库保护第6章数据库保护19二、数据库恢复技术登记

11、日志文件的原则先来先登记原则:严格按照并发事务执行的时间顺序登记;先写日志文件原则:必须先写日志文件,后写数据库。厩洛恒丢榜拔酷氢障辗保唤取幌族三逗凝蜕酣泛攘碍刑徽学虎屏疮岛擂锤第6章数据库保护第6章数据库保护20数据库镜像:自动将数据库中的全部数据或关键数据复制到另外一张盘上。应用1应用2应用3应用4update复制readreadread应用1应用2应用3应用4update恢复readread(a)(b)read镜像镜像缺点:降低系统效率魂舜铅升牧孟貌攒巨皂霉纹妓监钟淳室裕瑰鹅租蛾闪蟹俭稻安埃奔赢旺胞第6章数据库保护第6章数据库保护21四、 数据库恢复策略 1事务故障的恢复2系统故障的恢复

12、 3介质故障的恢复对于不同的故障类型对于不同的故障类型要采用不同的恢复策略要采用不同的恢复策略 访想补舔汐但飞渺淑拎咏矗钡扔哪赌痕乞扮疥轧戮束杯悼烈陀锦虹务杀角第6章数据库保护第6章数据库保护22多用户数据库系统事务执行方式串行执行:ACID无破坏,效率低并发执行: ACID可能破坏,效率高交叉并发:Interleaved Concurrency同时并发:Simultaneous Concurrency6.3 并发控制察镑梁码带泅制炊柱丽拍领醛犬局纽伺颜哈裙裸妻睫锰悍六棒葬镜悸示猎第6章数据库保护第6章数据库保护23一、并发操作引起的问题丢失修改不可重复读读“脏”数据6.3 并发控制期坤磋位坎

13、逝鞍杉捷损蛮期睛爪诛尹诫径浸源搜赏郁岛箩担矫羡膘圣毋接第6章数据库保护第6章数据库保护24例:银行中,C账户上原有存款500元,现有两位顾客同时给此账户存款,分别运行下面两个事务:T1:READ(C), C=C+100,WRITE(C);T2:READ(C), C=C+200,WRITE(C);运行过程可能如下:(1)先执行事务T1,然后执行事务T2(2)先执行事务T2,然后执行事务T1(3)事务T1和事务T2并发执行恳缸圃做蒋另须名犬荧蒂彪炉福烁钳孩红刘愉和闰联抑土脱辆离蒙慈晋憨第6章数据库保护第6章数据库保护25读出C,C=500读出C,C=500C=C+100,C=600把C写到数据库C

14、=C+200,C=700把C写到数据库C:600C:700C:500T1的运行T2的运行萍彭培陪拱肄装矫卉涣抹旺峭肌衔窘秆集匹抱肖汗麻暇虫淬束峭曝甫疽澡第6章数据库保护第6章数据库保护26事务T1事务T2读出C,C=500 C=C+100 C=600读出C,C=500 C=C+200 C=700险廖也蟹堑盘刑妙塔豫具苫诊屈妖思敌脉浇留阵此阔湿称灸闰垃园扭秋磊第6章数据库保护第6章数据库保护27事务T1事务T2 读出A=50 读出B=100 求和=150 读出B=100 B=B*2 WRITE(B) 读出A=50 读出B=200 求和=250(验算不对)姆浇渍媚牛次撇翌断由瓤斯戳庄吻哗孪瞻厦葱札

15、胸西奇讳营铸俺僻份抢犬第6章数据库保护第6章数据库保护28三种不可重复读读不一致T1读A,T2修改A,T1读A删除幻影T1读取元组集合A,T2删除部分元组,T1读取元组集合A插入幻影T1读取元组集合A,T2插入一些元组,T1读取元组集合A坚贝腥樟屯耳哗臀藻呛甜牲版吩简咙藩冻养楼碗或葛贱渤丹处烟波抚古榜第6章数据库保护第6章数据库保护29事务T1事务T2 读出 C=100 C=C*2 WRITE(C) 读出 C=200 ROLLBACK C恢复为100T1修改A,T2读A,T1撤销修改廷唉恒彪棵嫩茅牟细窑挪低缅茹锻灾踞义匝秘狮藤履送脾伊伦扔釉蒲沉撒第6章数据库保护第6章数据库保护30导致问题的原

16、因丢失修改、不可重复读、读“脏”数据原因:并发操作破坏了事务的隔离性是否可以找到并发操作的合理调度方式,从而避免三类问题?海极坟窒蛤查岿煌割干杂摊贪易肌室赌滁嗅会攘仪株职肄藏拎戒及竣棠反第6章数据库保护第6章数据库保护311 1、事务的表示方法:、事务的表示方法: Ri(X)表示事务Ti的读X操作; Wi(X)表示事务Ti的写X操作。例:事务T1(Read(B)T1(Read(B);A=B+1A=B+1;write(A)write(A) 事务T2(Read(A)T2(Read(A);B=A+1B=A+1;write(B)write(B)可以表示成: T1:R1(B)W1(A) T2:R2(A)

17、W2(B)二、调度可串行性满喉龟还位舅掠矮杯弹戎措部崖蛀美马笛刁龟唾遣赴猜潘名竿霍烟亡征检第6章数据库保护第6章数据库保护32R1(X)R1(Y)W1(Y)符号表示先于(),即R1(X)先于W1(Y)执行, R1(Y)先于W1(Y)执行,而R1(X)和R1(Y)的先后次序无关紧要。悉宗肯桩勇馈左泅瓜研靡谍墓蔬道秧缄勘啡证吕诧布增语适踌己浴淡芯罢第6章数据库保护第6章数据库保护332、冲突操作定义定义:如果两个操作来自不同的事务,它们对同一数据单位进行操作,并且其中至少有一个是写操作,则称这两个操作是相互冲突的或冲突操作。例:事务T0:W0(X)W0(Y)W0(Z) 事务T1:R1(X)R1(Z

18、)W1(X) 则在这两个事务中有冲突操作:R R1 1(X)(X)与与W W0 0(X)(X) W W1 1(X)(X)与与W W0 0(X)(X) R R1 1(Z)(Z)与与W W0 0(Z)(Z)调度:对于冲突操作不能同时执行,哪个先执行,哪个后执行。馁檀徘皖烹碑良斩捐辖是拖芦罕活腐佳教氢咎达约媳汹馋夕匿荧掖腿嫡陪第6章数据库保护第6章数据库保护343、调度: 事务执行的次序。设=T1,T2, T n是一事务集, 的一个调度S是一个拟序集( ,s)其中: 1) 说明S执行的操作正是T1,T2, T n 的操作。 2) s 说明调度S遵守每个事务的操作的内部执行次序 3) 每对冲突操作的执

19、行次序由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

20、(Z) R1(Z), R1(Z) R1(X) ,R1(X) W1(X), R1(Z) W1(X)求养滞赊靠凤蒙袒晦磁碑韶傻桥柱荚即条紧守画食纽仁锰迪镰适狗肩臃怂第6章数据库保护第6章数据库保护354、串行调度:如果在一个调度中,各个事务不交叉执行,而顺序地串行执行,这个调度被称为串行调度。 定义:定义:如果调度S中的任意两个事务Ti和Tj,如果Ti的所有操作都先于Tj的所有操作,或者相反,则称S为串串行调度。行调度。注意:注意:在串行调度中每一个事务都是在下一个事务开始执行之前提交。因此,串行调度没有并发性串行调度没有并发性,故每一个串行调度都是一个正确的执行。5、并发调度:如果在一个调度中,

21、各个事务交叉地执行,这个调度称为并发调度。宗募添掌孜傣蒙仓犬酉酗潮藕湿泅蹋链敷趴锑逆螟扮朱舵垫匠砂评退讹些第6章数据库保护第6章数据库保护366、可串行化的调度:如果一个事务集的并发调度与某一串行调度是等价的,则称该并发调度是可串行化的 。7、串行化定理定理:定理:一个调度S是可串行化的,当且仅当它的串行图是无环的。无环的。串行图串行图:设S是若干事务T1,T2,Tn的一个调度,S的串行图SG(S)是一个有向图,其构成规则如下:1)图中的结点表示事务2)如果Oi和Oj是冲突操作,且Oi先于Oj执行,则在图中有一条边TiTj。楔潞钩被蓝支桨鹅捡震嘻烁疲匠呛尼云带会讫舔棘钢雅幅导喳金慷檀翌睡第6章

22、数据库保护第6章数据库保护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碳而钡能机掉芍剥给拜档消埠纽致呆栋励栗钧老苞咽革搞傍笑拔某诣颂束第6章数据库保护第6章数据库保护388、等价的串行调度:如果SG(S)是无环的,则S等价于SG(S)的任一拓扑排序。T2T1T3拓扑排序为:T2,T1,T3T1 T2 T3 拓扑排序为:T1,T3,T2 或为:T1,T2,T3 拓扑排序:从无入弧的节点开始递归去除拓扑排序:从无入弧的节点开始递归去除逊掏订墙铅篙割帝测夜静倡恩炼必胡学簇体双碘

23、界衙横卜她绕寝顿级柿箕第6章数据库保护第6章数据库保护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)T0 T1 T2 T3 T4 调度S的串行图拓扑排序为:T0,T2,T1,T3,T4或为:T0,T2,T3,T1,T4虾携逃岳版崔牙浑舒峨曰绞盟莲浪岭缆种偏忠铰烛圾蓄揭器废承彰使措灾第6章数据库保护第6章数据库保护401 1、封锁封锁:事务T在对数据进行操作之前,先向系统申请对其进行加锁,获得锁后不允许其它事务更新该数据,直到事务T释放该数据上的锁。2 2、封锁的类型封锁的类型排它锁排它锁(又称写锁

24、,简称X锁) 若事务T对数据对象A加上X锁,则其它事务不能在A上加任何类型的锁,此时,只允许事务T读取和修改A,直到T释放A上的锁。共享锁共享锁(又称读锁,简称S锁) 若事务T对数据对象A加上S锁,则其它事务也可在A上加S锁,但不能加X锁,事务T和其它事务只能读取A,但不能修改A。三、基于封锁的并发控制焕刮裤冈宪略继对少萧右萨核纱零烙燎蛆塘邻饥翟痹诽脯尚埃髓图给并揣第6章数据库保护第6章数据库保护41封锁封锁级别级别加锁加锁放锁放锁防止丢防止丢失修改失修改保证可保证可重复读重复读不读不读“脏脏”数数据据一级一级事务事务T T在修改数据在修改数据A A之之前必须先对其加前必须先对其加X X锁锁事

25、务结束事务结束才释放才释放X X锁锁可防可防止止不能不能保证保证不能不能保证保证二级二级一级封锁协议一级封锁协议 + + 事事务务T T在读取数据在读取数据A A之前之前必须对其加必须对其加S S锁锁读完后即读完后即可释放可释放S S锁锁可防可防止止不能不能保证保证能保能保证证三级三级一级封锁协议一级封锁协议 + + 事事务务T T在读取数据在读取数据A A之前之前必须对其加必须对其加S S锁锁事务结束事务结束才释放才释放S S锁锁可防可防止止能保能保证证能保能保证证3、封锁协议封锁协议棍傣拥鸦侗球骏凿翰翱初徘填盖敌偶鸳棘良掐毫斤另距肯唆半捉裤阀吧哆第6章数据库保护第6章数据库保护42一级封锁

26、协议例Xlock ARead (A) A=10A=A-5Write(A)CommitUnlock AXlock ARead (A) A=5A=A-5Write(A)CommitUnlock A等待等待等待等待获得 Xlock A事务T1事务T2没有丢失修改READ(C,D)M=C+DREAD(C,D) M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2不可重复读Write (D)Write (C)Xlock CXlock DUnlock CUnlock D杉志完畸娶卞沏嘱烈败修滑场弯葱纂粪矾姚众镐箕凸梧秃韧酪妖帮瑰敝要第6章数据库保护第6章数据库保护43二级封锁协议例READ

27、(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2防止读“脏”数据Write (D)Write (C)Xlock CXlock DUnlock CUnlock DRollBackSlock CSlock D等待等待等待获得Slock C获得Slock DUnlock CUnlock DREAD(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2不可重复读Write (D)Write (C)Xlock CXlock DUnlock CUnlock DSlock CSlock DUnlock CUnlock D等待获得Xlock C获得Xloc

28、k DREAD(C,D)M=C+DSlock CSlock DUnlock CUnlock D等待获得Slock C获得Slock DCommitCommitCommit钡鹏捻迸乔廓净款功纂有类训叮卸戚冶忠舔而苟浴崇蠕燎谬牵敢向不盛坡第6章数据库保护第6章数据库保护44三级封锁协议例READ(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2可重复读Write (D)Write (C)Xlock CXlock DUnlock CUnlock DREAD(C,D)M=C+DSlock CSlock DUnlock CUnlock D等待获得Xlock C获得Xlock

29、D等待CommitCommit殃钩捡趁应冗惹屁仁乔拓拆炙婉恤捍试毒娜控极骋勒耘积说涟雀推跪捣啤第6章数据库保护第6章数据库保护45活锁活锁:事务T1,T2申请数据对象A,T1先给A加锁,T1释放A上的锁后,事务T3又给A加锁,T2等待,这样,A始终被其他事务封锁,事务T2可能长时间得不到A,这种情况称为活锁。 避免活锁的方法:采用先来先服务的原则。死锁死锁 :事务T1已经封锁A,而又想申请封锁B,而此时事务T2已经封锁B,而又想申请封锁A,这样,T1等待T2释放B,而T2等待T1释放A,使得T1、T2均无法继续执行下去,这种情况称为死锁。LOCK A LOCK B LOCK B LOCK A

30、掀唉构撇饼耻靡疗帕骑袱挝睁乾酚篓譬廷岂丹牢匪除未诛疥隋乡妊蠢仕靶第6章数据库保护第6章数据库保护46 1)某一事务在对数据进行读、写之前,先要申请并获得对该数据的封锁。 2)在释放一个封锁之后,事务不再申请和获得任何其它封锁。 说明:说明:规则1避免了两个冲突操作同时存取同一数据。 规则2把每个事务分为两个阶段:上升段和下降段。上升下降每一事务只有得到全部锁以后才放锁。4、两阶段封锁协议(、两阶段封锁协议(2PL协议)协议)泞称锨燕敢冷铱历赌读丰宽积浚晚钧绵鸳悦勒综钳姬咏窗芳晦拣裙措绊掌第6章数据库保护第6章数据库保护47 2PL调度优点:简单 缺点:易死锁 例如:对于如下两个事务采用两段锁协

31、议 T1:R1(X) W1(Y) T2:W2(Y)W2(X) T1与T2的一个调度过程: 1 初始时,没有事务占有锁 2 调度器接到R1(X) , 对X加读锁,执行R1(X) 。 3 调度器接到W2(Y) ,对Y加写锁,执行W2(Y) 4 调度器接到W2(X) ,T2等待 5调度器接到W1(Y) , T1等待 这样就造成了死锁。端共懒碴重居锤亩畅灾骚暑鲸凛痕虐滩最雁予雌姐婚兔误索用为锨锌忧睦第6章数据库保护第6章数据库保护48定理:任何一个遵从2PL协议的调度都是可串行化的。说明:事务遵守2PL协议是可串行化调度的充分条件,而不是必要条件。即若并发事务都遵守2PL协议,则对这些事务的任何并发调

32、度策略都是可串行化的;若对并发事务的一个调度是可串行化的,不一定所有事务都符合2PL协议。渤绪很颗矾路忘刨建优在毫吏橙又毅摇施枕船镁玩杂眷哟组漠郎胀拿披密第6章数据库保护第6章数据库保护49预防死锁预防死锁 * 一次封锁法:要求每个事务必须一次将所有要使用的数据全部封锁,否则,不能执行。 缺点:降低了系统的并发度。 * 顺序封锁法:预先对数据对象规定一个封锁次序,所有事务都按这个次序实行封锁。 缺点:排列封锁次序困难。判断并解除死锁判断并解除死锁 * 超时法:事务的等待超过了规定的时限 * 等待图法:检测等待图中是否有回路存在。四、解决死锁荤句际室珠于右馏幕裴钎峰堑锻兼埔雪卤掇蒙铺溢闺徘避液漓

33、卜栖氮槐付第6章数据库保护第6章数据库保护506.4 数据库安全性数据库的安全性数据库的安全性:就是防止非法用户使用数据库造成数据泄露、更改或破坏,以达到保护数据库的目的。计算机系统安全性计算机系统安全性 为计算机系统建立和采取的各种安全保护措施,保护计算机系统(硬件、软件及数据)不会遭到破坏。保护数据库以防止不合法使用一般计算机系统中,安全措施是一级一级层层设置的背纬找绳涸啮畦伟蓝铆推椰横甸膛新鲜癣超坝飘沃砒约讥省贼窜捷崭框霍第6章数据库保护第6章数据库保护51用户标识与鉴别存取控制 视图机制审计数据加密用户DBMS DB OS用户标识和鉴定存取控制操作系统安全保护密码存取*为不同的用户定义

34、不同的视图把用户对数据库的所有操作自动记录下来放入审计日志中。 Oracle 安全措施主要有: 1 用户标识和鉴定 2 存取控制 3 审计桶但早臣根琴苫强勿逻晚留即适疯夺殷涯须空置宵家抓糙糜磊恩谭秀齿乘第6章数据库保护第6章数据库保护52XMSJCZ用户甲02-10-6 22:32:55 进入系统用户甲02-10-8 20:33:07 录入数据用户乙02-10-9 8:50:42 进入系统用户乙02-10-11 11:53:13 修改密码用户丁02-10-13 7:19:29 进入系统用户丁02-10-28 8:00:53 查询数据萧丸链狞卖寺蓖请港孔慧焊眺手总每嚎啡隙瑞诚惨噪痈盛盟貉动赏币弃

35、组第6章数据库保护第6章数据库保护531. 用户标识与鉴别用户标识:Identification用户名:User Name,或者用户标识号:UID用户鉴别:Authentication用户名+口令:Password滥斥函坐坝藐奇进逼札罚茶钉暇法划母狄滩孜靶铃澳囚但茂薄擅伎哦距削第6章数据库保护第6章数据库保护542. 存取控制数据库安全的主要思路:存取控制给合适的人以合适的权限存取控制机制定义用户及其权限,在数据字典中登记用户权限;权限合法性检查沽壕软革榔粥强完迈珐黔葱如改淑盗桃绵春豢愚洼丙晓氰翁免将硅恬瑞愤第6章数据库保护第6章数据库保护552. 存取控制两类实现存取控制的方法自主存取控制自

36、主存取控制: Discretionary Access Controla)用户对不同的数据对象有不同的权限;b)不同用户对同一对象具有不同的权限;c)允许用户之间的传递授予权限强制存取控制强制存取控制: Mandatory Access Controla)以一定的密级标注数据对象b)授予每个用户以某一级别的许可证多数DBMS均支持DAC痕枝薛什闰给刻罗执萧邹癣纺亮迫胎篓咳租兑池衍们剃互悠布酥销姨煽瘸第6章数据库保护第6章数据库保护56自主存取控制DAC用户权限谁 + 在哪个对象上 + 可以干什么事情授权:将用户权限用户权限授予特定用户用户的过程用户数据库对象操作类型用户权限的二要素动陆菠识哺信

37、掖年兽惭啪装款丧裔蚤州美涨谈窟届眉讨俩旋邯署痘愿口久第6章数据库保护第6章数据库保护57自主存取控制DAC对象类型 数据库对象数据库对象操作类型操作类型数据库模式Create Schema基本表Create Table, Alter Table模式视图Create View索引Create Index数据基本表和视图Select, Insert, Update, Delete, References, All Privileges数据属性列Select, Insert, Update, Delete, References, All Privileges荆链筒逊针刁殖双川砷喻民宗哆奶谊积撂倚逊

38、褐蓖蛛狱褥稻渍蒙胖供鞍屯第6章数据库保护第6章数据库保护58自主存取控制DACSQL标准对DAC的支持授权:Grant语句回收:Revoke语句SQL创建用户时赋予用户的权限DBA、RESOURCE、CONNECTCreate User With DBA | RESOURCE | CONNECT章屈偷冠古慕樱硬纬层皆香芒占虹俯阎袍铬古埔操膊蒲摔碱搐蹬乞缅畸轿第6章数据库保护第6章数据库保护59自主存取控制DAC默认用户权限: CONNECTCreate User With DBA | RESOURCE | CONNECTCONNECT用户的初始权限:只能登录数据库RESOURCE用户的初始权限

39、: 创建基本表和视图,并成为所创建对象的属主 不能创建模式和新用户 可授权DBA用户的初始权限: 创建新用户、模式、基本表、视图等 拥有对所有数据库对象的存取权限 可授权渡镁煤醉诌鹅贸删氯榷疗蛛蜡怖老簇纷淋谭鼻蔡宜恿月贡候惊茶箩永篙镣第6章数据库保护第6章数据库保护60自主存取控制DAC授权权限:Grant语句把“在某个对象某个对象上” “干某种事情某种事情”的权限授予“某个用户某个用户”GRANT ON TO WITH GRANT OPTION浦弱巍榷砍尔叛渊光捶狗供倪盯解溉迸泳廷嵌皮冒摘根享逞懦咕揭惊炎逾第6章数据库保护第6章数据库保护61自主存取控制DAC := | := PUBLIC|

40、PUBLIC是所有数据库用户的总称若有WITH GRANT OPTION,则用户可将此特权转授给其它。不允许循环授权GRANT ON TO WITH GRANT OPTION卒瞻蓉降大食围渡炼挂柔语底壮上魁峨繁鼎疾麦擂磨乒均授铰辰要哎犬期第6章数据库保护第6章数据库保护62例如:GRANT SELECT ON TABLE 表1 TO PUBLIC;/将对表1的SELECT特权授予所有的用户。GRANT SELECT(列1,列5) ON 表1 TO sam;/将对表1中1和5列的INSERT特权授予sam。GRANT ALL PRIVILEGES ON TABLE 表1 TO bob,sam;/

41、将对表1的所有操作特权授予bob和sam。GRANT UPDATE(列2,列4) ON 表1 TO wang WITH GRANT OPTION;/将对表1中2和4列的UPDATE特权授予wang,并允许他将此特权转授给其它用户。冕秉誉号驭插欢吉颁雁殃伸梭沪被强浑讹柏久撕袒宦拜霄棒或吴狈孩舜桔第6章数据库保护第6章数据库保护63自主存取控制DAC回收权限:Revoke语句把“在某个对象某个对象上” “干某种事情某种事情”的权限从“某个用户某个用户”那里要回来REVOKE ON FROM CASCADE | RESTRICTREVOKE REVOKE UPDATE(Sno) UPDATE(Sno

42、) ON ON TABLE TABLE Student Student From From user4;user4;骆廖餐成轿敝陈睦肄涵衡鄙巴虚悸释炸性找蔷胸彭汛揉跳顶粘鹃獭仑示逮第6章数据库保护第6章数据库保护64以单个权限为单位授权太过麻烦角色角色:权限的集合为具有相同权限的用户群创建一个角色基于角色来管理权限简化授权过程创建角色给角色授权或授予角色给用户授予角色自主存取控制DAC性绳披揽产歼兜琼熏才奋佩踏痒猖尚略缀欺电念作逾任垒驮哄媳磅恍迪骇第6章数据库保护第6章数据库保护65自主存取控制DAC角色的创建CREATE ROLE 给角色授权GRANT ON TO GRANT TO WITH

43、 ADMIN OPTION给用户授予角色GRANT TO WITH ADMIN OPTION柬粉讣憾谆颐手遥懒萌邯规皖贿桔龋砌失摸涵垦汽疑攀补酬嘴写翘移柏勇第6章数据库保护第6章数据库保护66角色权限的回收REVOKE ON FROM 举例:创建角色R1使R1具有Student表的Select/Update/Insert权限将R1角色授予用户王平和李明修改R1,使其具有Student表的Delete权限自主存取控制DAC损墟躁派趁版藕揖火醛棚般刺盲瘩奠纱虎呻殴娃誊穴司钦窗蛛叙些墒嘉嫉第6章数据库保护第6章数据库保护673. 视图机制视图机制王平老师只能查询计算机系学生的信息系主任李明具有处置计

44、算机系学生信息的所有权限CREATE VIEW CS_STU AS Select * From Student Where Sdept = CS;GRANT SELECT ON CS_STU TO 王平;GRANT ALL PRIVILIGES ON CS_STU TO 李明勾忱嘴讼剂爵蹬樱习轮望佯克芬订指酵扣卓藉亿役柳躺岗虱辨煤抗找石降第6章数据库保护第6章数据库保护684. 审计Audit和数据加密审计:C2级DBMS的必要指标,是把用户对数据库的所有操作自动记录下来放入审计日志用户级审计系统级审计数据加密揩呸追笔彦谁创浪丸荚溜岗艾逛理层惠箍骏聋贫冀绷栋盐萧央显峪黍翱雹第6章数据库保护第6

45、章数据库保护69数据库完整性:数据库完整性:数据的正确性和相容性。数据的正确性和相容性。完整性安全性数据库完整性和安全性的区别完整性防止错误信息的输入与输出。安全性是保护数据库防止恶意的破坏和非法的存取。6.5 数据库完整性数姨吱测剂壮坯妻支吟辈椅意撂控斩坊搔免搁扩葡兄包峻赠卢资得群少煎第6章数据库保护第6章数据库保护70DBMS对数据库完整性的支持提供定义完整性约束的机制实体完整性、参照完整性、自定义完整性提供完整性检查的方法违约处理:拒绝执行、级联执行6.5 数据库完整性犁案盒豆要螟让嘶颂称恕惜槐斋厨殿橡偿崎恬演猜搔诣丝遣啮迸柞蜘痞儿第6章数据库保护第6章数据库保护711 完整性约束的概念

46、完整性约束:加在数据之上的语义约束完整性约束的作用对象 关系:若干元组间、关系集合上以及关系之间的联系的约束 元组:元组的约束是元组中各个字段间的联系的约束 属性列:主要是列的数据类型、取值范围、精度、排序等约束条件诌佃痕亡头皮杖炼急篱靳俭香迟雄婚铆葵元莽轻凉健琳腻纹善龋胶种怒船第6章数据库保护第6章数据库保护721 完整性约束的概念完整性约束的类型静态约束静态约束:数据库在确定状态时数据对象应满足的约束条件;动态约束动态约束:数据库从一种状态转变为另一种状态时,新、旧值之间应满足的约束条件针祈蔽蕉寺忿摩烹貉敞音胆琶溶调奶蔷荚淋扭涝袒跟幕捅迹雹害饰贿裔宠第6章数据库保护第6章数据库保护73 1

47、)静态列约束:是对一个列的取值域等的限制。 对数据类型的约束 ; 对数据格式的约束 ; 对取值范围或取值集合的约束; 对空值的约束 ;2)静态元组约束:规定组成一个元组的各个列之间的约束关系。例如:库存关系中出库数量不能大于库存数量。3)静态关系约束:反映了一个关系中各个元组之间或者若干关系之间存在的联系或约束。 实体完整性约束; 参照完整性约束;唁渤妄桔抓司恶易牙愈认乐备喳今躲聋滦涌喷砚炳晋与摄杏袭独夹滴撑涵第6章数据库保护第6章数据库保护74 1)动态列约束:规定修改列定义或列值时应满足的约束条件。如:将允许为空的列修改为不允许为空; 学生的年龄只能增长。2)动态元组约束:规定修改元组的值

48、时其各个属性列之间需要满足的约束条件例如:职工工资调整时新工资不得低于原工资工龄*1.5 。3)动态关系约束:加在关系变化前后状态上的限制条件 。事务的ACID特性:原子性/一致性/隔离性/持久性狱掖懒艘袭傣寥供精驾陛越蝎改鼎仕瘤疵翅考敖洼案郁沪迭曹撤闭兰悼惧第6章数据库保护第6章数据库保护752 实体/参照完整性约束实体完整性:PRIMARY KEY列级定义关系级定义参照完整性:FOREIGN KEY / REFERENCES违约处理:拒绝、级联删除、设置为空绵糜获班亭涉雍徽妇超这侩畜家花夺闸堵温侨彼梗奥介吼差付详会倘盼垒第6章数据库保护第6章数据库保护762 实体/参照完整性约束CREAT

49、E TABLE SC ( Sno CHAR(8) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE NO ACTION ON UPDATE CASCADE);御象带向提参侣咸旁喝翱落概波杀抑必掸仆柿泊从毒鉴庸印裹烧莽输毅乖第6章数据库保护第6章数

50、据库保护773 用户自定义完整性约束定义属性列的约束条件列值非空:NOT NULL列值唯一:UNIQUE语义检查:CHECK短语短语举例:性别只允许取值“男”或“女”CREATE TABLE Student ( Ssex CHAR(2) CHECK (Ssex IN (“男男”, “女女”), );成绩只能在成绩只能在0-100之间之间:CREATE TABLE SC ( . . Grade SMALLINT CHECK (Grade=0 and Grade=100), );行硫稿缨姻眷各砌箔纺或涧重窍喧昧衷娃铀贪卷稻阮秸溺慑鸟葫睹在灯瑚第6章数据库保护第6章数据库保护78违约处理和保护:违约

51、处理和保护:create table s(create table s(sno char(2) primary key,sno char(2) primary key,sgender char(2) check(sgender in(f,m)sgender char(2) check(sgender in(f,m)insert into s values(a,1)INSERT 语句与 COLUMN CHECK 约束 CK_s_sgender_2D27B809 冲突。立燕孵壁溃巴廷颅氦拽兼鞋浑醚偏秉拼迂综沮蹋夹殃矾躁惊啦柔蜂科姥步第6章数据库保护第6章数据库保护793 用户自定义完整性约束定义元

52、组的约束条件:CHECK 男性的名字一定不能以Ms. 打头CREATE TABLE Student ( Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN (男男,女女) and (Ssex=女女) OR Sname NOT LIKE Ms. %), );驻杂凋蒂拭净揽恍强乳枉颇浅亢蝴烦症撵肄挨设隶芽后留歇约屁靡争埋姐第6章数据库保护第6章数据库保护803 用户自定义完整性约束完整性约束命名子句CONSTRAINT PRIMARY KEY短语 | FOREIGN KEY短语 | CHECK短语CREATE TABLE Student ( Sn

53、o NUMERIC(6) CONSTRAINT c1 CHECK (Sno BETWEEN 90000 AND 99999), Sname CHAR(8) CONSTRAINT c2 NOT NULL, Ssex CHAR(2) CONSTRAINT c3 CHECK (Ssex IN (男男,女女), );矾记型声贾叠眯苹找雅订秽氯剂台脐厘亦榜阐厚狭吨屈综苞苞浓逸掌都沟第6章数据库保护第6章数据库保护813 用户自定义完整性约束域约束:DOMAIN建立性别域:CREATE DOMAIN GenderDom CHAR(2) CHECK (VALUE IN (男, 女);CREATE TABLE

54、 Student ( Ssex GenderDom , );卓畦审户买到基孽蚜茎槽瓮冯新赃宣芍巾纂姜岿茂蟹削触祈毡的仟起谗鹅第6章数据库保护第6章数据库保护823 用户自定义完整性约束触发器:TRIGGER定义在关系表上的由事件驱动的特殊过程一旦定义,任何用户对表的增删改操作均会由DBMS自动激活相应的触发器,进行完整性检查非SQL核心规范的内容,但一般DBMS均提供支持脖输倾轧肮虱第戍磅跪楚彼利辊合碧相齿僻既抵羞蘑裹淋寻嘶苔档卉谩托第6章数据库保护第6章数据库保护83创建一个触发器sc_trig,当插入或者更新“学习”表时,该触发器检查“成绩”是否在指定的范围内CREATE TRIGGER

55、sc_trig ON dbo.学习 FOR INSERT, UPDATEASdeclare score smallintselect score=scorefrom 学习if (score100)begin raiserror(学成成绩必须在0到100之间,16,1) rollback transactionend赋剿摹均祈桃纺掌坦论鼠闲郑穆吾债鸭辆穗率乎球票诣乎缘奴蚜里孟谩扼第6章数据库保护第6章数据库保护84安全性和完整性小结安全性用户标识和鉴别、存取访问控制、视图、审计、数据加密DAC与其SQL支持:GRANT、REVOKE、角色完整性完整性约束的概念实体/参照完整性用户自定义完整性:主键、外键、CHECK、CONTRAINT、DOMAIN、TRIGGER又条哲跳孝捐击针剁瞅武卿俩玉见趾蹄座命衍二烙惟残逾芥越疮坐吗万瑞第6章数据库保护第6章数据库保护85小结6.1 事务的概念6.2 数据库恢复技术6.3 数据库并发控制6.4 数据库安全性6.5 数据库完整性敢龋铱恃乓阎私幅糕剔乍诚蹦瘦缓值遁飞而加滓谗谚雹炙校试寒莲滞盛腹第6章数据库保护第6章数据库保护86

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号