概述
无论什么时候,备份一定是第一位的,特别是对于DBA来说,无论其他做的太好,关键时刻备份恢复不了都是不称职的表现。下面分享下之前整理的关于oracle备份恢复的一些内容。
Oracle的备份恢复机制
? Oracle数据库在运行过程中,数据库中所有数据块的改变都被记录下来,重做日志.
? 数据块的改变按照时间顺序以重做日志记录的方式存储在重做日志文件中
? 通过重做日志和归档日志可以保存数据库中所有的改变
? 数据库的SCN提供了数据文件中的数据与日志记录的对应关系
? 恢复就是将数据文件中缺少的SCN所对应的日志按照时间顺序一一应用,也就是从丢失数据那一刻开始重演日志
? 当所有的日志都应用完成,所有提交的数据都不会丢失
备份与恢复的相关组件
Oracle的备份与恢复
oracle数据存储在数据文件中,备份就是通过特定方法将这些数据保存出来
除了对数据进行备份,对数据库的操作记录也需要备份
oracle备份恢复根据情况不同,分成介质恢复和实例
1、实例故障(自动恢复)
当系统运行过程中由于某些原因造成突然的实例故障,需要使用实例恢复。
遇到实例故障时,介质并没有存在任何问题,仅仅是实例没有正常关闭,数据库处于不一致的状态(最多丢失1M数据)
2、介质故障(手动恢复)
介质泛指存储数据库中信息的位置,存储文件或者存储设备都是介质。
介质故障会在数据库启动或者运行的过程中自动监测,介质故障会导致数据库宕掉并且无法打开。
3、实例恢复与介质恢复的比较
1)实例故障仅仅是由于系统非正常关闭造成的数据不一致,为了确保一致性而进行的恢复。数据库需要应用日志到最近,并且回滚所有没提交的事务以确保最终的数据都是已经提交的一致数据
2)介质恢复则是由于存储介质出现故障无法读写,造成数据丢失而需要恢复。在应用日志前,首先需要恢复介质
3)实例恢复可以由SMON进程自动完成,介质恢复则必须由DBA手动完成
4)实例恢复仅仅需要应用日志,而介质恢复首先需要恢复介质文件,然后应用日志
Oracle的备份方法
1、Oracle本身提供了一些备份的方法,主要包括下面几种:
逻辑备份恢复,解决人为故障
EXP/IMP(导出/导入)
EXPDP/IMPDP(数据泵导出/导入)
手动备份与恢复
Rman备份与恢复(自动,只备份有数据的数据块)
2、第三方也提供了一些备份方法和备份工具(调用RMAN,直接应用重做日志,OS COPY)
3、考虑直接使用存储级的容灾或者备份
生产数据库(归档是一定要开的)如果是2T以下的一般是主要用rman做备份策略就可以了,如果是2T以上就需要第三方软件来提供相关的备份机制。
后面会分享更多DBA方面内容,感兴趣的朋友可以关注下。