- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 数据库安全保护 5.4 数据库的恢复 5.4.1 数据库恢复的含义 虽然数据库系统中已采取一定的措施,来防止数据库的安全性和完整性的破坏,保证并发事务的正确执行,但数据库中的数据仍然无法保证绝对不遭受破坏,比如计算机系统中硬件的故障、软件的的错误,操作员的失误,恶意的破坏等都有可能发生,这些故障的发生影响数据库数据的正确性,甚至可能破坏数据库,使数据库中的数据全部或部分丢失。 因此,系统必须具有检测故障并把数据从错误状态中恢复到某一正确状态的功能,这就是数据库的恢复。 5.4.2 数据库恢复的原理服及其实现技术 数据库恢复的基本原理十分简单,就是数据的冗余。 数据库中任何一部分被破坏的或不正确的数据都可以利用存储在系统其他地方的冗余数据来修复。 因此恢复系统应该提供两种类型的功能: 一种是生成冗余数据,即对可能发生的故障作某些准备; 另一种是冗余重建,即利用这些冗余数据恢复数据库。 生成冗余数据最常用的技术是登记日志文件和数据转储,在实际应用中,这两种方法常常结合起来一起使用。 5.4.2.1 登记日志文件(Logging) 日志文件是用来记录事务对数据库的更新操作的文件。对数据库的每次修改,都将被修改项目的旧值和新值写在一个叫做运行日志的文件中,目的是为数据库的恢复保留详细的数据。 典型的日志文件主要包含以下内容: 1.更新数据库的事务标识(标明是哪个事务); 2.操作的类型(插入、删除或修改) 3.操作对象; 4.更新前数据的旧值(对于插入操作而言,没有旧值); 5.更新前数据的新值(对于删除操作而言,没有新值); 6.事务处理中的各个关键时刻(事务的开始、结束及其真正回写的时间)。 日志文件是系统运行的历史记载,必须高度可靠。 所以一般都是双副本的,并且独立地写在两个不同类型的设备上。 日志的信息量很大,一般保存在海量存储器上。 在对数据库修改时,在运行日志中要写入一个表示这个修改的运行记录。 为了防止在这两个操作之间发生故障后,运行日志中没有记录下这个修改,以后也无法撤消这个修改。为保证数据库是可恢复的,登记日志文件必须遵循两条原则原则: 1.至少要等到相应运行记录的撤消部分已经写入日志文件中以后,才允许该事务往物理数据库中写入记录; 2.直到事务的所有运行记录的撤消和重做两部分都已写入日志文件中以后,才允许事务完成提交处理。 这两条原则称为日志文件的先写原则。 先写原则蕴含了如下意义:如果出现故障,只可能在日志文件中登记所做的修改,但没有修改数据库,这样在系统重新启动进行恢复时,只是撤消或重做因发生事故而没有做过的修改,并不会影响数据库的正确性。而如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。 所以这了安全,一定要先定日志文件,后写数据库的修改。 5.4.2.2 数据转储(Data Dump) 数据转储是指定期地将整个数据库复制到多个存储设备如磁带、磁盘上保存起来的过程,它是数据库恢复中采用的基本手段。 转储的数据文本称为后备副本或后援副本,当数据库遭到破坏后就可利用后援副本把数据库有效地加以恢复。 转储是十分耗费时间和资源的,不能频繁地进行,应该根据数据库使用情况确定一个适当的转储周期。 按照转储方式转储可以分为海量转储和增量转储。 海量转储是指每次转储全部数据库。 增量转储每次只转储上次转储后被更新过的数据。 上次转储以来对数据库的更新修改情况记录在日志文件中,利用日志文件就可进行这种转储,将更新过的那些数据重新写入上次转储的文件中,就完成了转储操作,这与转储整个数据库的效果是一样的,但花的时间要少得多。 按照转储状态转储又可分为静态转储和动态转储。 静态转储期间不允许有任何数据存取活动,因而需在当前用户事务结束之后进行,新用户事务又需在转储结束之后才能进行,这就降低了数据库的可用性。 动态转储则不同,它允许转储期间继续运行用户事务,但产生的副本并不能保证与当前状态一致。解决的办法是把转储期间各事务对数据库的修改活动登记下来,建立日志文件。 因此,备用副本加上日志文件就能把数据库恢复到某一时刻的正确状态。 5.4.3 数据库的故障和恢复的策略 数据库系统在运行中发生故障后,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库。 这时数据库就处于一种不正确的状态,或者说是不一致的状态,这时可利用日志文件和数据库转储的后备副本将数据库恢复到故障前的某个一致性状态。 数据库运行过程中可能会出现各种各样的故障,这些故障可分为以下三类:事务故障、系统故障和介质故障。 根据故障类型的不同,应该采取不同的恢复策略。 5.4.3.1 事务故障(Transaction Failure)及其恢复 事务故障表示由非预期的、不正
文档评论(0)