1.RMAN TSPITR概述
为了有效使用RMAN表空间时间点恢复(TSPITR),理解它能解决的问题类型,它的组件,在TSPITR过程中RMAN会做什么,何时和如何可以运行它的各种限制和约束是有用的。本节阐述运行RMAN TSPITR的基本概念,准备工作和模式。
1.1.RMAN TSPITR的目的
RMAN TSPITR可以快速恢复数据库中的一个或多个表空间到一个更早的时间而不影响数据库中的其余表空间和对象。
RMAN TSPIRT在以下情形中最有用:
1)当多个逻辑数据库在一个物理数据库的不同的表空间中存在时,恢复一个逻辑数据库到与物理数据库其余部分不同的点。例如,你维护逻辑数据库在orders和personnel表空间。一个错误的批量作业或数据操作语言(DML)语句只损坏了一个表空间的数据。
2)在数据定义语言(DDL)操作更改表结构之后恢复丢失的数据。你不能使用闪回表来倒回表到结构更改比如清空表操作的点之前。
3)在使用PURGE选项清空表之后恢复表。
4)从表的逻辑损坏中恢复。
5)恢复删除的表空间。事实上,RMAN可以执行删除表空间的TSPITR即使不使用恢复目录时。
你也可以使用闪回数据库倒回数据,但你必须倒回整个数据库而不只是一个子集。同样,不像TSPITR,闪回数据库特性需要维护闪回日志的消耗。可以闪回数据库的时间点比向后伸展到最早的可恢复备份的TSPITR窗口更有限制。
1.2.RMAN TSPITR的基本概念
1.2.1.RMAN TSPITR的常用术语
本节定义RMAN TSPITR使用的某些常用的实体。
| 名称 | 解释 |
|---|---|
| 目标实例 | 包含要恢复到目标时间的表空间 |
| 目标时间 | TSPITR完成之后表空间的时间点或SCN |
| 辅助数据库 | 在恢复过程中用来执行恢复工作的数据库。辅助数据库还有其它与它相关的文件。查看辅助集获取完整列表。 |
| 辅助目的地 | 可选的RMAN用来临时存储辅助集文件的磁盘位置。辅助目的地只与RMAN管理的辅助数据库一起使用。指定辅助目的地和用户管理的辅助数据库一起使用会导致错误。本章中所有涉及到的辅助目的地都假设使用RMAN管理的辅助数据库。 |
| 恢复集 | 你想恢复的表空间中的数据文件 |
| 辅助集 | TSPITR需要不是恢复集的一部分的数据文件。辅助集一般包括以下:1) SYSTEM和SYSAUX表空间。 2)目标数据库实例里包含回滚或undo段的数据文件。 3)临时表空间。 4)源数据库的控制文件。 5)必须还原来恢复辅助数据库到指定时间点的归档redo日志。 6)辅助数据库的在线redo日志。这些日志与源数据库的在线redo日志不同。它们在使用RESETLOGS选项打开辅助数据库时创建。辅助集不包括参数文件,密码文件或关联的网络文件。 |
1.2.2.RMAN TSPITR的模式
存在几种模式来运行RMAN TSPITR。各种操作模式的不同之处在于环境中要求多少自动化与自定义。
使用RMAN的RECOVER TABLESPACE命令启动RMAN TSPITR。存在3种方式运行这个工具:
1)完全自动的(缺省)
在这个模式中,RMAN管理整个TSPITR进程包括辅助数据库。你指定恢复集的表空间,辅助目的地,目标时间,允许RMAN管理TSPITR的所有其它方面。
建议使用缺省模式除非你需要特别对TSPITR之后的恢复集文件的位置,TSPITR过程中辅助集文件的位置,辅助数据库的通道配置和参数或某些其它方面有更多的控制。
2)自动的:用户设置和RMAN管理的辅助数据库
可以覆盖RMAN TSPITR的某些缺省值同时仍旧使用RMAN管理的辅助数据库和目的地。缺省模式的这个变异让你从RMAN TSPITR提供的某些固定的管理中受益同时能够指定:
a.辅助集的位置或恢复集文件
b.初始化参数
3)非自动的:TSPITR和用户管理的辅助数据库
RMAN TSPITR的这个模式要求你设置和管理辅助数据库的所有方面和TSPITR过程的某些方面。这个模式可能适合的,如果,例如,你必须为用户管理的辅助数据库分配不同数量的通道或更改通道参数。
1.2.3.RMAN TSPITR如何与RMAN管理的辅助数据库一起工作
在执行完全自动RMAN TSPITR(缺省模式)之前选择恢复集中的表空间,辅助目的地,目标时间。
RMAN TSPITR的自动模式共享很多这些高级处理的步骤。RMAN TSPITR自动执行以下操作:
1)如果恢复集中的表空间没有被删除,为恢复集表空间执行检查DBMS_TTS.TRANSPORT_SET_CHECK查看它们是否是自包含的,然后检查视图TRANSPORT_SET_VIOLATIONS是空的。如果查询返回行,RMAN停止TSPITR处理。在TSPITR可以继续以前必须解决任何表空间包含违反行为。
BEGIN
DBMS_TTS.TRANSPORT_SET_CHECK(‘USERS,TOOLS’, TRUE,TRUE);
END;
/
SELECT * FROM TRANSPORT_SET_VIOLATIONS;
2)检查查看是否提供连接到用户管理的辅助数据库。如果是,那么RMAN TSPITR使用它。如果不是,RMAN TSPITR创建辅助数据库,启动它,和连接它。
3)将目标数据库中要恢复的表空间脱机,如果恢复集中的表空间没有被删除。
4)从目标时间之前的时间点还原备份的控制文件到辅助数据库。
5)从恢复集和辅助集中还原数据文件到辅助数据库。
文件还原到以下的一个位置:
a.你为每个文件指定的位置
b.文件的原始位置(恢复集数据文件)
c.辅助目的地(如果使用RECOVER TABLESPACE的AUXILIARY DESTINATION参数和RMAN管理的辅助数据库)
6)恢复辅助数据库中的还原的数据文件到指定时间。
7)使用RESETLOGS选项打开辅助数据库。
8)让辅助数据库中的恢复集表空间只读。
9)使用Data Pump工具从辅助数据库导出恢复集表空间生成可传输的表空间dump文件。
10)关闭辅助数据库。
11)从目标数据库删除恢复集表空间。
12)Data Pump工具读取可传输的表空间dump文件,将恢复集表空间插入目标数据库。
13)让置入目标数据库的表空间可读写和立即将它们脱机。
14)删除所有辅助集文件。
在这个点,RMAN TSPITR已经完成。恢复集数据文件返回到在指定时间点它们的内容和属于目标数据库。
恢复集表空间被遗留在脱机状态让你备份和将它们联机。这些最后的步骤遵循Oracle建议和TSPITR完成后尽快备份恢复的表空间的最佳实践。
2.TSPITR约束,特殊情况和限制
某些数据库问题不能使用TSPITR解决因为某些约束和限制。
以下列表阐述何时不能执行TSPITR:
1)如果没有归档redo日志或如果数据库运行在NOARCHIVELOG模式。
2)如果TSPITR用来恢复一个重命名的表空间到它被重命名之前的时间点,你必须使用表空间之前的名称来执行恢复操作。
在这种情况中当TSPITR完成时,目标数据库包含相同表空间的2个副本,使用新名称的原始表空间和使用旧名称的TSPITR表空间。如果这个不是你的目的,那么可以删除使用新名称的新表空间。
3)如果表空间tbs1中的表的约束被包含在表空间tbs2,那么不能只恢复tbs1而不同时恢复tbs2。
4)如果表和它的索引被存储在不同的表空间中,那么在执行TSPITR之前必须删除索引。
5)不能使用TSPITR来恢复当前的缺省表空间。
6)不能使用TSPITR恢复包含以下对象的表空间:
a.具有底层对象的对象(比如物化视图)或包含对象的对象(比如分区表)除非所有底层或被包含的对象也在恢复集。另外,如果分区表的分区存储在不同的表空间中,那么你必须在执行TSPITR之前删除表或将所有分区移动到相同的表空间。
b.undo或回滚段
c.Oracle8-兼容的有多个接受者的高级查询
d.用户SYS拥有的对象。这些对象类型的示例是:PL/SQL,Java类,回调程序(callout programs),视图,同义词,权限,维度(dimensions),目录和序列。
2.1.TSPITR限制
当执行TSPITR时,有些限制要考虑。
在TSPITR完成之后,RMAN恢复恢复集中的数据文件到目标时间,注意以下特殊情况:
1)TSPITR不为恢复对象恢复查询优化数据。你必须在TSPITR完成后收集新的统计数据。
2)如果你在表空间上运行TSPITR,在时间t将表空间联机,那么在时间t之前创建的表空间的备份不再可以使用当前的控制文件来恢复。不能使用当前的控制文件来恢复数据库到小于或等于t的任何时间。
3)如果一个或多个恢复集中的文件有OMF名称和目标数据库中的兼容性设置为版本10.1或更早,RMAN不能重用这些数据文件。即使没有为数据文件提供SET NEWNAME命令,这个限制也存在。它会为恢复集的数据文件创建新的OMF名称。这个行为临时将数据文件的空间要求变为2倍。这是因为DB_CREATE_FILE_DEST有数据文件的2个副本(原始的数据文件和TSPITR使用的数据文件)直到表空间从目标数据库中删除和原始的数据文件被删除。
RMAN使用可传输表空间的功能来执行TSPITR。因此,任何可传输表空间上的限制也会应用到TSPITR。
2.2.关于当不使用恢复目录时的特殊考虑
在TSPITR过程中,当不使用恢复目录时,注意某些预防措施。
预防措施包括以下:
1)由于RMAN在控制文件中没有undo的历史记录,RMAN假设表空间和回滚或undo段的当前集与执行恢复时存在的集相同。如果表空间集从那时已经更改过,那么当前回滚或undo段是执行恢复到的时间时存在的相同的段。如果undo段从那那时已经更改过,那么可以使用UNDO TABLESPACE来标明在执行表空间恢复时的时间点具有undo的正确表空间集。
2)TSPITR到一个太旧的时间可能不会成功如果Oracle数据库已经为需要的备份重用控制文件记录。(在规划数据库中,设置CONTROL_FILE_RECORD_KEEP_TIME初始化参数到一个足够大的值来确保保留需要用来TSPITR的控制文件记录。)
3)当不使用恢复目录时,为了重新运行TSPITR,首先必须从目标数据库中删除被TSPITR使用的表空间。
3.计划和准备TSPITR
3.1.为TSPITR选择正确的目标时间
为TSPITR选择正确的目标时间或SCN非常重要。注意在TSPITR将表空间联机之后,不能使用比将表空间联机时更早的任何时间的备份。
如果有一个恢复目录,那么可以执行重复的TSPITR操作到不同的恢复时间,因为目标包括表空间的历史信息。如果RMAN只使用控制文件,那么只有在删除表空间之后重复的TSPITR才是可能的,因为控制文件没有表空间的历史记录。在这种情况中,RMAN只知道表空间的当前集。在其上执行TSPITR的表空间有一个等于它被联机的时间的创建时间。
为给TSPITR鉴别目标时间,通过使用以下一种技术调查数据的过去状态和找到不想要的更改发生的时间点:
1)闪回查询
2)Oracle事务查询
3)闪回版本查询
3.2.确认恢复集
最初,恢复集包含你想恢复的表空间的数据文件。然后,如果需要的表空间中的对象与其它表空间中的对象有关系(比如约束)的话,那么在执行TSPITR之前你必须解释说明这些关系。
当面对这个关系时,有以下选择:
1)增加包含相关对象的表空间到备份集中
2)移除关系
3)在TSPITR持续过程中暂停这个关系
3.2.1.鉴别和解决主数据库的依赖关系
RMAN TSPITR要求正在恢复的表空间是自包含的和没有SYS拥有的对象驻留在表空间中。
鉴别和解决依赖:
1)使用DBMS_TTS.TRANSPORT_SET_CHECK存储过程定位在表空间之外的对象和鉴别跨恢复集界限的对象之间的关系。
如果TRANSPORT_SET_VIOLATIONS视图返回行,你必须根据上面的选择调查和纠正问题。
2) 记录这个步骤过程中的所有行为以便在完成TSPITR之后重建任何暂停或移除的关系。
只有当恢复集中的表空间的

本文详细介绍了Oracle RMAN(恢复管理器)的表空间时间点恢复(TSPITR)过程,包括其目的、基本概念、约束、特殊情况和限制。TSPITR允许恢复数据库中的一个或多个表空间到特定时间点,而不影响数据库的其他部分。文章涵盖了自动和手动管理模式下的TSPITR,涉及如何选择恢复时间、确认恢复集、设置新名称、使用辅助数据库等步骤,并提供了故障诊断和重试的指导。此外,还讨论了RMAN管理的辅助数据库和用户自定义辅助数据库的配置和管理。
最低0.47元/天 解锁文章
679

被折叠的 条评论
为什么被折叠?



