欢迎来到天天文库
浏览记录
ID:45435016
大小:589.00 KB
页数:25页
时间:2019-11-13
《《数据的保护与恢复》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第九章数据的保护与恢复为了适应数据共享的环境,DBMS必须提供数据保护能力,以保证数据库中数据的安全可靠和正确有效安全性保护完整性检查并发控制数据恢复9.1故障与恢复9.2并发控制00:16:56ccl@cugb.edu.cn19.1数据库恢复故障是不可避免的计算机硬件故障、系统软件和应用软件的错误、操作员的失误、恶意的破坏故障的影响运行事务非正常中断、破坏数据库数据库管理系统对故障的对策DBMS提供恢复子系统,保证故障发生后,能把数据库中的数据从错误状态恢复到某种逻辑一致的状态恢复技术是衡量系统优劣的重要指标00:16:56ccl@cugb.edu.cn29.1.1事务
2、事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序事务是恢复和并发控制的基本单位定义事务的格式:BEGINTRANSACTION[事务名][ROLLBACK[事务名]]COMMITTRANSACTION[事务名]ROLLBACK表示要撤消该事务已做的一切操作,回退到事务开始的状态COMMIT表示提交事务中的一切操作,使得对数据库的改变生效00:16:56ccl@cugb.edu.cn3举例:SqlServer中定义事务BEGINTRANUPDATESCSETgra
3、de=grade*1.1DELETEfromSCWheresno='04001’IF@@ERROR!=0OR@@ROWCOUNT=0BEGINROLLBACKTRANPRINT'出现错误,所有操作已被取消'RETURNENDELSEPRINT‘操作成功'COMMITTRAN00:16:56ccl@cugb.edu.cn4事务的特性(ACID特性)原子性(Atomicity):事务是数据库的逻辑工作单位一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态隔离性(Isolation):一个事务的执行不能被其他事务干扰持续性(Dur
4、ability):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的保证事务ACID特性是事务处理的任务破坏事务ACID特性的因素多个事务并行运行时,不同事务的操作交叉执行事务在运行过程中被强行停止不能用于事务操作的T-SQL语句CREATE
5、ALTER
6、DROPDATABASEBACKUP
7、RESTORELOG等自动启动一个事务的T-SQL语句INSERT、DELETE、SELECT、UPDATEALTERTABLECREATE、DROPGRANT、REVOKE9.1.2恢复的实现技术恢复操作的基本原理:冗余利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或
8、不正确的那部分数据恢复机制涉及的关键问题1.如何建立冗余数据数据转储(backup)登录日志文件(logging)2.如何利用这些冗余数据实施数据库恢复转储策略应定期进行数据转储,制作后备副本转储不能频繁进行(耗费时间和资源)DBA应该根据数据库使用情况确定适当的转储周期(日、月、周等)和转储方法00:16:56ccl@cugb.edu.cn600:16:56ccl@cugb.edu.cn7转储方法:转储状态动态转储静态转储转储方式海量转储动态海量转储静态海量转储增量转储动态增量转储静态增量转储静态转储:在系统中无运行事务时进行转储,转储期间不允许对数据库的任何存取、修改
9、活动(一致性)动态转储:与用户事务并发进行,转储期间允许对数据库进行存取或修改(需要建立日志文件)海量转储:每次转储全部数据库增量转储:只转储上次转储后更新过的数据00:16:56ccl@cugb.edu.cn8日志文件(log)是用来记录事务对数据库的更新操作的文件日志文件的格式以记录为单位的日志文件以数据块为单位的日志文件对于以记录为单位的日志文件,需要登记的内容包括:各个事务的开始标记各个事务的结束标记各个事务的所有更新操作记录为单位的日志文件中的一个日志记录,内容包括:事务标识操作类型(插入、删除或修改)操作对象(记录内部标识)更新前数据的旧值(插入操作时此项为空
10、值)更新后数据的新值(删除操作时此项为空值)00:16:56ccl@cugb.edu.cn9登记日志文件的原则登记的次序严格按并行事务执行的时间次序必须先写日志文件,后写数据库写日志文件操作:把表示这个修改的日志记录写到日志文件写数据库操作:把对数据的修改写到数据库中为什么要先写日志文件写数据库和写日志文件是两个不同的操作在这两个操作之间可能发生故障如果先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改了如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响
此文档下载收益归作者所有