欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《数据库管理系统》PPT课件.ppt

    • 资源ID:5519547       资源大小:799.50KB        全文页数:145页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《数据库管理系统》PPT课件.ppt

    1,第7章 数据库管理系统,本章主要介绍DBMS的软件系统组成和主要的实现技术,如事务管理、并发控制、数据库恢复、数据的安全性和完整性;结合SQL Server 数据库管理系统,说明这些技术的具体实现,以及SQL Server 数据库管理系统的功能和服务性程序;最后介绍Oracle数据库管理系统的组织结构特点,2,7.2 事务管理,例:设想网上购物的一次交易,至少包括以下数据库操作:保存客户付款信息(可能包括与银行系统交互)更新客户所购商品的库存信息 生成订单并且保存到数据库中 更新用户相关信息,例如购物数量等等,3,正常情况:所有操作顺利进行,交易成功,与交易相关的所 有数据库信息也成功地更新。异常情况:交易失败(例如,生成订单失败),使数据库中信息将会不可预测。此时该怎么办?如何在交易失败时,使数据库中的数据库恢复到交易前的状态?,4,例2:考虑飞机订票系统中的一个活动序列:(1)甲售票点读出某航班的机票余额(设=16);(2)乙售票点读出同一航班的机票余额也为16;(3)甲售票点卖出一张机票,修改余额为15,并把A写回数据库;(4)乙售票点也卖出一张机票,也修改余额为15,并把A写回数据库。,5,结果:卖出两张票,数据库中机票余额只减少1。如何解决出现的这些问题,以保证数据库中的数据是一致的?数据库中,事务就是解决这些问题的技术手段。,6,何为数据库事务?“一荣俱荣,一损俱损”很能体现事务的思想。很多复杂的事物要分步进行,但它们组成一个整体,要么整体生效,要么整体失效。这种思想反映到数据库上,就是多个SQL语句,要么所有执行成功,要么所有执行失败。,7.2.1 事务的基本概念,7,事务的定义:是用户定义的一个数据库操作序列,且操作序列中的所有操作要么全做,要么全不做,是一个不可分割的整体。注意:在关系数据库中,一个事务可以是一条SQL语句,也可以是一组SQL语句,甚至是一个程序。事务中的SQL语句必须按逻辑次序执行。例:现规定:网上购物的一次交易的所有操作要么全做,要么全不做。则可以定义为一个事务。,8,需要事务的原因:(1)数据恢复的需要 误操作或系统崩溃时恢复数据(2)并发控制的需要 多个事务同时操作时保证对数据的一致性,9,事务的应用背景,例1:某公司在银行中有A,B两个帐号,现在公司想从帐号A中转帐1万元到帐号B。分析:要转帐正确,必须保证A中取出1万元的操作和在B中增加1万元的操作要么都成功完成,要么都不做。如何实现?把这二个操作定义在一个事务中。,10,银行转帐:事务T从A帐户过户1万元到B帐户。T:read(A);A:=A 1;write(A);read(B);B:=B+1;write(B);,read(X):从数据库传送数据项X到事务的工作区中。write(X):从事务的工作区中将数据项X写回数据库。,11,7.2.2 事务的特性,事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、分离性(Isolation)、持久性(Durability)。这四个特性也简称为ACID特性。,12,(1)原子性(Atomicity)事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。(2)一致性(Consistency)在一个事务执行之前和执行之后数据库都必须处于一致性状态。一致性:假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。,13,例:下列语句定义了一个事务 begin transaction Update 库存 set 库存量=库存量-2 where 产品编号=C001Insert into 付款 values(5122000000,300,建行,C001,2007.07.2.03)Insert into 订购单 values(5122000000,C001,2,已付)commit,14,(3)分离性(Isolation)并发执行的事务不应该交叉影响。即一个事务内部的操作及正在操作的数据不被其它企图进行修改的事务看到。对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行。分离性是DBMS针对并发事务间的冲突提供的安全保证,BMS通过并发控制机制在并发执行的事务间提供不同级别的分离。,15,(4)持久性(Durability)一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,经得住任何系统故障。当系统或介质发生故障时,确保已提交事务的更新不能丢失。DBMS保证采取措施:系统发生故障不能改变事务的持久性。持久性通过事务日志、数据库备份和恢复来保证。,16,7.2.3 事务处理语句,1、事务的开始和结束,定义事务的语句格式:BEGIN TRANSACTION 事务名称 SQL 语句 COMMIT TRANSACTION(或 ROLLBACK TRANSACTION),17,事务的开始显示开始:begin transaction隐式开始:首次执行alter、create、insert、open等T-SQL语句会自动定义一个事务。,18,事务的结束 COMMIT transaction:事务正常结束,提交事务的所有操作(读+更新),事务中所有对数据库的更新永久生效 ROLLBACK transaction:事务异常终止,事务运行的过程中发生了故障,不能继续执行,回滚整个事务或是存储点定义以后所发生的所有更新操作,事务滚回到开始时的状态,19,注意:组成一个事务的SQL语句由用户根据情况而定。定义事务时,BEGIN TRANSACTION语句与COMMIT TRANSACTION(ROLLBACK TRANSACTION)语句必须成对出现。ROLLBACK TRANSACTION应该在COMMIT TRANSACTION语句之前调用。一旦提交就不能再撤销。,20,、定义、提交和回滚事务示例,BEGIN TRANSACTION demo SELECT*FROM student SAVE TRANSACTION save_demo/存储点/INSERT student(学号,姓名)VALUES(20040101,zhang)SELECT*FROM student ROLLBACK TRANSACTION save_demo/回滚/COMMIT TRANSACTION SELECT*FROM student,/结果没有变化/,21,7.2.4 SQL Server的事务模式,SQL Server的事务模式可分为三种:显式事务隐式事务自动事务模式。,22,、显式事务模式,指由用户显示执行begin transaction而定义事务的开始。用commit或rollback结束事务。Commit transaction:事务正常结束,可以提交。Rollback transaction:事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态。,23,、隐式事务使用某些TSQL语句时自动启动事务,但需要有COMMIT 或rollback 标识事务的结束。例如:首次执行alter、insert、create、open等都会自动起动一个事务(一般Oracle默认模式)注意:事务结束后,下次执行这些语句又将自启动下一个新事务,24,在SQL Server中,事务模式的设置方法:SET IMPLICITY_TRANSACTIONS ON:进入隐式事务模式SET IMPLICITY_TRANSACTIONS OFF:退出隐式事务模式。当显式事务被提交或回滚,或者关闭IMPLICIT_TRANSACTIONS连接选项后,SQL Server又进入自动事务管理模式。,25,、自动事务模式:每个T-SQL语句都当作一个事务,成功执行自动提交,执行过程中产生错误时自动回滚。是SQL Server的默认事务管理模式。当应用程序与SQL Server建立连接后,直接进入自动事务模式,直到用BEGIN TRANSACTION语句开始一个显式事务,或者打开IMPLICIT_TRANSACTIONS 连接选项进入隐式事务模式为止。,26,7.2.5 批处理,批是一组SQL语句的集合,一个批以GO结束。GO不是SQL语句。它是在某些客户端工具中使用的符号,客户端工具将它解释为:最后一个GO上面的所有内容都应该一起发送到服务器来执行。批中语句被一次提交给SQL Server,SQL Server将这些语句编译为一个执行单元,称做SQL Server执行计划。,27,批和事务的区别,(1)批用于客户端控制多个语句如何发送到SQL Server以便立即处理。事务是服务器端的执行T-SQL语句的基本工作单元。(2)批语句的组合发生在编译时刻,事务中语句的组合发生在执行时刻。(3)批中某个语句存在语法错误,SQL Server将取消这个批中所有语句的执行。事务中某个操作违犯约束、触发器等条件时,SQL Server回滚整个事务。(4)批中可包含多事务,事务中可包含多个批。,28,7.3 并发控制,7.3.1 问题的产生7.3.2 事务并发执行带来的问题7.3.3 封锁技术7.3.4 SQL Server的封锁方式,29,1、数据库是共享资源、数据库系统中存在多个用户。特点:多用户的存在使得在数据库系统中,同一时刻可能需要多个事务运行。例如:在银行数据库系统中,有一个银行帐号有余额20,000元,某一时刻,户主在银行前台取款2,000元,与此同时又有另一个银行帐户正在向该帐户转帐5,000元。,7.3.1 问题的产生,30,(1)事务串行执行每一时刻只有一个事务运行,其他事务必须等到该事务结束以后方能运行不能充分利用资源,不能充分发挥数据库共享资源的特点,2、多事务执行方式有以下几种不同的执行方式,31,(2)交叉并发方式:并行事务轮流交叉运行,能充分利用CPU资源,改善事务的响应时间。(3)同时并发方式 在多处理机系统中,多个事务是真正的并行运行,32,1、如果对多个事务的并发执行不加以控制,会出现什么现象?(1)产生多个事务同时存取同一数据的情况(2)事务可能会存取不正确的数据,破坏数据库的一致性。,7.3.2 事务并发执行可能带来的问题,33,例:设上例中的取款为事务T1,转帐为事务T2,如果T1和T2的操作序列如下,将会出现什么现象?(1)T1查询帐号余额20,000元;(2)T2查询该帐号的余额20,000元;(3)T1支付客户2,000元,改用户余额为18,000元;(4)T2将转帐的5,000元加到帐号上,修改用户余额改为25,000元。结果:用户余额为25,000元,银行损失2000元!原因:第一次对数据的修改被第二次修改覆盖了,34,引起这种现象的原因:在并发操作中,对并发事务的操作序列的调度是随机的,没有加以控制。对事务的并发执行不加控制,将会带来以下三类问题:丢失更新(lost update)读脏数据(dirty read)读值不可复现(unrepeatable read),35,(1)丢失更新,如右图:T1和T2并发执行,R的初值为5。执行结果:R=15。原因:由于并发对R写,T1对R的更新被丢失。,T1,T2,read(R),read(R),R:=R+1,write(R),R:=3R,write(R),时间,把R由5增加1变为6,把R由5乘3变为15,初始值R=5,两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失。,36,(2)读“脏”数据,查询一个已经被其他事务更新、但尚未提交的元组可能引起该类问题。即:事务T1修改某一数据,并将其写回磁盘事务T2读取同一数据后,T1被撤销,数据恢复原值,T2读到的数据就与数据库中的数据不一致。为“脏”数据,37,R恢复为100,ROLLBACK,Read(R),Write(R),RR*2,Read(R),T2,T1,读“脏”数据,R的初值为100 T2读到的R为200 撤消后,T2所读的R值与数据库内容不一致,是“脏”数据,例:事务T1、T2对数据R进行操作,操作序列为:,38,T1,T2,begin tran,begin tran,update accont set 余额=余额-2000 where 帐号=010001,select sum(余额)from accont wth(nolock),rollback,例:设置隔离级别为:READ UNCOMMITTED 或在selec语句中加上with(nolock)。事务T1、T2的操作序列如下,产生了读脏数据:,39,(3)不可重复读,指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。包括三种情况:(1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值,40,(2)事务T1按一定条件从数据库中读取数据记录后,T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失了。(3)事务T1按一定条件从数据库中读取数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。后两种情况也称为幻影现象(或幻想读问题),41,T1读取B=100,对其进行修改T2修改B=200,并写回数据库T1重读B校对,但B=200,与第一次所读值不一致。,(验算不对),和=260,R(B)=200,R(A)=60,(B)=200,BB*2,R(B)=100,求和=160,R(B)=100,R(A)=60,T2,T1,不可重复读,例如:,更新B值,读更新前的B值,读更新后的B值,42,例:事务T1、T2的操作序列如下,产生了幻想读,T1,T2,begin tran,begin tran,insert into accont values(010001,zhang,200),Select 余额 from accontwith(nolock),update accont with(nolock)set 余额=余额-2000 where 帐号=010001,Select 余额 from accont with(nolock),43,2、并发控制的任务用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,保证事务的隔离性和数据库的一致性3、如何对并发事务进行管理,避免交叉访问破坏数据库的一致性状态?商用的DBMS一般采用封锁(Locking)技术,44,7.3.3 封锁技术,一、基本思想 当需要查询或更新数据时,先对数据进行加锁,以避免来自其他事务的干扰。针对不同的干扰问题可以有不同的封锁机制。“锁”是一种软件机制,用来指示某个用户已经占用了某种资源,防止其他用户做出影响本用户的数据修改或破坏数据库数据的完整性和一致性。,45,所谓资源,主要指用户可以操作的数据行、索引以及数据表等。例:当用户对一个表(或记录)进行更新时,首先封锁该表(或记录),使其他用户不能在同一时刻更新该表(或记录),只能在该用户更新后再实施别的更新。,46,二、加锁(locking)和解锁(unlock),加锁:事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁。如果要访问的数据单元还没有设置其他锁,就可获得访问权,否则等待。解锁:进程访问结束释放锁。注意:有些封锁在执行完相应操作后就自动释放封锁,有些封锁则保持到事务结束时才释放。,47,三、锁的类型,事务对数据对象拥有的控制由封锁类型决定。锁的类型有独占锁和共享锁:独占锁(X锁,排它锁):事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。任何写操作均要使用独占锁。,48,共享锁(S锁,读锁):若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。任何试图修改某数据的事务,如果该数据上有共享锁,那么该事务就会被阻塞,直到所有的共享锁被释放。S锁只用于并发的读。,49,两种锁的相容矩阵,YES=相容的请求,NO不相容的请求,50,T1,T2,begin tran,begin tran,update accont with(holdlock)set 余额=余额-2000 where 帐号=010001,rollback,例1:当设置隔离级别为:READ COMMITTED或更高,或在selec语句中加上with(holdlock)。事务T1、T2的操作序列如下,则不会读脏数据:,select sum(余额)from accont with(holdlock),进入等待,等待,select sum(余额)from accont with(holdlock),执行,T1修改之前加X锁,T2请求加S锁,由于T1未结束,T2等待,T1撤销,恢复为原值,T2读的是原值,51,T1,T2,begin tran,begin tran,update accont set 余额=余额-2000 where 帐号=010001,commit,例2:设置更高隔离级在selec语句中加上with(holdlock)。事务T1、T2的操作序列如下,不会产生幻想读,等待,等待,select余额from accont with(holdlock),insert into accont values(010001,zhang,200),进入等待,select余额from accont,执行,T1查询时加锁,T2请求加锁,由于T1未结束,T2等待,T1提交,释放锁,T2获得锁,执行,52,两段式封锁协议的实施,为了不破坏事务的可串行性,事务对数据单元的加锁和释放锁要遵守一定的协议。两段式协议:一个进程分为两个阶段 第一阶段;锁的数目稳定的增长,全是加锁,不能释放锁。第二阶段:只能释放锁,而且是一起释放所有获得的锁。,53,两段式协议实施的过程和内容:,1)一个数据单元在第一次被访问之前必须对它加锁。2)一个数据单元已经有了一个共享锁,只能对它再加共享锁。如果已有了一个独占锁则不能再加任何锁。3)一个事务的所有锁,只能在该进程结束时一起释放DBMS通过拦截从事务来的操作满足第一条,第二是事务本来要完成的,第三条在事务结束时实现。,54,封锁技术是否带来新的问题?1、活锁 指:事务T1封锁了数据R,T2又请求封锁R,T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待.T2有可能永远等待,这就是活锁的情形,四、活锁和死锁,避免活锁:采用先来先服务的策略,55,2、死锁,两个或多个事务都已封锁了一些数据对象,然后又都请求对已被其他事务封锁的数据对象加锁,出现永久循环等待其它事务释放资源的现象。死锁发生时,有两个或多个事务处于相互等待的状态,即每个事务都在等待其它事务释资源。,56,例:事务T1、T2和T3并发执行,如下所示:,解决死锁的方法:1.预防死锁 2.死锁的诊断与解除,57,1、死锁的预防,预防死锁的发生:破坏产生死锁的条件 常用方法:一次封锁法、顺序封锁法一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。存在的问题:降低系统并发度;难于事先精确确定封锁对象,58,顺序封锁法预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。例如,在上图中,如果T1、T2对数据的封锁次序都是 R1-R2-R3,就不会出现死锁。存在的问题:维护成本大;难以实现;,59,2、死锁的诊断与解除,死锁的诊断:超时法和事务等待图法(1)超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。特点:实现简单、但有可能误判死锁时限若设置得太长,死锁发生后不能及时发现(2)等待图法:用事务等待图动态反映所有事务的等待情况,60,3、解除死锁 发现死锁后,靠事务本身无法打破死锁,必须由DBMS干预。DBMS对死锁一般作下列处理:自动使“年轻”的(完成工作量最小)的事务撤消持有的所有的资源。让“年老”的事务继续运行,完成后释放持有的所有资源“年轻”的事务重新执行。,61,五、封锁策略,数据单元:数据库中某独立的数据部分。通常,DBMS封锁的数据单元是一个树形结构,此时封锁策略有如下两种:(1)分层封锁策略:封锁数据单元意味着用同样的封锁模式封锁其所有后代单元。(2)封锁一个数据单元,只封锁该单元本身,不涉及它的后代。,62,关系数据库管理系统中,采用分层封锁策略 例:如果T1已经对关系R中的某元组加了S锁,T2要对R加X锁(X锁隐含地封锁该元组),则T1、T2就会产生矛盾。,63,六 封锁的粒度,封锁数据单元的大小称为封锁粒度 封锁单元可以是逻辑单元,也可是物理单元。关系数据库中逻辑单元为:属性值、元组、关系、某索引项、整个索引、直至整个数据库。关系数据库中的物理单元为:页(数据页或索引页)和存储区。,64,封锁粒度、系统并发度和并发控制开销的关系:1)封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度越小,系统开销也越小,并行度也就越低。2)封锁粒度越小,并行度越高,系统管理锁的开销也越大,实现起来也更加困难。,65,多粒度锁,多粒度封锁:在一个系统中同时支持多种封锁粒度供不同的事务选择。也就是可以锁定的资源的层次。重要用途是用来支持并发操作和保证数据的完整性。它是将封锁的粒度按层次构成多粒度树,66,多粒度锁封锁策略中对一个节点加锁意味着这个节点的所有子节点也被加以同样类型的锁。显式封锁:应事务的要求直接加到数据对象上的封锁;隐式封锁:由于其上级节点加锁,该数据节点也被加上了锁。这两种加锁的效果是一样的。,67,7.3.4 SQL Server的锁定方式,SQL Server里的锁定动作是自动的,它由一个内部的锁管理器进程实现。SQL Server提供了多粒度锁,在事务执行过程中,SQL Server锁管理器自动为事务选择合适的加锁类型和加锁粒度(行、页、表等)。例如,create index语句会锁定整个表,而update语句会锁定一行或多行或整个表。,68,SQL Server锁类型,锁管理器使用基于执行活动类型的不同锁模式锁定资源,即基于事务类型(如select,insert,delete等)选择锁的类型。锁管理器使用的各种类型的锁如下:,69,共享锁(shared):用于读事务(如select语句),可对行、页和表使用共享锁,允许其他事务读。完成后即释放;更新锁(update):用于更新操作(如Update、Delete语句),可以对行、页和表使用更新锁。更新锁同时只能有一个事务拥有。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。,70,独占锁(execusive):用于写事务(如Insert、Update、Delete语句),实际修改时使用;确保不会同时对同一资源进行多重更新 意向锁(intent):说明其下级结点正在被加锁。模式锁(schema):有时也叫架构锁,在执行依赖于表架构的操作时使用。注意:可以在操作语句中用with(锁类型)对SQL语句自定义锁,可以用系统存储过程sp_lock或企业管理器浏览锁。,71,7.4 数据库恢复,7.4.1 数据库恢复的概念7.4.2 数据库系统的主要故障7.4.3 数据库备份与恢复策略7.4.4 SQL Server的数据库备份与恢复,72,需在为数据库作一个备份,当系统出现故障时利用该备份恢复数据库中的数据。数据库中数据的备份可以象一般的数据拷贝?当数据库系统被破坏后如何将其恢复?需要一套专门的备份机制。一般的DBMS都有一套备份机制,实现对数据库的备份与恢复。,73,7.4.1 数据库备份与恢复概念,数据库备份:把数据库“拷贝”到转储设备这个过程称为备份。数据库的拷贝称为备份或转储。转储设备:指用于放置数据库拷贝的磁带或磁盘。数据库恢复:在系统出现故障时,从备份(数据库备份和日志备份)中恢复系统或用户数据库,使之恢复到故障发生之前数据库最后的完整性状态。,74,7.4.2 数据库系统的主要故障,因用户干予、需要解决死锁而回滚等原因造成事务不能执行完。例如:不满足完整性约束而终止、并发事务发生死锁等。事务故障的特点:系统有完整的主存和外存,并且是单事务效应。是非预期的。事务故障的恢复操作只须回滚故障事务。,数据库系统的主要故障有以下三种:1、事务故障。,75,2、系统故障(软故障)硬件、操作系统或DBMS突然进到一种停机状态,系统不能再继续执行,所有正在执行的事务都终止。发生系统故障时,主存和缓冲区的内容都被丢失,外存完好无损,但会造成数据库不一致性状态:未完成事务可能有部分数据存入到数据库,已完成事务可能有部分或全部留在缓冲区。需:正在执行的事务需要回滚,已经提交但还没有写入物理数据库的事务需要重做。,76,3、存储介质故障(硬故障)如磁盘的读写头破坏、环境故障损坏存储介质等原因造成的存储设备发生故障而丢失信息。发生的可能性小,但危害大,丢失的信息是永久性的。如何恢复系统?需要在转储副本装载的基础上,通过日志重做在转储之后正常完成的所有事务。,77,7.4.3 数据库备份与恢复策略,针对以上三种故障情况,DBMS采用一些相应策略和措施进行数据库恢复。主要有:事务提交、数据库转储、事务日志、检查点技术、数据库镜像以及先写日志的原则等技术。综合使用这些技术才能完成对数据库的恢复。,78,1.日志和日志文件,日志文件:记录对数据库更新活动的文件。用户对数据库的所有更新操作,DBMS都自动记录到日志文件中。严格按照执行的时间顺序将每个更新事务作为一个日志记录写到日志文件中。日志的内容应当包括:事务标识、事务运行的关键时间、对数据库的更新操作类型和操作对象、更新事务的前映像和后映像内容。,79,数据库备份的内容:数据结构、数据、事务日志。转储分为静态转储和动态转储:静态转储:是在系统中无运行事务时进行的转储操作。应是首选的的备份方式。可以完整地备份某一时该的所有数据。动态转储:转储期间不中断数据库的操作,即转储和用户事务可以并发执行。能备份数据库的全部数据,备份过程中数据库系统的性能将受到很大影响。,2.数据库转储(备份),80,3.数据库镜像,数据库镜像是根据DBA的要求,自动把整个数据库或其中关键的数据复制到另一个磁盘中。没有故障时,数据库镜像还可以用于并发操作。一旦出现介质故障,可以由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库恢复,不需要重装数据库备份,不必中断使用。,81,一、SQL Server的数据库备份 数据库的备份:包括对数据库结构、数据、事务日志文件的备份,以便在数据库遭到破坏的时候能够及时的加以恢复。执行备份操作必须有对数据库备份的权限许可。可以对数据库进行备份的角色包括:系统管理员(sa)、(db_owner)、数据库备份执行者,7.4.4 SQL Server的数据库备份与恢复,82,1 SQL Server数据库备份的设备类型,SQL Server的三种备份设备:磁盘备份;磁带备份;命名管道备份,83,2 数据库备份策略与规划,在制订备份策略时,应考虑以下内容:备份内容;备份频率;备份数据存储介质;针对不同数据库系统的实际情况,SQL Server提出了3种主要的备份策略,分别是:备份数据库;备份数据库和事务日志;增量备份。,84,3 只备份数据库,特点:操作和规划简单,在恢复时只需一步就可以将数据库恢复到以前的状态;当数据库出现意外以后,用户最多能够把数据库恢复到上一次备份操作结束时的状态,一般只用在数据重要性不是太高,或是数据更新缓慢的数据库系统中。,85,4 备份数据库和事务日志,可以在意外发生时有效地恢复数据库。主在应用在:数据至关重要,任何数据的丢失都难以接受。如银行系统。可以备份的数据库资源难以满足用户需要的情况下。如数据量大,备份设备相对有限。要求恢复数据库到意外发生前多少分钟的情况。数据库更新非常频繁。如股票交易情况数据库。,86,5 增量备份,只备份自上次全面备份以来,数据库又发生的一系列新的变化。特点:在备份的数据规模和花费的时间上都远远少于全面备份,因此可以相对频繁地执行。与数据日志不同的是,增量备份无法将数据库恢复到出现意外前某一指定的时刻,它只能将数据库恢复到上一次增量备份结束的时刻。,87,6 综合数据备份方案,一般说来,对数据库进行备份,应综合使用全面数据库备份、增量备份和事务日志备份:根据系统运行的实际情况,周期性地进行数据库的备份。比如每天进行一次数据库全备份。在较短的时间间隔内进行数据库的增量备份,比如每4小时备份一次。在每两次增量备份之间进行事务日志的备份,例如每30分钟备份一次。,88,8 SQL Server2000的备份操作,通过SQL语句BACKUP来实现。语句的语法格式:BACKUP Database|LOG database_name|database_name_varTO,.n WITH DIFFERENTIAN,89,参数说明:DATABASE:指定一个完整的数据库备份。假如指定一个文件和文件组的列表,那么仅有这些被指定的文件和文件组被备份。LOG:指定只备份事务日志。该日志是从上一次成功执行了的 LOG 备份到当前日志的末尾。,90,database_Name|database_Name_var:指定一个数据库,从该数据库中对事务日志、部分数据库或完整的数据库进行备份。WITH DIFFERENTIAN:表示增量备份数据库。backup_device_name:指定备份操作时要使用的逻辑设备或物理备份设备。,91,例:backup database MyDB TO DISK=c:mssqlbackupMyweb_2.datbackup LOG MyDB TO DISK=c:mssqlbackupMyDBLog1.dat,92,二、SQL Server的数据库恢复,数据库恢复:在系统出现故障时,由系统管理员或数据库所有者从数据库备份和日志备份中恢复系统或用户数据库。SQL Server数据库恢复操作可以通过SQL语句RESTORE来实现。用企业管理器实现。,93,与备份类型相对应,恢复可以是:恢复整个数据库恢复数据库和日志文件内容恢复部分数据库内容恢复事务例1:从物理备份设备中恢复MyDB1数据库。RESTORE DATABASE MyDB1FROM DISK=DBServerbackupMyDB1.dat,94,例3:把MyDB1数据库恢复到它在98年10月20日下午6:00以前的状态:RESTORE DATABASE MyDB1FROM MyDB1_1 WITH NORECOVERYRESTORE LOG MyDB1 FROM LogDeviceWITH RECOVERY,STOPAT=Oct 20,1998 6:00 PMNORECOVERY:恢复操作后不回滚未完成的事务。RECOVERY:恢复操作后回滚所有未完成的事务。STOPAT:恢复指定日期和时间之前的数据库内容。,95,8、系统数据库的备份与恢复,备份系统数据库的方法与备份用户数据库的方法一样。恢复系统数据库:除master 以外的其他系统数据库的恢复与用户数据库的恢复一致。,96,Master系统数据库的恢复:(1)如果Master数据库只是轻微损坏,尚能启动SQL Server实例,则可以直接根据Master系统数据库的完整备份恢复。(2)如果Master数据库严重损坏而无法启动SQL Server实例,则需要首先使用重建Master数据库实用工具rebuildm.exe,重建Master系统数据库,然后才可以用普通方法利用备份恢复Master数据库,97,7.5.1 问题的提出7.5.2 数据库安全性控制概述7.5.3 SQL Server的安全性机制7.5.4 SQL Server访问控制策略7.5.5 统计数据库的安全性,7.5 数据库安全性,98,7.5.1 问题的提出,数据库的一大特点是数据可以共享数据不能是无条件的共享 例:教学管理、银行储蓄数据、军事秘密、国家机密、新产品实验数据、市场营销策略、销售计划等。数据共享给数据库带来的问题安全性问题数据库的安全性:防止不合法访问数据库造成数据泄露、更改或破坏,99,7.5.2 数据库安全性控制概述,一、数据库系统安全性涉及到哪些方面?,计算机系统三类安全性问题:技术安全类、管理安全类、政策法律类数据库系统引进了数据库的计算机系统,安全性涉及到计算机的物理层、使用人员、操作系统、网络层以及数据库管理系统本身等多个方面。,100,物理层:防止入侵者强行进入或暗中潜入破坏物理 文件人员层:严格控制用户的授权。操作系统层:OS安全对数据库存在着很大的威胁。网络层:为数据库系统的安全提供一个保障DBMS层:DBMS有完善的访问控制机制。,101,1、用户标识和鉴定 系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的身份。每次用户要求进入系统时,由系统进行身份核对,通过鉴定后才有使用权。缺点:用户名和口令易被窃取。,二、数据库安全性控制的常用方法,102,分为自主存取控制和强制存取控制方法1)自主存取控制方法(DAC)由用户自主决定对数据库对象的操作权限,用户可以对哪些对象进行操作,完全取决于用户之间的授权(GRANT 和 REVOKE 语句)。SQL Server存取控制属于自主存取控制方法。例:将成绩表SC的查询权限授予给student用户 grant select on sc to student,2、存取控制,103,2)强制存取控制方法(MAC)为每一个数据库对象标以一定的密级,对每一个用户确定一个许可级别,不同级别的用户拥有的数据库的操作权限不同。用户不能直接感知或进行权限控制,保证了更高程度的安全性。适用于对数据有严格而固定密级分类的部门,如:军事部门、政府部门等。,104,3、数据库角色角色:被命名的一组与数据库操作相关的权限。可以为一组具有相同权限的用户创建一个角色。简化授权的过程。例:T_role角色具有对成绩表的查询和修改权限。教师(用户)希望得到对成绩表的查询和修改权限,则可直接将T_role授予给该某教师。不同的DBMS对角色操作的SQL语句略有不同,105,4、视图机制,主要功能是提供数据独立性。也可把要保密的数据对无权存取这些数据的用户隐藏起来。对数据提供一定程度的安全保护。间接实现了用户权限定义。例 建立计算机系学生视图,并将其查询权授于S。CREATE VIEW CS_Student AS SELECT*FROM Student WHERE deptno=CS;GRANT SELECT ON CS_Student TO S;,106,5、审计,审计:DBMS提供的一种可以记录下对数据库的所有操作活动和轨迹的可选功能。将用户对数据库的所有操作记录在审计日志上。DBA利用审计日志找出非法存取数据的人、时间和内容,107,6、用户自定义安全性,可以通过触发器或存储过程实现自定义安全性。例:假设在MIS系统中,对工资表的修改必须是在上班时间(星期一到星期五的9:00-17:00),其余时间的插入和修改均库无效。可以用如下的触器,108,create trigger secur_zgon 职工 for insert,update,delete asif datename(weekday,getdate()=星期六 or datename(weekday,getdate()=星期日 or(convert(int,datename(hour,getdate()not between 9 and 17)begin raiserror(只允许在工作时间操作数据!,16,1)rollback transactionend,109,例:某企业的数据库应用系统中用户类型如下:管理员:对数据库的所有数据进行操作和维护。生产部门用户:对生产数据有查询、修改、插入和删除权限。销售部门用户:对订单数据有查询、修改和删除权限。劳资用户:对人事、工资数据有查询、修改、插入和删除权限。普通职工:对自己的工资、产品信息具有

    注意事项

    本文(《数据库管理系统》PPT课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开