理解什么是数据库恢复当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失
因此当发生上述故障后,希望能重构这个完整的数据库,该处理称为数据库恢复
恢复过程大致可以分为复原(Restore)与恢复(Recover)过程
数据库恢复可以分为以下两类:1
1实例故障的一致性恢复当实例意外地(如掉电、后台进程故障等)或预料地(发出SHUTDOUMABORT语句)中止时出现实例故障,此时需要实例恢复
实例恢复将数据库恢复到故障之前的事务一致状态
如果在在线后备发现实例故障,则需介质恢复
在其它情况Oracle在下次数据库起动时(对新实例装配和打开),自动地执行实例恢复
如果需要,从装配状态变为打开状态,自动地激发实例恢复,由下列处理:(1)为了解恢复数据文件中没有记录的数据,进行向前滚
该数据记录在在线日志,包括对回滚段的内容恢复
(2)回滚未提交的事务,按步1重新生成回滚段所指定的操作
(3)释放在故障时正在处理事务所持有的资源
(4)解决在故障时正经历一阶段提交的任何悬而未决的分布事务
2介质故障或文件错误的不一致恢复介质故障是当一个文件、一个文件的部分或磁盘不能读或不能写时出现的故障
文件错误一般指意外的错误导致文件被删除或意外事故导致文件的不一致
这种状态下的数据库都是不一致的,需要DBA手工来进行数据库的恢复,这种恢复有两种形式,决定于数据库运行的归档方式和备份方式
(1)完全介质恢复可恢复全部丢失的修改
一般情况下需要有数据库的备份且数据库运行在归档状态下并且有可用归档日志时才可能
对于不同类型的错误,有不同类型的完全恢复可使用,其决定于毁坏文件和数据库的可用性
(2)不完全介