Oracle DB 执行表空间时间点恢复
? 列出在执行表空间时间点恢复(TSPITR) 时会发生的操作
? 阐释TSPITR 使用的术语的定义
? 确定适合将TSPITR 用作解决方案的情况
? 确定时间点恢复的正确目标时间
? 确定不能使用TSPITR 的情况以及解决方法
? 执行自动TSPITR
? 通过执行TSPITR 可将一个或多个表空间快速恢复到以前的某个时间。
? 执行TSPITR 不会影响数据库中其它表空间或对象的状态。
使用RMAN 自动表空间时间点恢复(TSPITR) 可将Oracle DB 中的一个或多个表空间快速恢复到以前的某个时间,而不会影响数据库中其它表空间和对象的状态。
? 目标时间:表空间恢复到的时间点或SCN
? 恢复集:组成要恢复的表空间的数据文件
? 辅助集:对恢复集执行TSPITR 时所必需的,但不属于恢复集的数据文件。辅助集通常包括:
– SYSTEM表空间
– 还原段表空间
– 临时表空间
? 辅助目标:存储文件的磁盘位置
讨论TSPITR 时使用了以下术语:
? 目标时间:执行TSPITR 期间表空间将恢复到的时间点或系统更改号(SCN)。
? 恢复集:组成要恢复的表空间的数据文件。
? 辅助集:对恢复集执行TSPITR 时所必需的,但本身不属于恢复集的数据文件。辅助集通常包括:
- SYSTEM表空间的副本
- 包含来自目标实例的还原段的数据文件
- 某些情况下从辅助实例导出数据库对象期间使用的临时表空间
? 辅助目标:执行TSPITR 期间在磁盘上存储辅助实例的任何辅助集数据文件、控制文件和联机日志的位置。执行完TSPITR 之后可删除辅助目标中存储的文件。
图表中显示了下列TSPITR 实体:
? 目标数据库:包含要恢复的表空间
? 控制文件:向RMAN 提供备份信息
? 备份集:来自目标数据库,用作重建表空间的来源
? 归档重做日志:来自目标数据库,用作重建表空间的来源
? 辅助实例:在恢复过程中用来执行恢复的Oracle DB 实例
RMAN 在执行表空间时间点恢复期间会执行下列步骤:
1.将目标时间之前某个时间点的备份控制文件还原到辅助实例。将恢复集的数据文件还原到目标数据库,将辅助集的数据文件还原到辅助实例。
2.将还原的数据文件恢复到指定的时间点。
3.将已恢复表空间中对象的字典元数据导出到目标数据库。
4.在目标数据库上发出SWITCH命令,以使目标数据库控制文件指向辅助实例上已恢复的恢复集中的数据文件。
5.将辅助实例中的字典元数据导入目标实例,以便能访问已恢复对象。
? TSPITR 可在下列情况下使用:
– 恢复因错误的TRUNCATE TABLE语句而丢失的数据
– 从表逻辑损坏中恢复
– 撤消只影响部分数据库的批作业或DML 语句的结果
– 将逻辑方案恢复到与物理数据库其余部分不同的时间点
? TSPITR 使用可移动表空间和数据泵,提供了以下新功能和特性:
– TSPITR 可用于恢复已删除的表空间
– 可反复执行TSPITR 恢复到表空间联机之前的多个时间点,而无需使用恢复目录
RMAN TSPITR 可用来:
? 恢复因错误的TRUNCATE TABLE语句而丢失的数据
? 从表逻辑损坏中恢复
? 撤消只对数据库子集有影响的不正确批处理作业或其它数据操纵语言(DML) 语句的结果
? 将逻辑方案恢复到与物理数据库其它部分不同的时间点
在Oracle Database 11g发行版2 之前,TSPITR 使用导出和导入进行处理。TSPITR 现在使用可移动表空间和数据泵。由于底层技术的这一变化,现在可使用TSPITR 来恢复已删除的表空间。此外,可反复执行TSPITR 恢复到不同的时间点,而无需使用恢复目录。
要为TSPITR 做准备,请执行以下步骤:
? 确定正确的目标时间。
? 确定恢复集中需要的内容。
? 确定并保留执行TSPITR 之后会丢失的对象。
在执行TSPITR 之前,需要确定恢复的正确目标时间。需要确定恢复集中是否还需要其它表空间。应估计哪些对象会在执行TSPITR 操作后丢失,然后确定如何保留这些对象。
? 除非使用了恢复目录,否则不能再次执行TSPITR。
? 执行TSPITR 并使表空间联机以后,就不能使用更早时间的备份。
? 请使用下列方法确定正确的目标时间:
– 闪回查询
– 闪回事务处理查询
– 闪回版本查询
? TSPITR 的简单替代方法:闪回数据(如果仍然可用作还原数据)。
选择执行TSPITR 时的正确目标时间或SCN 极为重要。执行TSPITR 并使表空间联机后,就不能使用早于表空间联机时的任何备份。实际上,这意味着第一次选择了错误的目标时间后就不能再次尝试执行TSPITR,除非使用了恢复目录。但是,如果使用了恢复目录,就可通过执行重复的TSPITR 操作来恢复到不同的目标时间。
如果不使用恢复目录,当前控制文件就不会包含已恢复表空间的旧原型记录。使用包含表空间的当前控制文件进行恢复时,不能使用在表空间联机之前创建的备份。但是,通过将数据库恢复到早于或等于表空间联机时的任何时间点,可以对整个数据库执行不完全恢复,前提是能够从早于该时刻的时间点还原备份控制文件。
可以使用Oracle 闪回查询、Oracle 闪回事务处理查询和Oracle 闪回版本查询来查看对数据库进行的更改,帮助确定TSPITR 的正确目标时间。