TSPITR方法
RMAN允许自动执行TSPITR,这样可以在不影响数据库中的其他表空间或其他对象的前提下,方便的将一个或多个表空间的内容还原到过去的某个时间点。TSPITR是个非常有用的恢复工具,还可以用于以下情形:
*在一个逻辑上独立的表空间中,重要表中的行数据受损或被删除:“逻辑上独立”是指其它表空间中的对象
与其不存在索引或父/子关系.
*误用数据定义语言(DDL)更改了表空间中的一个或多个表的结构,因此无法使用闪回表来恢复这些表。
*使用purge选项删除了表。
当然,TSPITR不是所有表空间灾难后的"救星".例如,不能使用它恢复已经删除掉的表空间。另外,如果重命名了表空间,则无法将其恢复到重命名之前的时间点。
我们先了解一下如下术语:
*目标时间:将表空间恢复到某个时间点或SCN
*恢复集:包含将要予以恢复的表空间的数据文件组。
*辅助集:恢复表空间需要的其他数据文件,如system,undo和temp表空间的数据文件.
*辅助目标:存储辅助文件集的临时位置,包括联机重做日志文件,归档日志文件和恢复过程中创建的控制文件副本。
TSPITR的关键在于促进了恢复过程的辅助实例,辅助实例从期望的时间点之前还原备份控制文件,从目标数据库还原恢复集合辅助集,最后将辅助实例的数据库恢复到期望的时间点。如下,列出了RMAN在TSPITR期间执行的步骤:
(1)使用随机生成的名称启动辅助实例
(2)将控制文件还原到辅助实例,并加载辅助数据库
(3)将恢复集的数据文件还原到辅助数据库
(4)将辅助集的数据文件还原到辅助数据库
(5)将辅助数据库恢复到期望的时间点
(6)从辅助数据库中导出已恢复表空间字典元数据
(7)将恢复表空间中的字典元数据导入到目标数据库中
(8)删除所有的辅助文件.
其中,步骤(6)和(7)很重要,导出过程写出辅助表空间集合中所有对象的定义,就像他们处于执行恢复的时间点的样子。然后导入过程将此信息读入到目标数据库中,替换当前的所有定义。这样就完成了将受影响的表空间恢复到以前的某个时间点的过程,同时保持了目标数据库的其余部分是最新的。还有最后一个必须手动执行
的步骤,使恢复的表空间联机。