《三思笔记》--读书笔记
热备份:也叫联机备份。这种状态下创建的备份肯定是不一致备份,利用这种热备份做恢复时,有可能需要应用归档日志或联机重做日志,才能将数据库修复到一个一致性的状态,所以要创建有效的热备份,要求数据库必须处于归档模式,否则创建的备份可能为无效备份
热备份不需要关闭数据库,备份时用户仍然可以连接并操作数据库
冷备份:也叫脱机备份。利用冷备份做恢复时,如果数据库是正常关闭(非shutdown abort或主机故障停电关闭等),则不需要对数据库进行修复操作,否则也需要应用归档日志和online redologs才能将数据库修复到一个一致性的状态。
open read only状态下创建的备份也是冷备份
不一致性备份:不一致的备份在恢复后必须借助归档日志文件和联机重做日志,将数据库修复到一致性的状态才能打开,因此,创建不一致性的备份除了要备份数据库启动时必须的数据文件和控制文件外,还要备份归档日志文件
只有归档模式下创建的不一致备份才能被视为有效备份
备份规模:
1,完全备份
2,表空间备份((1),当数据库处于归档模式。(2),表空间为只读或脱机状态。满足这两个条件之一时,创建的表空间级备份才是有效备份)
3,数据文件备份
4,控制文件备份
5,归档日志文件备份
恢复方式--完全恢复:
如果对整个数据库做恢复,步骤大概如下:
(1),mount数据库
(2),确认所有数据文件为online状态
(3),执行恢复操作
(4),应用所有生成的redologs文件(包括联机重做日志文件和归档文件)
如果是对表空间或数据文件级的恢复,步骤大概如下:
(1),open数据库
(2),将要恢复的表空间或数据文件置为offline
(3),执行恢复操作
(4),应用所有生成的redologs文件(包括联机重做日志文件和归档文件)
恢复方式--不完全恢复:
适用如下情况:
(1),介质损坏导致部分在线重做日志不可用
(2),用户误删数据,无法用逻辑方式恢复
(3),由于丢失部分归档日志,无法进行完全恢复
(4),控制文件丢失,只能以备份的控制文件打开数据库
由于不完全恢复只应用部分日志文件,因此必须给oracle指定结束标志,有如下选项可供选择:
(1),基于时间:指定一个具体的时间点
(2),基于SCN
(3),基于cancel
(4),基于日志序号:指定归档文件序号,恢复到指定的日志序号后即中止恢复操作
恢复操作:
分为两步,restore和recover
restore是指将要恢复的文件从备份集中读取出来,并保存至指定路径下(如果未指定路径,那么就是保存到默认路径),在rman备份恢复中对应restore命令
recover是指应用所有重做日志,将数据库恢复到奔溃前的状态,或者应用部分redo,将数据库恢复到指定的时间点,在rman备份恢复中对应recover命令
resetlogs操作:
执行了不完全恢复操作,或者使用了备份的控制文件进行恢复,或者执行flashback database操作之后,在打开数据库时必须指定resetlogs选项,这是oracle自身特性决定的。
正常运行中的oracle内部有一个生命周期,这种生命周期在oracle中也有一个专业词汇,叫incarnation。不完全恢复,顾名思义就是只恢复部分数据,由于已经无法将数据库恢复到当前状态(崩溃前的状态),oracle数据库也不知道当前处于什么状态了,事务上也许一致,但是不是最新,oracle无法自己判断,后续也许仍有重做日志文件,但却无法应用。如果没有incarnation的概念,正常open数据库的话又会产生重做日志文件,并且这些日志文件的序号与之前相同(可能内容不同),这样不管是备份还是恢复都会造成混淆,因此必须在执行不完全恢复后,标志之前生命周期结束,方法就是以resetlogs方式打开数据库,以resetlogs方式打开后,oracle数据库又开始一个新的生命周期,即重置incarnation,日志文件序号也被重新初始化到1。
指定resetlogs会执行下列操作:
(1),归档当前的在线重做日志文件(如果能访问到的话),然后清空内容并将日志文件序号重置为1
(2),重置控制文件中关于在线日志文件的元数据
(3),更新数据文件和在线重做日志文件中的resetlogs scn和重置时间信息