数据库可能因为硬件或软件(或两者同时)的故障变得不可用,不同的故障情况需要不同的恢复操作。我们必须决定最适合业务环境的恢复方法。在数据库中恢复有3种类型或方法,即应急(crash)恢复、版本(version)恢复和前滚(rool forward)恢复。
应急恢复用于防止数据库处于不一致或不可用状态。数据库执行的
事务(也称工作单元)可能被意外中断,若在作为工作单位一部分的所有更改完成和提交之前发生故障,则该数据库就会处于不一致和不可用的状态。这时,需要将该数据库转化为一致和可用的状态。
为此,需要
回滚未完成的事务,并完成当发生崩溃时仍在内存中的已提交事务。如在
COMMIT语句之前发生了电源故障,则在下一次重新启动并再次访问该数据库时,需要回滚到执行COMMMIT语句前的状态。回滚语句的顺序与最初执行时的顺序相反。
版本恢复指的是使用备份操作期间创建的映象来复原数据库的先前版本。这种恢复是通过使用一个以前建立的
数据库备份恢复出一个完整的数据库。一个数据库的备份允许你把数据库恢复至和这个数据库在备份时完全一样的状态。而从备份建立后到日志文件中最后记录的所有工作
事务单位将全部丢失。
这种恢复技术是版本恢复的一个扩展,使用完整的
数据库备份和日志相结合,可以使一个数据库或者被选择的
表空间恢复到某个特定时间点。如果从备份时刻起到发生故障时的所有日志文件都可以获得的话,则可以恢复到日志上涵盖到的任意时间点。前滚恢复需要在配置中被明确激活才能生效。
官方的说法是:因为随着
数据库技术在各个行业和各个领域大量广泛的应用,在对数据库应用的过程中,人为误操作、人为恶意破坏、系统的不稳定、存储介质的损坏等等原因,都有可能造成重要数据的丢失。一旦数据出现丢失或者损坏,都将给企业和个人带来巨大的损失。这就需要进行数据库恢复。
对于数据库恢复,国外有很多此类优秀的软件,其中Stellar Phoenix与Kernel 的产品多为常用,这两款软件功能强大,操作方便等优势;但对于国内普通
数据恢复技术员或初学者而言,工具的功能强大、操作的方便根本无从谈起,原因就是这两款软件官方均未提供中文语言包,这就使很多初学者或者不懂得外文的朋友来说就显得很被动。服务器恢复中心可以在保持原
数据库结构的状态下修复数据库,修复后的数据库能完美在软件上使用。
数据库误删除又重新安装数据库有少量覆盖,数据库在C盘(
系统盘)误克隆,误格式化等操作后数据库用恢复软件都是无法恢复的,即使恢复出
数据库文件,绝大部分不能正常使用,因为数据库是经常添加修改数据的,数据库文件在硬盘上是不连续存储的,存在大量的数据库碎片分散分布,普通软件恢复,靠
文件分配表或者
文件头等相关信息来恢复,一旦这些信息损坏,就只能按文件头恢复,对于分散分布的数据库文件,也就无能为力了。
只有把这些零散分布的数据库碎片收集起来,再通过碎片ID号把数据串起来,重组出数据库文件,在没有覆盖或少量覆盖的情况下重组出来的数据库可直接使用,碎片丢失较多时,再用我们自主开发的数据库修复工具修复数据库,就完美恢复了。