对于Oracle DBA们来说,Oracle所提供的恢复选项种类数目实在是太多了,数据库恢复方法可以说都取决于故障类型,但对于某一个特定的故障也可能有许多不同的恢复方法。总的来说,数据库恢复可以分为实例恢复与介质恢复两大类。数据库出现实例故障,例如,意外掉电、后台进程故障,或预料发出使用ABORT命令终止数据库实例时,在启动数据库时就会发现实例故障,此时就需要实例恢复,实例恢复是数据库自动进行的,可以将数据库恢复到故障之前的事务一致性状态。如果在联机备份时发现实例故障,则需介质恢复。如恢复数据文件时没执行检验点就脱机,这时所丢失的改动就需要进行介质恢复。介质恢复可以使用归档日志文件,也可以使用联机日志文件。
介质恢复主要用于由于介质故障引起数据库文件的破坏时使用。介质故障是当一个文件、一个文件的一部分或磁盘不能读写时出现的故障。Oracle启动时会检测数据文件头中的检验点计数器和控制文件中对应的检验点计数器,当两者的值不相等时就说明需要做介质恢复。如果数据库可以运行,在线日志仅可重用但不能归档,此时介质恢复可以使用最新的完全备份的简单恢复。如果数据库可以运行,其日志已经被归档,则只能恢复数据库到介质故障前的一个指定事务一致性状态。所以,介质故障的恢复是将整个数据库恢复到故障之前的一个事务一致状态。如果数据库是在归档方式下运行,则可以实施完全介质恢复和不完全介质恢复。
1 完全介质恢复
完全介质恢复可恢复全部丢失的数据,使数据库恢复到最新状态。在所有需要的重做日志文件、备份数据文件(对于所有丢失或损坏的数据文件的备份)和一个当前有效控制文件都可以正常使用的情况下应当使用完全介质恢复以使数据的损失减到最小。在实施完全数据库恢复时,可以根据数据库文件的破坏情况,使用不同的恢复方法。例如,当数据文件被物理破坏,这时数据库不能正常启动,但是可以安装,此时可进行全部的或单个被破坏的数据文件的完全介质恢复。如果数据文件被物理破坏但这时数据库还处于打开状态,可以进行离线的表空间的恢复。因为数据库是打开的,这时未破坏的数据文件的表空间是在线的,可以正常使用,而被破坏的数据文件的表空间是离线的,不可正常使用,可以只对被破坏的数据文件实施完全介质恢复。但是注意,系统表空间是不能让其离线的,所以当系统表空间损坏的时候,只能使用不完全介质恢复。
2 不完全介质恢复
不完全介质恢复是在完全介质恢复不可能进行或有特殊要求时进行的介质恢复。例如,系统表空间数据文件损坏、在线日志损坏或认为误删除不应该删除的基表和表空间等,这时可以实施不完全介质恢复,使数据库恢复到故障前或用户出错之前的一个事务一致性状态。不完全介质恢复包括基于撤消的不完全恢复、基于时间点的不完全恢复以及基于数据库改变号的不完全恢复。
基于撤消的不完全恢复(recover database until cancel)是在进行不完全恢复时由数据库管理员进行控制,在某一个恢复点可撤消指定的操作。例如,在一个或多个在线日志文件由于介质故障被破坏,不能实施完全数据库恢复,这时可以进行基于撤消的恢复,在恢复到最近的、未被破坏的日志文件后终止恢复过程,数据库从这一点重新开始运行。在这种方式下,Oracle允许每次前滚一个日志文件。
基于时间点以及基于数据库改变号的不完全恢复主要用于将数据库恢复到过去的某个指定点。基于时间点的恢复(recover database until time)可以把恢复进行到重做日志文件内的某个特定时间点,例如,当用户上午9点钟意外的删除一个表,现在想恢复它,那么可以从备份中恢复相应的数据文件,并进行基于时间点的不完全恢复,恢复到上午9点以前的某个时刻。再如,由于系统故障,在线日志文件部分被破坏,所有活动的日志文件突然不可使用,实例被终止,此时需要进行介质恢复。在恢复中可使用当前在线日志文件的未损坏部分,利用基于时间点的恢复,一旦将有效的在线日志应用于数据文件后就可以立即停止恢复过程。
基于数据库改变号(recover database until change)的不完全恢复可以使数据库恢复到事务一致的状态。用这个选项指定的SCN被Oracle标注为参考值,凡是SCN号小于这个参考值的重做记录都将被运用,而SCN大于参考值的重做记录将被禁止使用。这样,正好在此SCN处提交的事务将被回滚。
当不完全介质恢复完成时,数据库必须用alter database open resetlogs打开,这个命令将会使数据库做一个标记,使得已经被跳过的那些重做记录不会被意外的又重新运用。
3 设计Oracle数据库备份恢复策略时应遵循的原则
数据库备份恢复是为了保证数据库中数据的正确性和完整性,不同的应用环境要应用不同的解决方案,有不同的侧重点,要考虑的问题也相当的多,对于一个有经验的DBA来说,可能解决方法有很多种。但一般来说,一个完整的备份恢复系统需要遵循以下原则:
(1). 正确性,备份就是为了恢复。如果备份的东西是错误的那还有什么意义?正确性
永远是第一位的。
(2). 稳定性,备份恢复策略的实施必须要有充分的前期测试工作,测试结果取得比较稳定的成功之后才能实施到生产数据库上。
(3). 全面性,在复杂的计算机网络环境中,必须考虑到备份与恢复操作的简捷性,同时又要保证在需要恢复时能及时获取备份数据,保证备份内容、存储地点不会因为网络故障和环境故障而失效。因此,对网络环境的复杂性、硬件环境的差异性要有充分的考虑。
(4). 自动化,备份方案应能提供定时的自动备份,在自动备份过程中,还要具有日志记录和错误处理功能。
(5). 高性能,在设计时,应尽量考虑到提高数据备份恢复的速度,同时考虑如何压缩备份文件以节省存储空间。
(6). 操作简单,因为备份恢复是一个相当繁琐的工作,几乎每天都要做,只有事先做好充分的准备工作,才能减少日常实施过程中的工作量。
(7). 实时性,一些关键数据库业务需要24小时不停机,因此,备份时很多文件仍将处于运行状态中,所以很多情况下要采用联机备份,联机备份时服务器应尽量少进行批量事务处理,以免产生许多重做操作。
阅读(606) | 评论(0) | 转发(0) |