《数据库管理系统》_第1页
《数据库管理系统》_第2页
《数据库管理系统》_第3页
《数据库管理系统》_第4页
《数据库管理系统》_第5页
已阅读5页,还剩140页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 数据库管理系统本章主要介绍DBMS的软件系统组成和主要的实现技术,如事务管理、并发控制、数据库恢复、数据的安全性和完整性;结合SQL Server 数据库管理系统,说明这些技术的具体实现,以及SQL Server 数据库管理系统的功能和服务性程序;最后介绍Oracle数据库管理系统的组织结构特点1精选ppt7.2 事务管理例:设想网上购物的一次交易,至少包括以下数据库操作: 保存客户付款信息(可能包括与银行系统交互) 更新客户所购商品的库存信息 生成订单并且保存到数据库中 更新用户相关信息,例如购物数量等等2精选ppt正常情况:所有操作顺利进行,交易成功,与交易相关的所 有数据库信息也

2、成功地更新。异常情况:交易失败(例如,生成订单失败),使数据库中信息将会不可预测。此时该怎么办?如何在交易失败时,使数据库中的数据库恢复到交易前的状态? 3精选ppt例2:考虑飞机订票系统中的一个活动序列:(1) 甲售票点读出某航班的机票余额(设=16); (2) 乙售票点读出同一航班的机票余额也为16;(3) 甲售票点卖出一张机票,修改余额为15,并把A写回数据库;(4) 乙售票点也卖出一张机票,也修改余额为15,并把A写回数据库。4精选ppt结果:卖出两张票,数据库中机票余额只减少1。 如何解决出现的这些问题,以保证数据库中的数据是一致的?数据库中,事务就是解决这些问题的技术手段。5精选p

3、pt何为数据库事务?“一荣俱荣,一损俱损” 很能体现事务的思想。很多复杂的事物要分步进行,但它们组成一个整体,要么整体生效,要么整体失效。这种思想反映到数据库上,就是多个SQL语句,要么所有执行成功,要么所有执行失败。 7.2.1 事务的基本概念6精选ppt事务的定义:是用户定义的一个数据库操作序列,且操作序列中的所有操作要么全做,要么全不做,是一个不可分割的整体。注意:在关系数据库中,一个事务可以是一条SQL语句,也可以是一组SQL语句,甚至是一个程序。事务中的SQL语句必须按逻辑次序执行。例:现规定:网上购物的一次交易的所有操作要么全做,要么全不做。则可以定义为一个事务。7精选ppt需要事

4、务的原因: (1)数据恢复的需要 误操作或系统崩溃时恢复数据 (2)并发控制的需要 多个事务同时操作时保证对数据的一致性8精选ppt事务的应用背景例1:某公司在银行中有A,B两个帐号,现在公司想从帐号A中转帐1万元到帐号B。 分析:要转帐正确,必须保证A中取出1万元的操作和在B中增加1万元的操作要么都成功完成,要么都不做。如何实现? 把这二个操作定义在一个事务中。9精选ppt银行转帐:事务T从A帐户过户1万元到B帐户。T:read(A);A := A 1;write(A);read(B);B := B + 1;write(B);read(X):从数据库传送数据项X到事务的工作区中。write(

5、X):从事务的工作区中将数据项X写回数据库。10精选ppt7.2.2 事务的特性事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、分离性(Isolation)、持久性(Durability)。这四个特性也简称为ACID特性。11精选ppt(1) 原子性(Atomicity) 事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。(2) 一致性(Consistency) 在一个事务执行之前和执行之后数据库都必须处于一致性状态。一致性:假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。12精选ppt例:下列语句定义了

6、一个事务 begin transaction Update 库存 set 库存量=库存量-2 where 产品编号=C001Insert into 付款 values (5122000000,300,建行, C001 ,2007.07.2.03)Insert into 订购单 values(5122000000, C001 ,2,已付)commit13精选ppt(3) 分离性(Isolation)并发执行的事务不应该交叉影响。即一个事务内部的操作及正在操作的数据不被其它企图进行修改的事务看到。 对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行。

7、分离性是DBMS针对并发事务间的冲突提供的安全保证,BMS通过并发控制机制在并发执行的事务间提供不同级别的分离。14精选ppt(4) 持久性(Durability)一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,经得住任何系统故障。 当系统或介质发生故障时,确保已提交事务的更新不能丢失。 DBMS保证采取措施:系统发生故障不能改变事务的持久性。持久性通过事务日志、数据库备份和恢复来保证。15精选ppt7.2.3 事务处理语句1、事务的开始和结束定义事务的语句格式:BEGIN TRANSACTION 事务名称 SQL 语句 COMMIT TRANSACTION(或 ROLLB

8、ACK TRANSACTION)16精选ppt事务的开始显示开始: begin transaction隐式开始:首次执行alter 、 create 、 insert 、open等T-SQL语句会自动定义一个事务。17精选ppt事务的结束 COMMIT transaction :事务正常结束,提交事务的所有操作(读+更新),事务中所有对数据库的更新永久生效 ROLLBACK transaction :事务异常终止,事务运行的过程中发生了故障,不能继续执行,回滚整个事务或是存储点定义以后所发生的所有更新操作,事务滚回到开始时的状态18精选ppt注意: 组成一个事务的SQL语句由用户根据情况而定。

9、 定义事务时,BEGIN TRANSACTION语句与COMMIT TRANSACTION( ROLLBACK TRANSACTION)语句必须成对出现。ROLLBACK TRANSACTION应该在COMMIT TRANSACTION语句之前调用。一旦提交就不能再撤销。19精选ppt、 定义、提交和回滚事务示例BEGIN TRANSACTION demo SELECT * FROM student SAVE TRANSACTION save_demo /存储点/ INSERT student (学号,姓名) VALUES (20040101,zhang) SELECT * FROM stud

10、ent ROLLBACK TRANSACTION save_demo/回滚/ COMMIT TRANSACTION SELECT * FROM student /结果没有变化/20精选ppt7.2.4 SQL Server的事务模式SQL Server的事务模式可分为三种:显式事务隐式事务自动事务模式。21精选ppt、显式事务模式指由用户显示执行begin transaction而定义事务的开始。 用commit或rollback结束事务。Commit transaction :事务正常结束,可以提交。Rollback transaction:事务非正常结束,撤消事务已做的操作,回滚到事务开始

11、时状态。22精选ppt、隐式事务使用某些TSQL语句时自动启动事务,但需要有COMMIT 或rollback 标识事务的结束。例如:首次执行alter 、insert 、create 、open等都会自动起动一个事务(一般Oracle默认模式)注意: 事务结束后,下次执行这些语句又将自启动下一个新事务23精选ppt在SQL Server中,事务模式的设置方法:SET IMPLICITY_TRANSACTIONS ON:进入隐式事务模式SET IMPLICITY_TRANSACTIONS OFF:退出隐式事务模式。当显式事务被提交或回滚,或者关闭IMPLICIT_TRANSACTIONS连接选项

12、后,SQL Server又进入自动事务管理模式。24精选ppt、自动事务模式:每个T-SQL语句都当作一个事务,成功执行自动提交,执行过程中产生错误时自动回滚。是SQL Server的默认事务管理模式。当应用程序与SQL Server建立连接后,直接进入自动事务模式,直到用BEGIN TRANSACTION语句开始一个显式事务,或者打开IMPLICIT_TRANSACTIONS 连接选项进入隐式事务模式为止。25精选ppt7.2.5 批处理批是一组SQL语句的集合,一个批以GO结束。GO不是SQL语句。它是在某些客户端工具中使用的符号,客户端工具将它解释为:最后一个GO上面的所有内容都应该一起

13、发送到服务器来执行。批中语句被一次提交给SQL Server,SQL Server将这些语句编译为一个执行单元,称做SQL Server执行计划。26精选ppt批和事务的区别(1)批用于客户端控制多个语句如何发送到SQL Server以便立即处理。事务是服务器端的执行T-SQL语句的基本工作单元。(2)批语句的组合发生在编译时刻,事务中语句的组合发生在执行时刻。(3)批中某个语句存在语法错误,SQL Server将取消这个批中所有语句的执行。事务中某个操作违犯约束、触发器等条件时,SQL Server回滚整个事务。(4)批中可包含多事务,事务中可包含多个批。27精选ppt7.3 并发控制7.3

14、.1 问题的产生7.3.2 事务并发执行带来的问题7.3.3 封锁技术7.3.4 SQL Server的封锁方式28精选ppt1、数据库是共享资源、数据库系统中存在多个用户。特点:多用户的存在使得在数据库系统中,同一时刻可能需要多个事务运行。 例如:在银行数据库系统中,有一个银行帐号有余额20,000元,某一时刻,户主在银行前台取款2,000元,与此同时又有另一个银行帐户正在向该帐户转帐5,000元。7.3.1 问题的产生29精选ppt(1)事务串行执行每一时刻只有一个事务运行,其他事务必须等到该事务结束以后方能运行不能充分利用资源,不能充分发挥数据库共享资源的特点T1T2T3事务的串行执行方

15、式2、多事务执行方式有以下几种不同的执行方式30精选ppt(2)交叉并发方式: 并行事务轮流交叉运行,能充分利用CPU资源,改善事务的响应时间。(3)同时并发方式 在多处理机系统中,多个事务是真正的并行运行事务的交叉并发执行方式t31精选ppt1、如果对多个事务的并发执行不加以控制,会出现什么现象?(1)产生多个事务同时存取同一数据的情况 (2)事务可能会存取不正确的数据,破坏数据库的一致性。7.3.2 事务并发执行可能带来的问题32精选ppt 例:设上例中的取款为事务T1,转帐为事务T2,如果T1和T2的操作序列如下,将会出现什么现象? (1) T1查询帐号余额20,000元; (2) T2

16、查询该帐号的余额20,000元; (3) T1支付客户2,000元,改用户余额为18,000元; (4) T2将转帐的5,000元加到帐号上,修改用户余额改为25,000元。 结果:用户余额为25,000元,银行损失2000元! 原因:第一次对数据的修改被第二次修改覆盖了33精选ppt引起这种现象的原因:在并发操作中,对并发事务的操作序列的调度是随机的,没有加以控制。 对事务的并发执行不加控制,将会带来以下三类问题:丢失更新 (lost update)读脏数据 (dirty read)读值不可复现 (unrepeatable read)34精选ppt(1)丢失更新如右图:T1和T2并发执行,R

17、的初值为5。执行结果:R=15。原因:由于并发对R写,T1对R的更新被丢失。T1T2read (R)read (R)R := R+1write (R)R := 3Rwrite (R)时间把R由5增加1变为6把R由5乘3变为15初始值R=5 两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失。35精选ppt(2) 读“脏”数据 查询一个已经被其他事务更新、但尚未提交的元组可能引起该类问题。即:事务T1修改某一数据,并将其写回磁盘事务T2读取同一数据后,T1被撤销,数据恢复原值,T2读到的数据就与数据库中的数据不一致。为“脏”数据36精选ppt R恢复为

18、100ROLLBACKRead(R) Write(R) RR*2 Read(R) T2T1读“脏”数据 R的初值为100 T2读到的R为200 撤消后, T2所读的R值与数据库内容不一致,是“脏”数据 例:事务T1、T2对数据R进行操作,操作序列为:37精选pptT1T2begin tranbegin tranupdate accont set 余额=余额-2000 where 帐号=010001select sum(余额) from accont wth (nolock)rollback例:设置隔离级别为:READ UNCOMMITTED 或在selec语句中加上with (nolock)。

19、事务T1、T2的操作序列如下,产生了读脏数据:38精选ppt(3)不可重复读 指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。包括三种情况:(1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值39精选ppt(2)事务T1按一定条件从数据库中读取数据记录后,T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失了 。(3)事务T1按一定条件从数据库中读取数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。 后两种情况也称为幻影现象(或幻想读问题)40精选pptT1读取B=1

20、00,对其进行修改T2修改B=200,并写回数据库T1重读B校对,但B=200,与第一次所读值不一致 。(验算不对)和=260R(B)=200 R(A)=60(B)=200BB*2R(B)=100求和=160 R(B)=100 R(A)=60T2T1不可重复读 例如:更新B值读更新前的B值读更新后的B值41精选ppt例:事务T1、T2的操作序列如下,产生了幻想读T1T2begin tranbegin traninsert into accont values(010001,zhang,200)Select 余额 from accontwith(nolock)update accont with

21、(nolock)set 余额=余额-2000 where 帐号=010001Select 余额 from accont with(nolock)42精选ppt2、并发控制的任务用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,保证事务的隔离性和数据库的一致性3、如何对并发事务进行管理,避免交叉访问破坏数据库的一致性状态?商用的DBMS一般采用封锁(Locking)技术43精选ppt7.3.3 封锁技术一、基本思想 当需要查询或更新数据时,先对数据进行加锁,以避免来自其他事务的干扰。针对不同的干扰问题可以有不同的封锁机制。 “锁”是一种软件机制,用来指示某个用户已经占用了某种资源

22、,防止其他用户做出影响本用户的数据修改或破坏数据库数据的完整性和一致性。44精选ppt 所谓资源,主要指用户可以操作的数据行、索引以及数据表等。例:当用户对一个表(或记录)进行更新时,首先封锁该表(或记录),使其他用户不能在同一时刻更新该表(或记录),只能在该用户更新后再实施别的更新。45精选ppt二、加锁(locking)和解锁 (unlock)加锁:事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁。如果要访问的数据单元还没有设置其他锁,就可获得访问权,否则等待。解锁:进程访问结束释放锁。注意:有些封锁在执行完相应操作后就自动释放封锁,有些封锁则保持到事务结束时才释放。46精选pp

23、t三、锁的类型事务对数据对象拥有的控制由封锁类型决定。锁的类型有独占锁和共享锁:独占锁(X锁,排它锁) :事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。 任何写操作均要使用独占锁。47精选ppt共享锁(S锁,读锁) :若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。 任何试图修改某数据的事务,如果该数据上有共享锁,那么该事务就会被阻塞,直到所有的共享锁被释放。 S锁只用于并发的读。48精选ppt两种锁的相容矩阵T1T2独占锁 共享锁 独占锁共享锁 NO NO YESNO YES YE

24、SYES YES YESYES=相容的请求, NO不相容的请求49精选pptT1T2begin tranbegin tranupdate accont with(holdlock) set 余额=余额-2000 where 帐号=010001rollback例1:当设置隔离级别为:READ COMMITTED或更高, 或在selec语句中加上with (holdlock)。事务T1、T2的操作序列如下,则不会读脏数据:select sum(余额) from accont with(holdlock)进入等待等待select sum(余额) from accont with(holdlock)执

25、行T1修改之前加X锁T2请求加S锁,由于T1未结束, T2等待T1撤销,恢复为原值T2读的是原值50精选pptT1T2begin tranbegin tranupdate accont set 余额=余额-2000 where 帐号=010001commit例2:设置更高隔离级在selec语句中加上with (holdlock)。事务T1、T2的操作序列如下,不会产生幻想读等待等待select余额from accont with(holdlock)insert into accont values(010001,zhang,200)进入等待select余额from accont执行T1查询时加

26、锁T2请求加锁,由于T1未结束, T2等待T1提交,释放锁T2获得锁,执行51精选ppt两段式封锁协议的实施 为了不破坏事务的可串行性,事务对数据单元的加锁和释放锁要遵守一定的协议。两段式协议: 一个进程分为两个阶段 第一阶段;锁的数目稳定的增长,全是加锁,不能释放锁。 第二阶段:只能释放锁,而且是一起释放所有获得的锁。52精选ppt两段式协议实施的过程和内容:1) 一个数据单元在第一次被访问之前必须对它加锁。2) 一个数据单元已经有了一个共享锁,只能对它再加共享锁。如果已有了一个独占锁则不能再加任何锁。3) 一个事务的所有锁,只能在该进程结束时一起释放DBMS通过拦截从事务来的操作满足第一条

27、,第二是事务本来要完成的,第三条在事务结束时实现。53精选ppt封锁技术是否带来新的问题?1、活锁 指:事务T1封锁了数据R,T2又请求封锁R,T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待 .T2有可能永远等待,这就是活锁的情形四、 活锁和死锁避免活锁:采用先来先服务的策略54精选ppt2、 死锁 两个或多个事务都已封锁了一些数据对象,然后又都请求对已被其他事务封锁的数据对象加锁,出现永久循环等待其它事务释放资源的现象。 死锁发生时,有两个或多个事务处于相互等待的状态,即每个事务都在等待其它事务释资源。55精选ppt例:事务T1 、T2和T3并发

28、执行,如下所示:R2R1R3T1已占有资源T3已占有资源T2已占有资源解决死锁的方法: 1. 预防死锁 2. 死锁的诊断与解除56精选ppt1、死锁的预防预防死锁的发生:破坏产生死锁的条件 常用方法:一次封锁法 、顺序封锁法一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。存在的问题:降低系统并发度;难于事先精确确定封锁对象57精选ppt顺序封锁法预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。 例如,在上图中,如果T1、T2对数据的封锁次序都是 R1-R2-R3,就不会出现死锁。存在的问题:维护成本大 ; 难以实现;58精选ppt2、死锁的诊断与解除

29、死锁的诊断:超时法和事务等待图法 (1) 超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。特点:实现简单、但有可能误判死锁时限若设置得太长,死锁发生后不能及时发现(2)等待图法:用事务等待图动态反映所有事务的等待情况59精选ppt3、解除死锁 发现死锁后,靠事务本身无法打破死锁,必须由DBMS干预。DBMS对死锁一般作下列处理:自动使“年轻”的(完成工作量最小)的事务撤消持有的所有的资源。让“年老”的事务继续运行,完成后释放持有的所有资源“年轻”的事务重新执行。60精选ppt五、封锁策略数据单元:数据库中某独立的数据部分。通常,DBMS封锁的数据单元是一个树形结构,此时封锁策

30、略有如下两种:(1)分层封锁策略:封锁数据单元意味着用同样的封锁模式封锁其所有后代单元。(2) 封锁一个数据单元,只封锁该单元本身,不涉及它的后代。61精选ppt关系数据库管理系统中,采用分层封锁策略 例:如果T1已经对关系R中的某元组加了S锁,T2要对R加X锁(X锁隐含地封锁该元组),则T1、T2就会产生矛盾。62精选ppt六 封锁的粒度 封锁数据单元的大小称为封锁粒度 封锁单元可以是逻辑单元,也可是物理单元。 关系数据库中逻辑单元为:属性值、元组、关系、某索引项、整个索引、直至整个数据库。 关系数据库中的物理单元为:页(数据页或索引页)和存储区。63精选ppt封锁粒度、系统并发度和并发控制

31、开销的关系: 1)封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度越小,系统开销也越小,并行度也就越低。 2)封锁粒度越小,并行度越高,系统管理锁的开销也越大,实现起来也更加困难。64精选ppt 多粒度锁数据库DB. 图7-9 分层多粒度树关系Rn关系R1元组m元组1属性k属性1.多粒度封锁:在一个系统中同时支持多种封锁粒度供不同的事务选择。也就是可以锁定的资源的层次。重要用途是用来支持并发操作和保证数据的完整性。 它是将封锁的粒度按层次构成多粒度树 65精选ppt 多粒度锁封锁策略中对一个节点加锁意味着这个节点的所有子节点也被加以同样类型的锁。显式封锁:应事务的要求直接加到数据对象上

32、的封锁;隐式封锁:由于其上级节点加锁,该数据节点也被加上了锁。这两种加锁的效果是一样的。66精选ppt7.3.4 SQL Server的锁定方式SQL Server里的锁定动作是自动的,它由一个内部的锁管理器进程实现。 SQL Server提供了多粒度锁,在事务执行过程中,SQL Server锁管理器自动为事务选择合适的加锁类型和加锁粒度(行、页、表等)。例如,create index语句会锁定整个表,而update语句会锁定一行或多行或整个表。67精选ppt SQL Server锁类型 锁管理器使用基于执行活动类型的不同锁模式锁定资源,即基于事务类型(如select,insert,delet

33、e等)选择锁的类型。锁管理器使用的各种类型的锁如下:68精选ppt共享锁(shared):用于读事务(如select语句),可对行、页和表使用共享锁,允许其他事务读。完成后即释放;更新锁(update):用于更新操作(如Update、 Delete语句) ,可以对行、页和表使用更新锁。更新锁同时只能有一个事务拥有。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。 69精选ppt独占锁(execusive):用于写事务(如Insert、Update、Delete语句),实际修改时使用;确保不会同时对同一资源进行多重更新 意向锁(intent):说明其下级结点正在被加锁。

34、模式锁(schema):有时也叫架构锁,在执行依赖于表架构的操作时使用。注意:可以在操作语句中用with (锁类型)对SQL语句自定义锁,可以用系统存储过程sp_lock或企业管理器浏览锁。70精选ppt7.4 数据库恢复7.4.1 数据库恢复的概念7.4.2 数据库系统的主要故障7.4.3 数据库备份与恢复策略7.4.4 SQL Server的数据库备份与恢复71精选ppt需在为数据库作一个备份,当系统出现故障时利用该备份恢复数据库中的数据。数据库中数据的备份可以象一般的数据拷贝?当数据库系统被破坏后如何将其恢复?需要一套专门的备份机制。一般的DBMS都有一套备份机制,实现对数据库的备份与恢

35、复。72精选ppt7.4.1 数据库备份与恢复概念数据库备份: 把数据库“拷贝”到转储设备这个过程称为备份。数据库的拷贝称为备份或转储。转储设备:指用于放置数据库拷贝的磁带或磁盘。数据库恢复:在系统出现故障时,从备份(数据库备份和日志备份)中恢复系统或用户数据库,使之恢复到故障发生之前数据库最后的完整性状态。73精选ppt7.4.2 数据库系统的主要故障 因用户干予、需要解决死锁而回滚等原因造成事务不能执行完。例如:不满足完整性约束而终止、并发事务发生死锁等。 事务故障的特点:系统有完整的主存和外存,并且是单事务效应。是非预期的。 事务故障的恢复操作只须回滚故障事务。数据库系统的主要故障有以下

36、三种:1、事务故障。74精选ppt2、系统故障(软故障) 硬件、操作系统或DBMS突然进到一种停机状态,系统不能再继续执行,所有正在执行的事务都终止。 发生系统故障时,主存和缓冲区的内容都被丢失,外存完好无损,但会造成数据库不一致性状态:未完成事务可能有部分数据存入到数据库,已完成事务可能有部分或全部留在缓冲区。 需:正在执行的事务需要回滚,已经提交但还没有写入物理数据库的事务需要重做。75精选ppt3、存储介质故障(硬故障) 如磁盘的读写头破坏、环境故障损坏存储介质等原因造成的存储设备发生故障而丢失信息。发生的可能性小,但危害大,丢失的信息是永久性的。如何恢复系统? 需要在转储副本装载的基础

37、上,通过日志重做在转储之后正常完成的所有事务。76精选ppt7.4.3 数据库备份与恢复策略 针对以上三种故障情况,DBMS采用一些相应策略和措施进行数据库恢复。主要有: 事务提交、数据库转储、事务日志、检查点技术、数据库镜像以及先写日志的原则等技术。 综合使用这些技术才能完成对数据库的恢复。77精选ppt1. 日志和日志文件 日志文件:记录对数据库更新活动的文件。 用户对数据库的所有更新操作,DBMS都自动记录到日志文件中。 严格按照执行的时间顺序将每个更新事务作为一个日志记录写到日志文件中。日志的内容应当包括:事务标识、事务运行的关键时间、对数据库的更新操作类型和操作对象、更新事务的前映像

38、和后映像内容。78精选ppt数据库备份的内容:数据结构、数据、事务日志。转储分为静态转储和动态转储: 静态转储:是在系统中无运行事务时进行的转储操作。应是首选的的备份方式。可以完整地备份某一时该的所有数据。 动态转储:转储期间不中断数据库的操作,即转储和用户事务可以并发执行。能备份数据库的全部数据,备份过程中数据库系统的性能将受到很大影响。2. 数据库转储(备份)79精选ppt3.数据库镜像 数据库镜像是根据DBA的要求,自动把整个数据库或其中关键的数据复制到另一个磁盘中。 没有故障时,数据库镜像还可以用于并发操作。 一旦出现介质故障,可以由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数

39、据进行数据库恢复,不需要重装数据库备份,不必中断使用。80精选ppt一、 SQL Server的数据库备份 数据库的备份:包括对数据库结构、数据、事务日志文件的备份,以便在数据库遭到破坏的时候能够及时的加以恢复。 执行备份操作必须有对数据库备份的权限许可。可以对数据库进行备份的角色包括:系统管理员(sa)、(db_owner)、数据库备份执行者7.4.4 SQL Server的数据库备份与恢复81精选ppt1 SQL Server数据库备份的设备类型SQL Server的三种备份设备:磁盘备份;磁带备份;命名管道备份82精选ppt2 数据库备份策略与规划在制订备份策略时,应考虑以下内容:备份内

40、容;备份频率;备份数据存储介质;针对不同数据库系统的实际情况,SQL Server提出了3种主要的备份策略,分别是:备份数据库;备份数据库和事务日志;增量备份。83精选ppt3 只备份数据库特点:操作和规划简单,在恢复时只需一步就可以将数据库恢复到以前的状态;当数据库出现意外以后,用户最多能够把数据库恢复到上一次备份操作结束时的状态,一般只用在数据重要性不是太高,或是数据更新缓慢的数据库系统中。84精选ppt4 备份数据库和事务日志可以在意外发生时有效地恢复数据库。主在应用在:数据至关重要,任何数据的丢失都难以接受。如银行系统。可以备份的数据库资源难以满足用户需要的情况下。如数据量大,备份设备

41、相对有限。要求恢复数据库到意外发生前多少分钟的情况。数据库更新非常频繁。如股票交易情况数据库。85精选ppt5 增量备份只备份自上次全面备份以来,数据库又发生的一系列新的变化。特点:在备份的数据规模和花费的时间上都远远少于全面备份,因此可以相对频繁地执行。与数据日志不同的是,增量备份无法将数据库恢复到出现意外前某一指定的时刻,它只能将数据库恢复到上一次增量备份结束的时刻。86精选ppt6 综合数据备份方案一般说来,对数据库进行备份,应综合使用全面数据库备份、增量备份和事务日志备份:根据系统运行的实际情况,周期性地进行数据库的备份。比如每天进行一次数据库全备份。在较短的时间间隔内进行数据库的增量

42、备份,比如每4小时备份一次。在每两次增量备份之间进行事务日志的备份,例如每30分钟备份一次。87精选ppt8 SQL Server2000的备份操作通过SQL语句BACKUP来实现。语句的语法格式:BACKUP Database|LOG database_name |database_name_varTO ,.n WITH DIFFERENTIAN 88精选ppt参数说明:DATABASE:指定一个完整的数据库备份。假如指定一个文件和文件组的列表,那么仅有这些被指定的文件和文件组被备份。LOG:指定只备份事务日志。该日志是从上一次成功执行了的 LOG 备份到当前日志的末尾。89精选pptdat

43、abase_Name|database_Name_var:指定一个数据库,从该数据库中对事务日志、部分数据库或完整的数据库进行备份。WITH DIFFERENTIAN:表示增量备份数据库。backup_device_name:指定备份操作时要使用的逻辑设备或物理备份设备。90精选ppt例:backup database MyDB TO DISK = c:mssqlbackupMyweb_2.datbackup LOG MyDB TO DISK = c:mssqlbackupMyDBLog1.dat 91精选ppt二、SQL Server的数据库恢复 数据库恢复:在系统出现故障时,由系统管理员或

44、数据库所有者从数据库备份和日志备份中恢复系统或用户数据库。SQL Server数据库恢复操作可以通过SQL语句RESTORE来实现。用企业管理器实现。92精选ppt与备份类型相对应,恢复可以是:恢复整个数据库恢复数据库和日志文件内容恢复部分数据库内容恢复事务例1:从物理备份设备中恢复MyDB1数据库。RESTORE DATABASE MyDB1FROM DISK = DBServerbackupMyDB1.dat93精选ppt 例3:把MyDB1数据库恢复到它在98年10月20日下午6:00以前的状态:RESTORE DATABASE MyDB1FROM MyDB1_1 WITH NORECO

45、VERYRESTORE LOG MyDB1 FROM LogDeviceWITH RECOVERY, STOPAT=Oct 20, 1998 6:00 PMNORECOVERY :恢复操作后不回滚未完成的事务。RECOVERY :恢复操作后回滚所有未完成的事务。STOPAT :恢复指定日期和时间之前的数据库内容。94精选ppt8、系统数据库的备份与恢复备份系统数据库的方法与备份用户数据库的方法一样。恢复系统数据库:除master 以外的其他系统数据库的恢复与用户数据库的恢复一致。95精选pptMaster系统数据库的恢复:(1)如果Master数据库只是轻微损坏,尚能启动SQL Server实

46、例,则可以直接根据Master系统数据库的完整备份恢复。(2)如果Master数据库严重损坏而无法启动SQL Server实例,则需要首先使用重建Master数据库实用工具rebuildm.exe,重建Master系统数据库,然后才可以用普通方法利用备份恢复Master数据库96精选ppt7.5.1 问题的提出7.5.2 数据库安全性控制概述7.5.3 SQL Server的安全性机制7.5.4 SQL Server访问控制策略7. 5.5 统计数据库的安全性 7.5 数据库安全性97精选ppt 7.5.1 问题的提出数据库的一大特点是数据可以共享数据不能是无条件的共享 例:教学管理、银行储蓄

47、数据、军事秘密、国家机密、新产品实验数据、市场营销策略、销售计划等。数据共享给数据库带来的问题安全性问题数据库的安全性:防止不合法访问数据库造成数据泄露、更改或破坏98精选ppt7.5.2 数据库安全性控制概述一、数据库系统安全性涉及到哪些方面?计算机系统三类安全性问题:技术安全类、管理安全类、政策法律类数据库系统引进了数据库的计算机系统,安全性涉及到计算机的物理层、使用人员、操作系统、网络层以及数据库管理系统本身等多个方面。99精选ppt物理层:防止入侵者强行进入或暗中潜入破坏物理 文件人员层:严格控制用户的授权。操作系统层:OS安全对数据库存在着很大的威胁。网络层:为数据库系统的安全提供一

48、个保障DBMS层:DBMS有完善的访问控制机制。100精选ppt1、用户标识和鉴定 系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的身份。每次用户要求进入系统时,由系统进行身份核对,通过鉴定后才有使用权。 缺点:用户名和口令易被窃取。 二、数据库安全性控制的常用方法101精选ppt 分为自主存取控制和强制存取控制方法1)自主存取控制方法(DAC) 由用户自主决定对数据库对象的操作权限,用户可以对哪些对象进行操作,完全取决于用户之间的授权(GRANT 和 REVOKE 语句)。 SQL Server存取控制属于自主存取控制方法。例:将成绩表SC的查询权限授予给stude

49、nt用户 grant select on sc to student2、存取控制102精选ppt2)强制存取控制方法(MAC) 为每一个数据库对象标以一定的密级,对每一个用户确定一个许可级别,不同级别的用户拥有的数据库的操作权限不同。 用户不能直接感知或进行权限控制,保证了更高程度的安全性。适用于对数据有严格而固定密级分类的部门,如:军事部门、政府部门等。103精选ppt3、数据库角色角色:被命名的一组与数据库操作相关的权限。 可以为一组具有相同权限的用户创建一个角色。简化授权的过程。例:T_role角色具有对成绩表的查询和修改权限。 教师(用户)希望得到对成绩表的查询和修改权限,则可直接将T

50、_role授予给该某教师。 不同的DBMS对角色操作的SQL语句略有不同 104精选ppt4、视图机制 主要功能是提供数据独立性。 也可把要保密的数据对无权存取这些数据的用户隐藏起来。对数据提供一定程度的安全保护。间接实现了用户权限定义。例 建立计算机系学生视图,并将其查询权授于S。CREATE VIEW CS_Student AS SELECT * FROM Student WHERE deptno=CS;GRANT SELECT ON CS_Student TO S ;105精选ppt5、审计审计:DBMS提供的一种可以记录下对数据库的所有操作活动和轨迹的可选功能。将用户对数据库的所有操作

51、记录在审计日志上。DBA利用审计日志找出非法存取数据的人、时间和内容106精选ppt6、用户自定义安全性 可以通过触发器或存储过程实现自定义安全性。例:假设在MIS系统中,对工资表的修改必须是在上班时间(星期一到星期五的9:00-17:00),其余时间的插入和修改均库无效。 可以用如下的触器107精选pptcreate trigger secur_zgon 职工 for insert,update,delete asif datename(weekday,getdate()=星期六 or datename(weekday,getdate()=星期日 or (convert(int,datena

52、me(hour,getdate() not between 9 and 17)begin raiserror(只允许在工作时间操作数据!,16,1) rollback transactionend108精选ppt例:某企业的数据库应用系统中用户类型如下:管理员:对数据库的所有数据进行操作和维护。生产部门用户:对生产数据有查询、修改、插入和删除权限。销售部门用户:对订单数据有查询、修改和删除权限。劳资用户:对人事、工资数据有查询、修改、插入和删除权限。普通职工:对自己的工资、产品信息具有查询权。 如何实现该系统的安全性?109精选ppt可以按以下策略设计:1)建立登录用户,并授予为数据库用户.2

53、)对用户进行分类授权:可直接对各类用户授以相应的权限,也可以用角色授权,即,首先创建多个角色,将各类用户拥有的权限授予不同角色,再将角色授予给相应的用户。3)对于职工,可以用视图或存储过程实现权限管理。4)可以用触发器,也可以用审计功能实现对数据操作的监控,以防渎职现象的发生。110精选ppt7.5.3 SQL Server的安全性机制SQL Server的安全性机制可分为下图所示4个等级:数据库用户客户机SQL Server服务器客户操作系统安全性SQL Server登录安全性数据库的使用安全性数据库对象的使用安全性 数据库对象用户首先要登录到客户端的操作系统中提供口令和密码才能登录到SQL

54、 Server服务器具有访问数据库的权限具有访问数据库对象的权限111精选ppt7.5.4 SQL Server访问控制策略 SQL Server的用户通过授权获得对数据的访问权限。其访问控制分为如下两阶段:安全帐户认证:判定用户是否有权连接到服务器并向服务器发送SQL命令。访问许可确认: 判定是否有对数据库的访问权限112精选ppt1、SQL Server的安全帐户认证方式及认证模式1)身份验证方式用户必须通过身份验证才能连接到SQL Server中。SQL Server有两种身份验证方式 :集成验证方式(Windows身份认证方式):用户通过windows的身份验证后,不必提供SQL Se

55、rver的Login账号和口令就自动进行SQL Server身份验证。标准身份验证方式(SQL Server身份验证方式):由数据库管理系统独立来管理自己的数据库安全。登录时,必须提供SQL Server自己的登录账号和口令 113精选ppt2)SQL Server的身份认证模式Windows身份验证模式:用Windows身份验证方式登录; 混合模式 :可以用Windows 身份验证方式 ,也可以用 SQL Server 身份验证方式注意:如果在win 98下安装的桌面版SQL Server ,只能用SQL Server 身份验证方式登录。114精选ppt3) 安全帐户管理可用T-SQL语句和

56、企业管理器管理数据库帐户(服务器登录标识)特殊帐户sa: SQL Server完成安装以后,建立了sa。sa帐户拥有最高的管理权限,可以执行服务器范围内的所有操作。115精选ppt(1)windows 安全模式用户管理: sp_grantlogin: 授予Windows NT用户或组连接SQL Server服务器sp_denylogin:禁止用户或组连接到SQL Server服务器例: sp_grantlogin jxglusers 注意:对于没有建立Windows NT帐户的用户,只能使用SQL Server登录标识来管理用户连接。或首先建立Windows NT帐户,再用sp_grantlo

57、gin授予其连接SQL Server服务器的权限SQL Server中用于用户管理的SQL语句116精选ppt(2)SQL Server身份验证模式sp_addlogin: 创建登录用户sp_password:改变用户的口令sp_grantdbaccess:授权某个登录用户为数据库用户例: sp_addlogin users,users 117精选ppt2 访问许可确认访问许可确认:用户连接到SQL Server服务器后,系统判断其是否拥有对数据库的访问许可权。 授予用户的权限决定其对数据库所能执行的操作。安全帐户认证和访问许可确认的区别:安全帐户认证决定用户能否向SQL Server服务器发

58、送SQL命令;访问许可确认决定用户能在数据库中执行哪些SQL语句。118精选ppt1) SQL Server中的角色标准角色应用程序角色固定角色用户自定义角色public角色SQL Server角色固定服务器角色固定数据库角色119精选ppt固定角色 固定角色 :SQL Server预先定义的角色。所拥有的权限涉及到服务器配置、服务器和数据库的访问控制等。用户只有加入固定角色才能获其特殊的许可权限。 根据所作用的级别不同,划分为:固定服务器角色: SQL Server在安装时就已经创建好用于分配服务器管理权限的实体。固定数据库角色:设置在数据库级,提供最基本的数据库权限的综合管理120精选pp

59、tsysadmin:固定服务器角色,能够在服务器上执行所有操作。db_owner:固定数据库角色,拥有数据库最高权限。用sp_addsrvrolemember可将固定服务器角色分配给某登录帐户。sp_addrolemember可将某个登录帐户加入某个固定数据库角色。例:sp_addsrvrolemember zzg sysadmin用 sp_addrolemember db_owner , zzg主要的固定角色121精选ppt public角色:每个数据库均具有这一角色,数据库的所有用户自动属于public角色,并且不能从public角色中删除。与固定角色一样,public角色也不能被用户删除

60、。用户自定义角色:SQL Server中sysadmin、db_owner等固定角色中的成员可以自定义数据库角色。 可以用SQL语句和Enterprise Manager管理用户自定义角色。122精选pptSQL Serer中对角色管理的SQL语句:1)角色的创建:sp_addrole2)给角色授权: GRANT ON 对象名 TO ,3)将一个角色授予给其他的角色或用户: sp_addrolemember4)角色权限的收回 REVOKE ON FROM ,5)取消用户的角色:sp_droprolemember123精选ppt例通过角色实现将一组权限授予一个用户。步骤如下:1)sp_addro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论