诊断和响应故障_执行RMAN表空间时间点恢复

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之后重建任何暂停或移除的关系。
只有当恢复集中的表空间的TRANSPORT_SET_VIOLATIONS视图是空时,继续TSPITR。

注:如果恢复集中的一个或多个表空间已经被删除,RMAN TSPITR不能运行存储过程DBMS_TTS.TRANSPORT_SET_CHECK。在这种情况中,当Data Pump导出辅助数据库发生时再运行DBMS_TTS.TRANSPORT_SET_CHECK。正如RMAN TSPITR,如果导出操作遇到任何不是自包含的表空间,它会失败。

这个示例阐述如何为最初的包含表空间tools和users的恢复集使用DBMS_TTS.TRANSPORT_SET_CHECK存储过程。它查询可传输的表空间违反表来管理任何依赖。当所有依赖被管理时,没有行从查询中返回。
BEGIN
DBMS_TTS.TRANSPORT_SET_CHECK(‘USERS,TOOLS’, TRUE,TRUE);
END;
/
SELECT * FROM TRANSPORT_SET_VIOLATIONS;


3.3.鉴别和保存在TSPITR之后会丢失的对象

当在表空间上执行RMAN TSPITR时,在目标恢复时间之后创建的对象会丢失。可以在鉴别它们之后通过在TSPITR之前使用Data Pump Exprot工具导出它们和然后使用Data Pump Import重新导入它们来保存这些对象。

为了确认哪些对象会在TSPITR中丢失,在主数据库上查询视图TS_PITR_OBJECTS_TO_BE_DROPPED。过滤视图中CREATION_TIME是在TSPITR目标时间之后的对象。下表描述了视图的内容。

列名含义
OWNER要删除的对象的属主
NAME在TSPITR中会丢失的对象的名称
CREATION_TIME对象的创建时间戳
TABLESPACE_NAME包含对象的表空间的名称

以下示例显示当对包括users和tools表空间的恢复集执行TSPITR和恢复时间点是2017-11-027:03:11 am时需要保存的对象。

SELECT OWNER, NAME, TABLESPACE_NAME,
TO_CHAR(CREATION_TIME, ‘YYYY-MM-DD:HH24:MI:SS’)
FROM TS_PITR_OBJECTS_TO_BE_DROPPED
WHERE TABLESPACE_NAME IN (‘USERS’,‘TOOLS’)
AND CREATION_TIME > TO_DATE(‘02-NOV-17:07:03:11’,‘YY-MON-DD:HH24:MI:SS’)
ORDER BY TABLESPACE_NAME, CREATION_TIME;

函数TO_CHAR和TO_DATE是用来避免不同国家日期格式的问题。当然,你可以在你的工作中使用本地日期格式。

如果恢复表空间USERS和TOOLS的SCN是1645870,这个示例确认要被删除的对象。使用转换函数来确认与SCN关联的时间戳和要被删除的对象。
SELECT OWNER, NAME, TABLESPACE_NAME,
TO_CHAR(CREATION_TIME,‘YYYY-MM-DD:HH24:MI:SS’)
FROM TS_PITR_OBJECTS_TO_BE_DROPPED
WHERE TABLESPACE_NAME IN (‘USERS’,‘TOOLS’)
AND CREATION_TIME > TO_DATE(TO_CHAR(SCN_TO_TIMESTAMP(1645870),
‘MM/DD/YYYY HH24:MI:SS’),‘MM/DD/YYYY HH24:MI:SS’)
ORDER BY TABLESPACE_NAME, CREATION_TIME;


4.运行完全自动RMAN TSPITR

在缺省模式中,RMAN尽可能基于目标数据库的配置来执行TSPITR。

在TSPITR过程中,恢复集数据文件写在目标数据库的当前位置。当从备份中还原文件时,目标数据库的相同的通道配置也用在辅助数据库上。辅助集数据文件和其它辅助数据库文件,则存在辅助目的地中。

使用AUXILIARY DESTINATION参数设置一个位置让RMAN用来存放辅助集数据文件。辅助目的地必须是磁盘上的位置有足够的空间来保存辅助集数据文件。即使使用其它技术来命名某些或所有辅助集数据文件,指定AUXILIARY DESTINATION参数为没有指定名称的辅助集数据文件提供了一个缺省的位置。如果你由于疏忽没有提供所有辅助集数据文件的名称,TSPITR不会失败。

为了执行完全自动的RMAN TSPITR,执行TSPITR的用户必须可以以SYSBACKUP或SYSDBA权限使用操作系统认证。

执行完全自动的RMAN TSPITR:
1)检查“TSPITR约束,特殊情况和限制”中的信息。
2)执行“计划和准备TSPITR”中的任务。
3)在目标数据库上启动RMAN会话,如果需要,连接到恢复目录。
注:当启动RMAN客户端执行自动TSPITR时,不要连接到辅助数据库。如果运行RECOVER TABLESPACE时RMAN连接到辅助数据库,那么RMAN假设你管理你自己的辅助数据库,尝试使用连接的辅助数据库来执行TSPITR。
4)在目标实例上配置TSPITR要求的任何通道。
当执行TSPITR时,辅助数据库使用与目标实例相同的通道配置。
5)运行RECOVER TABLESPACE命令,同时指定UNTIL子语句和AUXILIARY DESTINATION参数。
这个示例恢复USERS和TOOLS表空间到日志序列号1299的结尾,存储辅助集文件在/disk1/auxdest目录。
RECOVER TABLESPACE users, tools
UNTIL LOGSEQ 1300 THREAD 1
AUXILIARY DESTINATION ‘/disk1/auxdest’;

6)检查RECOVER命令的结果来决定采取哪个步骤:
a.如果在TSPITR过程中没有发生错误,那么继续步骤7。
RMAN将表空间脱机,在辅助数据库上从备份中还原和恢复到期望的时间点,然后重新导入到目标数据库。表空间被遗留在脱机状态。从辅助目的地中清除所有辅助集数据文件和其它辅助数据文件。
b.如果在TSPITR过程中发生错误,那么继续“故障诊断RMAN TSPITR”。
7)如果TSPITR成功完成,那么在将它们联机之前备份恢复的表空间。
BACKUP TABLESPACE users, tools;

在对表空间执行TSPITR之后,你不能在TSPITR成功完成之后再使用表空间之前的备份。如果你使用恢复的表空间而不进行备份,那么你运行数据库而没有这些表空间的可用备份。
8)将表空间联机。
RMAN> ALTER TABLESPACE users, tools ONLINE;

恢复的表空间现在准备就绪。


5.为使用RMAN管理的辅助数据库的RMAN TSPITR覆盖缺省值

可以自定义RMAN TSPITR的某些方面同时依旧大部分遵循执行完全自动RMAN TSPITR的过程。

这些包括以下:
1)重命名或迁移恢复集数据文件以使组成恢复表空间的数据文件在TSPITR之后不是存储在原始位置。如果原来包含表空间的磁盘不可用,这是必要的。
2)为某些或全部辅助集数据文件指定一个辅助目的地以外的位置。你可能选择这个选项如果一个单一的位置没有足够的空间来存储所有辅助集文件。
3)以OMF格式重命名文件。
4)预先设置辅助集数据文件的映像副本备份来避免在TSPITR过程中还原数据文件。
5)为RMAN管理的辅助数据库自定义初始化参数。


5.1.使用SET NEWNAME重命名TSPITR恢复集数据文件

你可能不想恢复和还原恢复集数据文件在它们的原始位置。命令SET NEWNAME让你指定一个新目的地。当为恢复集指定一个新目的地时,RMAN不会移除表空间的原始数据文件。

为指定新恢复集文件名称,创建一个RUN块和在其中使用SET NEWNAME命令。确保分配相互之间不冲突或不与当前数据文件冲突的名称。

本示例为恢复集数据文件指定新的名称。在个示例中,RMAN采取以下行动:
1)在TSPITR过程中还原每个指定的数据文件到新的位置。
2)使用映像副本如果它在指定的位置存储和它的检查点是在指定的时间点之前。如果这些条件不满足,那么RMAN覆盖映像副本。
3)插入新恢复的数据文件到目标控制文件。

RMAN 不检测使用SET NEWNAME设置的名称和目标数据库上当前的数据文件名称之间的冲突直到实际的恢复。如果RMAN检测到冲突,那么TSPITR失败和RMAN报错。有效的数据文件不会被覆写。
RUN
{
    SET NEWNAME FOR DATAFILE ‘ORACLE_HOME/oradata/trgt/users01.dbf’
    TO ‘/newfs/users01.dbf’;
    …other SET NEWNAME commands…
    RECOVER TABLESPACE users, tools UNTIL SEQUENCE 1300 THREAD 1;
}


5.2.命名TSPITR辅助集数据文件

不像恢复集数据文件通常存储在它们的原始位置,辅助集数据文件必须不能覆盖目标数据库中相应的原始文件。如果你不指定一个不同于它原始位置的辅助集文件的位置,那么TSPITR会失败。当RMAN尝试覆盖原始数据库中的相应文件和发现文件在使用时故障会发生。

为辅助集数据文件提供位置的最简单的方法是为TSPITR指定辅助目的地。然而,RMAN支持以下选项来控制辅助集数据文件的位置,它们按优先级顺序列在下表中。

顺序技术章节
1SET NEWNAME在TSPITR过程中使用SET NEWNAME命名辅助集数据文件
2CONFIGURE AUXNAME使用SET NEWNAME和CONFIGURE AUXNAME与辅助集映像副本
3DB_FILE_NAME_CONVERT在TSPITR过程中使用DB_FILE_NAME_CONVERT来命名辅助集数据文件。如果目标数据库为辅助集使用OMF名称,那么你不能使用DB_FILE_NAME_CONVERT。参考“当在TSPITR中重命名OMF辅助集文件的考虑”。
4当使用RMAN管理的辅助数据库时RECOVER TABLESPACE命令的AUXILIARY DESTINATION参数

在两者都被应用时,列表中更高的设置会覆盖更低的设置。例如,你可能在目标数据库上运行RECOVER TABLESPACE … AUXILIARY DESTINATION当某些辅助集数据文件有使用CONFIGURE AUXNAME配置的辅助名称时。

即使你想使用前面的一个技术为特定的文件提供位置,当使用RMAN管理的辅助数据库时,Oracle建议你提供AUXILIARY DESTINATION参数给RECOVER TABLEPLACE。如果你忽略重命名某些辅助集数据文件,那么TSPITR仍然会成功。任何没有以其它方式命名的文件都会存放在辅助目的地。

注:你可以通过运行SHOW AUXNAME命令查看当前的CONFIGURE AUXNAME设置。


5.2.1.当在TSPITR中重命名OMF辅助集文件的考虑

辅助集数据文件可以有OMF文件在目标数据库和可以使用ASM或非ASM存储。当设置了DB_FILE_NAME_CONVERT初始化参数和OMF文件是在ASM或非ASM存储时,TSPITR执行不同的名称转换。


5.2.1.1.使用ASM存储

可以使用DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT初始化参数为辅助数据库指定磁盘组转换。RMAN使用这个模式来转换ASM磁盘组名称和在转换的磁盘组中生成有效的OMF文件名称。

对于使用ASM的OMF,数据库只转换磁盘组名称如:+DISK1到+DISK2。

以下命令指定日志文件的转换:
LOG_FILE_NAME_CONVERT=‘+onlinelogs’,‘+tmpasm’

如果DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT参数更改了子字符串而不是磁盘组名称,转换会被忽略和作为结果的磁盘组名称会被使用。例如:
DB_FILE_NAME_CONVERT=‘+DATAFILE/prod’,‘+DATAFILE/tspitr’

上面的命令导致无效的ASM OMF文件名称,这个更改会被忽略。顶替的是,文件被创建在磁盘组名称+DATAFILE,报以下信息:
WARNING: DB_FILE_NAME_CONVERT resulted in invalid ASM names; names changed to disk group only

如果辅助集数据文件存储在ASM磁盘组中,那么可以使用SET NEWNAME命令重定向个别的文件到指定的辅助数据库可访问的磁盘组(和允许数据库在磁盘组中生成文件名称)。

以下示例显示如何使用SET NEWNAME命令重定向个别的文件到指定的磁盘组。
RUN
{
    SET NEWNAME FOR DATAFILE 1 TO “+DISK2”;
    SET NEWNAME FOR DATAFILE 2 TO “+DISK3”;
    RECOVER TABLESPACE users, tools
        UNTIL LOGSEQ 1300 THREAD 1
        AUXILIARY DESTINATION ‘/disk1/auxdest’;
}


5.2.1.2.使用非ASM存储

多个方法可用于为辅助数据库重命名OMF(非ASM)文件名称。

初始化参数DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT不能用于为辅助数据库重命名OMF(非ASM)的文件名称,因为这个方法会生成无效的OMF文件名称。如果必须控制新的不使用ASM存储的OMF文件名称的生成,你必须使用以下一种可选择的技术来重命名。

各种命名选项以最推荐到最不推荐的顺序列出。
1)使用辅助目的地,如“执行完全自动RMAN TSPITR”中所述。
2)使用一个或多个OMF初始化参数为辅助数据库指定新OMF文件的位置以便所有必要的OMF文件得到处理:
a.DB_CREATE_FILE_DEST用于辅助集数据文件
b.如果在线日志不创建在DB_CREATE_FILE_DEST中,使用DB_CREATE_ONLINE_LOG_DEST_n和DB_CREATE_FILE_DEST一起用于辅助数据库的在线redo日志。


5.2.2.在TSPITR过程中使用SET NEWNAME来命名辅助集数据文件

为辅助集数据文件指定一个新的名称,可以将RECOVER TABLESPACE包围在RUN命令中和在RUN块中使用SET NEWNAME命令重命名文件。

这个示例阐述使用SET NEWNAME重命名文件的基本技术。这个结果取决于当执行RECOVER TABLESPACE时/disk1/auxdest/system01.dbf是否存在。如果?/oradata/system01.dbf存在于指定的位置和在TSPITR的UNTIL时间之前的SCN时创建,那么使用DATAFILECOPY,还原操作就不是必要的。否则,RMAN还原辅助集数据文件到NEWNAME而不是缺省的位置。如果你的目的是控制在哪里存储辅助集数据文件,那么在执行TSPITR之前确保没有文件存储在SET NEWNAME指定的位置。

RUN
{
    SET NEWNAME FOR DATAFILE ‘?/oradata/prod/system01.dbf’
        TO ‘/disk1/auxdest/system01.dbf’;
    SET NEWNAME FOR DATAFILE ‘?/oradata/prod/sysaux01.dbf’
        TO ‘/disk1/auxdest/sysaux01.dbf’;
    SET NEWNAME FOR DATAFILE ‘?/oradata/prod/undotbs01.dbf’
        TO ‘/disk1/auxdest/undotbs01.dbf’;
    RECOVER TABLESPACE users, tools
    UNTIL LOGSEQ 1300 THREAD 1
    AUXILIARY DESTINATION ‘/disk1/auxdest’;
}


5.2.3.在TSPITR过程中使用DB_FILE_NAME_CONVERT命名辅助集数据文件

当你不想为所有辅助集数据文件使用辅助目的地,但也不想单独命名每个文件时,可以包含DB_FILE_NAME_CONVERT初始化参数在辅助数据库使用的初始化参数文件中。

你可以使用这个技术只有当以下其中一个情形存在时:
1)为自动管理的辅助数据库创建你自己的初始化参数文件,如“在TSPITR过程中为自动辅助数据库自定义初始化参数”中所述。
2)创建你自己的辅助数据库,如“使用你自己的辅助数据库执行RMAN TSPITR”中所述。

在辅助数据库中的初始化参数DB_FILE_NAME_CONVERT指定如何从目标数据库实例中相应文件的原始名称中衍生辅助数据库中的文件名称。参数包含成对的字符串列表。对于任何包含一对字符串的第一个字符串作为子字符串的文件名称,在辅助数据库中的相应文件的名称是通过替换成一对字符串的第二个字符串到原始的文件名称中来生成。

例如,假设目标数据库实例包含以下文件:
1)表空间SYSTEM的?/oradata/trgt/system01.dbf
2)表空间SYSAUX的?/oradata/trgt/sysaux01.dbf
3)表空间undotbs的?/oradata/trgt/undotbs01.dbf

为将辅助数据库相应的文件存放在/bigtmp,增加以下行到辅助数据库参数文件:
DB_FILE_NAME_CONVERT=(‘?/oradata/trgt’, ‘/bigtmp’)

相应的辅助数据库文件的新文件名称是/bigtmp/trgt/system01.dbf,/bigtmp/trgt/sysaux01.dbf和/bigtmp/trgt/undotbs01.dbf。

最重要的是记得DB_FILE_NAME_CONVERT必须在辅助数据库参数文件中。如果辅助数据库是手动创建的,那么增加DB_FILE_NAME_CONVERT到辅助数据库参数文件。

你可以仍然使用SET NEWNAME或CONFIGURE AUXNAME命令重命名个别的辅助集数据文件。同时,不匹配DB_FILE_NAME_CONVERT提供的模式的文件不会被重命名。当使用RMAN管理的辅助数据库时,可以使用RECOVER TABLESPACE的AUXILIARY DESTINATION参数来确保所有辅助集数据文件被发送到某些目的地。如果重命名方法不为辅助数据库的文件提供新名称,那么TSPITR失败。


5.2.3.1.在TSPITR过程中重命名临时文件

临时文件被视为数据库辅助集的一部分。当辅助数据库被初始化时,RMAN重建目标数据库的临时表空间和使用辅助数据文件名称的常用规则生成它们的名称。

为重命名临时文件,可以使用以下一种方法:
1)SET NEWNAME FOR TEMPFILE命令
2)辅助数据库的DB_FILE_NAME_CONVERT初始化参数。如果临时文件有非ASM OMF文件名称,你不能使用这个参数选项。
3)当使用RMAN管理的辅助数据库时RECOVER命令的AUXILIARY DESTINNATION子语句。


5.3.为更快的RMAN TSPITR性能使用映像副本

通过重定向RMAN使用存在的恢复集和辅助集数据文件的映像副本来提高TSPITR性能。RMAN不需要从备份中还原数据文件。

通常,如果适合的映像副本在指定的位置中可用,那么RMAN使用映像副本来执行TSPITR,这个数据文件副本没有在目标控制文件中登记。

可以使用以下技术告知RMAN关于数据文件映像副本的可能存在:
1)使用CONFIGURE AUXNAME命令和辅助集数据文件的映像副本
2)使用SET NEWNAME和恢复集数据文件或辅助集数据文件的映像副本


5.3.1.使用SET NEWNAME与恢复集映像副本

当使用映像副本执行TSPITR时,命令SET NEWNAME让你指定映像副本的位置。

在TSPITR期间,RMAN在指定的NEWNAME位置搜索数据文件。RMAN检查数据文件检查点SCN足够早可以恢复到目标时间的的数据文件的映像副本备份是否存在。如果RMAN找到一个可用的映像副本,那么RMAN使用它来执行TSPITR。否则,RMAN还原数据文件到NEWNAME位置。任何通过NEWNAME指定的位置中的文件都会被覆盖。在TSPITR完成之后,指定的NEWNAME变成目标数据库中的数据文件名称。

这个示例通过使用恢复集文件的映像副本执行TSPITR。SET NEWNAME命令明确指定表空间的映像副本的位置。
RUN
{
    SET NEWNAME FOR DATAFILE ‘ORACLE_HOME/oradata/trgt/users01.dbf’
        TO ‘/newfs/users1.dbf’;
    …other RMAN commands, if any…
    RECOVER TABLESPACE users, tools UNTIL SEQUENCE 1300 THREAD 1;
}


5.3.2.使用SET NEWNAME和CONFIGURE AUXNAME与辅助集映像副本

CONFIGURE AUXNAME命令为辅助集数据文件映像副本设置持久的可选位置,而SET NEWNAME命令只在RUN命令的持续时间里设置可选位置。

假设你使用SET NEWNAME或CONFIGURE AUXNAME为辅助集数据文件指定新位置。同时假设在位置中有可以在TSPITR中使用的SCN的映像副本。在这个情况中,RMAN使用映像副本。如果在那个位置不存在可用的映像副本,那么RMAN从备份中还原可用的副本。(如果存在映像副本但它的SCN是在TSPITR目标时间之后,那么数据文件被还原的文件覆盖。)

如所有辅助集文件一样,在TSPITR之后文件会被删除。不管它是一个在TSPITR之前创建的还是在TSPITR期间被RMAN还原的映像副本,这个行为都会发生。

CONFIGURE AUXNAME的主要用途是通过消除还原时间让TSPITR更快。如果你预料会执行TSPITR,那么你可以在你的备份策略中包含辅助集数据文件的一组映像副本的维护,定期更新这些到你预计执行TSPITR的最早时间点。这个建议的使用模式是:
1)当设置这个策略时,为文件配置一次AUXNAME。
2)定期执行BACKUP AS COPY DATAFILE n FORMAT auxname来维护更新的映像副本。为了更好的性能,使用增量更新的备份策略来保持映像副本最新而不用执行数据文件的完全备份。
3)当TSPITR需要时,指定在上次更新映像副本之后的目标时间。


5.3.3.使用CONFIGURE AUXNAME与映像副本执行TSPITR的场景

当使用映像副本执行TSPITR时,这个过程使用CONFIGURE AUXNAME。

假设你有足够的磁盘空间来保存整个数据库的映像副本在TSPITR中使用。在为可能的TSPITR准备中,你做了以下操作:
1)为辅助集中的每个数据文件配置AUXNAME:
CONFIGURE AUXNAME FOR DATAFILE n TO auxname_n;
2)每个周日对辅助集做一个映像副本:
BACKUP AS COPY DATAFILE n FORMAT auxname_n

如果所有映像副本在磁盘的相同位置和如果它们使用与原始数据文件类似的方式命名,那么可以避免对每个数据文件执行备份。替代地,可以使用BACKUP命令的FORMAT或DB_FILE_NAME_CONVERT选项和使用BACKUP AS COPY DATABASE命令。例如,如果配置的辅助集名称是maindisk到auxdisk的位置转换,那么使用以下命令:
BACKUP AS COPY
DATABASE
DB_FILE_NAME_CONVERT (maindisk, auxdisk);
注:因为OMF文件一般不能使用简单的替换来进行转换,你通常不能使用DB_FILE_NAME_CONVERT来为存储在OMF的映像副本生成名称。

在这些步骤之后,你准备好不需要从备份中还原辅助集的TSPITR。例如,如果一个错误的批作业在2013-11-15 19:00:00启动,不正确地更新了表空间parts中的表,你使用以下命令在表空间parts上执行TSPITR:
RECOVER TABLESPACE parts UNTIL TIME ‘November 15 2013, 19:00:00’;

由于AUXNAME位置已被配置和指向在TSPITR目标时间以前的SCN的映像文件副本,辅助集不需要从备份还原。替代地,在恢复中使用数据文件副本,它减少还原开销。

你也可以预防还原恢复集。你必须频繁地对表空间做映像副本和使用SET NEWNAME来指定这些副本的位置。这个方法确保恢复集不被还原和在TSPITR成功完成之后表空间更改位置。


5.4.为TSPITR的自动辅助数据库自定义初始化参数

自动的辅助数据库使用一组缺省的初始化参数。如果需要,你可以增加其它参数。

自动的辅助数据库搜索额外的初始化参数来补充操作系统依赖的位置中的缺省参数。例如,在UNIX中这个位置是:?/rdbms/admin/params_auxinst.ora。当执行TSPITR时,RMAN总是为RMAN自动管理的辅助数据库搜索这个额外的参数文件。如果这个文件没找到,RMAN不会产生错误。替代地,RMAN为RMAN管理的自动辅助数据库使用列在下表的缺省参数。

初始化参数
DB_NAME与源数据库的DB_NAME相同
COMPATIBLE与目标数据库的COMPATIBLE设置相同
DB_UNIQUE_NAMERMAN基于DB_NAME自动生成唯一的值
DB_BLOCK_SIZE与目标数据库的DB_BLOCK_SIZE相同
DB_CREATE_FILE_DEST辅助目的地(只有当使用RMAN管理的辅助数据库时指定了AUXILIARY DESTINATION参数)。RMAN在这个位置中为辅助集文件创建OMF文件。
LOG_ARCHIVE_DEST_1辅助目的地(只有当使用RMAN管理的辅助数据库时指定了AUXILIARY DESTINATION参数)。恢复需要的归档日志还原到这个位置。
SGA_TARGET与目标数据库的SGA_TARGET相同。
DB_FILES与目标数据库的DB_FILES相同
PROCESSES200

通常不必要更改或增加这些初始化参数的值,特别是当使用RMAN管理的辅助数据库时如果你提供了AUXILIARY DESTINATION子语句给RECOVER TABLESPACE命令。如果你使用不适合的值覆盖了上表中的初始化参数,那么RMAN可能会由于辅助数据库的问题而失败。无论如何,如果需要你可以增加除了这些基本参数之外的其它参数。例如,你可以使用DB_FILE_NAME_CONVERT来指定辅助和恢复集的数据文件的名称。

为了覆盖或指定自动辅助数据库的参数,你可以做其中一个以下操作:
1)将初始化参数放置在操作系统特定的缺省辅助参数文件中。例如,在UNIX中,文件名称是:?/rdbms/admin/params_auxinst.ora。
2)执行这些步骤:
a.将初始化参数放置在一个文件中。
b.在执行TSPITR之间使用SET AUXILIARY INSTANCE PARAMETER FILE命令指定这个文件的位置。

不管你选择哪个方法,你指定的参数优先于缺省值和可以覆盖AUXILIARY DESTINATION子语句的值。


5.4.1.在TSPITR中指定辅助数据库控制文件位置

如果使用初始化参数文件,那么你可以使用CONTROL_FILES初始化参数指定辅助数据库的控制文件的位置。

如果不明确指定控制文件的位置和如果你使用AUXILIARY DESTINATION子语句,那么RMAN在辅助目的地中定位控制文件。如果你不使用AUXILIARY DESTINATION子语句,那么辅助数据库控制文件存储在操作系统特定的位置。

不管你在哪里存储辅助数据库控制文件,它在TSPITR操作结束时都会被移除。因为控制文件是相对较小,RMAN在创建辅助控制文件时遇到问题是很少见的。如果没有足够的空间来创建控制文件,那么TSPITR会失败。


5.4.2.在TSPITR中指定辅助数据库归档日志

为在辅助数据库上还原辅助和恢复集之后执行恢复,RMAN可能需要还原归档日志。当使用辅助目的地时,归档日志被还原到那个位置。

在缺少辅助目的地和任何其它初始化参数时,归档日志会被还原到操作系统特定的位置。可以参考操作系统特定的文档了解详情。可以使用LOG_ARCHIVE_DEST_1初始化参数指定一个归档日志被还原到的可替代的位置。


5.4.3.在TSPITR中指定辅助数据库在线日志位置

如果在辅助数据库参数文件中指定了LOG_FILE_NAME_CONVERT初始化参数和这个参数成功转换了目标数据库的在线redo日志的名称,那么这个参数决定了在线redo日志的位置。

如章节“在TSPITR中当重命名OMF辅助集文件时的考虑”中所述,应用到OMF数据文件的相同限制也应用到OMF在线redo日志。如果RMAN管理辅助数据库和指定了辅助目的地,RMAN在辅助目的地创建在线redo日志。

可替换地,可以使用DB_CREATE_FILE_DEST或DB_CREATE_FILE_DEST与DB_CREATE_ONLINE_LOG_1指定辅助数据库redo日志创建的位置。如果你选择后者,那么必须与DB_CREATE_FILE_DEST一起使用DB_CREATE_ONLINE_LOG_1。

如果不通过以下其中一个方法指定在线redo日志的位置,那么TSPITR会不能创建在线redo日志。
1)LOG_FILE_NAME_CONVERT
2)DB_CREATE_FILE_DEST
3)DB_CREATE_FILE_DEST和DB_CREATE_ONLINE_LOG_1
4)AUXILIARY DESTINATION


6.使用你自己的辅助数据库执行RMAN TSPITR

虽然Oracle建议让RMAN管理辅助数据库的所有方面,可能存在必须创建和管理你自己的辅助数据库的时候。如果你选择这个模式,你需要负责设置,启动,停止和清除在TSPITR中使用的辅助数据库。

你想创建自己的实例的一个原因是想控制在TSPITR中使用的通道。自动辅助数据库使用目标数据库配置的通道作为基础来配置辅助数据库上的通道在还原操作期间使用。你可能需要不同的通道配置和不想使用CONFIGURE命令来更改目标数据库上的设置。在这个情况中,你可以操作你自己的辅助数据库。在调用RECOVER之前,通过连接到辅助数据库,使用ALLOCATE AUXILIARY CHANNEL命令,一个RUN块可以提供特定的通道分配。


6.1.为RMAN TSPITR准备你自己的辅助数据库

创建一个适合作为辅助数据库使用的Oracle实例要求你执行一系列步骤。

步骤1:为辅助数据库创建一个Oracle密码文件

步骤2:为辅助数据库创建一个初始化参数文件
在目标数据库主机上使用文本编辑器为辅助数据库创建一个初始化参数文件。

注:对于TSPITR,目标和辅助数据库实例必须在相同的主机上。

在这个示例中,假设参数文件放在/tmp/initAux.ora。设置下表中描述的参数:

表21-5 用户管理的辅助数据库中的初始化参数

初始化参数强制性的
DB_NAME与目标数据库相同的名称
DB_UNIQUE_NAME与相同Oracle家目录中的任何数据库不同的值。为简洁性,指定_dbname。例如,如果目标数据库是trgt,那么指定_trgt。
REMOTE_LOGIN_PASSWORDFILE当使用密码文件连接到辅助数据库时设置EXCLUSIVE。否则,设置为NONE。
COMPATIBLE与目标数据库中的参数相同的值。
DB_BLOCK_SZIE如果在目标数据库中设置了这个初始化参数,那么它必须在辅助数据库中设置为相同的值。
LOG_FILE_NAME_CONVERT基于目标数据库的在线redo日志名称为辅助数据库的在线redo日志文件生成文件名称的模式。查询V$LOGFILE.MEMBER来获取目标实例的在线redo日志的文件名称和确保转换模式匹配视图中显示的文件名称的格式。注:某些平台不支持模式以斜杠或反斜杠结尾(/或\)。
DB_FILE_NAME_CONVERT转换辅助数据库的数据文件的文件名称的模式。可以使用这个参数为那些没有使用SET NEWNAME或CONFIGURE AUXNAME命名的文件生成文件名称。通过查询V$DATAFILE.NAME获取数据文件名称,确保转换模式匹配视图中显示的文件名称的格式。注:某些平台不支持模式以斜杠或反斜杠结尾(/或\)。
DB_CREATE_FILE_DEST为所有辅助集文件指定一个位置。
LOG_ARCHIVE_DEST_n指定创建恢复需要的归档日志的位置。
DB_CREATE_ONLINE_LOG_ n与DB_CREATE_FILE_DEST一起指定不同的创建在线redo日志的位置
CONTROL_FILES与目标实例的控制文件名称(或任何其它存在的文件)不冲突的文件名称
SGA_TARGET否(建议)280M
STREAMS_POOL_SIZE否;是如果设置了SGA_TARGET;如果未设置SGA_TARGET。

设置其它需要的参数,包括指定辅助数据库使用多少内存的参数。

以下示例显示TSPITR的辅助数据库的可能的初始化参数设置:
DB_NAME=trgt
DB_UNIQUE_NAME=_trgt
CONTROL_FILES=/tmp/control01.ctl
DB_FILE_NAME_CONVERT=(‘/oracle/oradata/trgt/’,‘/tmp/’)
LOG_FILE_NAME_CONVERT=(‘/oracle/oradata/trgt/redo’,‘/tmp/redo’)
REMOTE_LOGIN_PASSWORDFILE=exclusive
COMPATIBLE =11.0.0
DB_BLOCK_SIZE=8192

注:在设置这些初始化参数之后,确保你没有覆盖目标数据库的生产文件的初始化设置。

步骤3:检查到辅助数据库的Oracle网络连接。
辅助数据库必须有一个有效的网络服务名称。在继续之前,使用SQL*Plus确保可以建立SYSBACKUP或SYSDBA连接到辅助数据库。


6.2.为TSPITR与你自己的辅助数据库准备RMAN命令

当使用你自己的辅助实例执行TSPITR时记住某些准则。

如果你运行你自己的数据库,那么TSPITR要求的命令序列可能比较长。当分配复杂的通道配置从备份还原和你在使用DB_CREATE_FILE_DEST决定辅助集文件的命名时,这个情形会发生。

你可能想为TSPITR存储命令序列在RMAN命令文件中。仔细检查命令文件捕获错误。使用@命令(或当启动RMAN是使用CMDFILE命令行参数)读取命令文件到RMAN。

以下命令运行名为/tmp/tspitr.rman的命令行文件:
@/tmp/tspitr.rman;


6.2.1.为TSPITR与你自己的辅助数据库计划通道

当你使用自己的辅助数据库执行TSPITR时,通道的缺省行为可以被覆盖。

当你运行你自己的辅助数据库,缺省行为是使用目标数据库的自动通道配置。如果你决定使用不同的配置分配你自己的通道(更改通道数量或通道参数),可以为TSPITR在RUN块中包括ALLOCATE AUXILIARY CHANNEL和RECOVER TABLESPACE命令。如果必要,规划这些命令和增加它们到你为TSPITR运行的命令序列中。


6.2.2.规划你自己的辅助数据库的数据文件名称:SET NEWNAME

你可能想使用SET NEWNAME命令指向辅助集文件的存在的映像副本来改善TSPITR性能,或者在TSPITR之后分配新的名称给恢复集文件。规划这些命令,如果必要,增加它们到你为TSPITR运行的命令序列。


6.3.使用你自己的辅助数据库执行RMAN TSPITR

完成前提要求,然后遵循本节中的步骤使用你自己的辅助数据库执行TSPITR。

步骤1:启动辅助数据库到NOMOUNT模式

在开始RMAN TSPITR之前,必须启动辅助数据库。因为辅助数据库还没有控制文件,你可以只启动实例到NOMOUNT模式。

不要为TSPITR创建控制文件或尝试挂载以及打开辅助数据库。

启动辅助数据库:
1)启动SQL*Plus和使用SYSOPER权限连接到辅助数据库。

2)启动辅助数据库到NOMOUNT模式,如果必要指定参数文件。
SQL> STARTUP NOMOUNT PFILE=‘/tmp/initAux.ora’

记住如果指定PFILE,那么PFILE的路径是你运行SQL*PLUS的主机上的客户端路径。

步骤2:连接RMAN客户端到目标和辅助数据库
启动RMAN,连接到目标数据库和手动创建的辅助数据库。
rman target dba AUXILIARY auxusr@aux

步骤3:执行RECOVER TABLESPACE命令
使用RECOVER TABLESPACE命令使用你自己的辅助实例执行TSPITR。

在最简单的情况中,运行RECOVER TABLESPACE … UNTIL命令:
RECOVER TABLESPACE ts1, ts2… UNTIL TIME ‘time’;

如果你想使用ALLOCATE AUXILIARY CHANNEL或SET NEWNAME命令,那么在命令RECOVERTABLESPACE之前包括这些命令在RUN命令中。
RUN
{
    ALLOCATE AUXILIARY CHANNEL c1 DEVICE TYPE DISK;
    ALLOCATE AUXILIARY CHANNEL c2 DEVICE TYPE sbt;
    # and so on…
    RECOVER TABLESPACE ts1, ts2 UNTIL TIME ‘time’;
}


6.4.使用你自己的辅助数据库执行RMAN TSPITR的场景

这个过程使用RECOVER TABLESPACE … UNTIL命令执行TSPITR。

这个场景阐述RMAN TSPITR的以下特性:
1)管理你自己的辅助数据库
2)配置从磁盘和SBT设备还原备份的通道
3)使用SET NEWNAME为某些恢复集数据库利用可恢复的映像副本
4)使用SET NEWNAME指定恢复集数据文件的新名称

利用你自己的辅助数据库使用TSPITR:
1)按照“为RMAN TSPITR准备你自己的辅助数据库”章节所术,准备辅助数据库。在密码文件中为辅助数据库指定密码,使用以下参数设置辅助数据库参数文件/bigtmp/init_tspitr_prod.ora:
DB_NAME=PROD
DB_UNIQUE_NAME=tspitr_PROD
CONTROL_FILES=/bigtmp/tspitr_cntrl.dbf
DB_CREATE_FILE_DEST=/bigtmp
COMPATIBLE=11.0.0
BLOCK_SIZE=8192
REMOTE_LOGIN_PASSWORD=exclusive

2)为辅助数据库创建服务名称pitprod,检查连通性。

3)使用SQL*Plus,使用SYSOPER权限连接到辅助数据库。启动实例到NOMOUNT模式:
SQL> STARTUP NOMOUNT PFILE=/bigtmp/init_tspitr_prod.ora

4)启动RMAN,连接到目标和辅助数据库实例。
rman target / auxiliary ‘“sbu@pitprod AS SYSBACKUP”’

5)在RUN块中输入以下命令设置和执行TSPITR:
RUN
{
    # Specify NEWNAME for recovery set data files
    SET NEWNAME FOR TABLESPACE clients
        TO ‘?/oradata/prod/rec/%b’;

    # Specify NEWNAMES for some auxiliary set
    # data files that have a valid image copy to avoid restores:
    SET NEWNAME FOR DATAFILE ‘?/oradata/prod/system01.dbf’
        TO ‘/backups/prod/system01_monday_noon.dbf’;
    SET NEWNAME FOR DATAFILE ‘?/oradata/prod/system02.dbf’
        TO ‘/backups/prod/system02_monday_noon.dbf’;
    SET NEWNAME FOR DATAFILE ‘?/oradata/prod/sysaux01.dbf’
        TO ‘/backups/prod/sysaux01_monday_noon.dbf’;
    SET NEWNAME FOR DATAFILE ‘?/oradata/prod/undo01.dbf’
        TO ‘/backups/prod/undo01_monday_noon.dbf’;

    # Specify the types of channels to use
    ALLOCATE AUXILIARY CHANNEL c1 DEVICE TYPE DISK;
    ALLOCATE AUXILIARY CHANNEL t1 DEVICE TYPE sbt;

    # Recover the clients tablespace to 24 hours ago:
    RECOVER TABLESPACE clients UNTIL TIME ‘sysdate-1’;
}

考虑存储这个命令序列在命令文件中和执行命令文件。

如果TSPITR操作是成功的,那么结果是:
1)恢复集数据文件使用SET NEWNAME指定的名称注册在目标数据库控制文件中,它们的内容和TSPITR指定的时间是一样。
2)辅助集文件会被RMAN移除,包括控制文件,在线日志和辅助数据库的辅助集数据文件。
3)辅助数据库被关闭。

如果TSPITR操作失败,辅助集文件会被移除和辅助数据库被关闭。恢复集文件遗留在指定位置和在TSPITR运行失败时的未解决的状态。


7.故障诊断RMAN TSPITR

各种问题可以导致RMAN TSPITR失败。问题必须被查明和纠正。

要检查和修复的某些可能的领域如下:
1)文件名称冲突
2)表空间集和undo段的TSPITR目标时间不匹配或不正确
3)不是通过RMAN创建的辅助数据库的管理问题


7.1.在TSPITR期间文件名称冲突的故障诊断

目标数据库中的文件和通过SET NEWNAME或CONFIGURE AUXNAME分配的文件名称,参数DB_FILE_NAME_CONVERT生效产生的文件名称之间可能会发生名称冲突。

假设SET NEWNAME,CONFIGURE AUXNAME和DB_FILE_NAME_CONVERT导致辅助或恢复集中的多个文件具有相同的名称。在这种情况中,RMAN在TSPITR期间报告错误。为纠正这些问题,为这些参数使用不同的值。


7.2.在TSPITR期间具有undo段的表空间鉴别的故障诊断

在TSPITR期间,RMAN需要关于在TSPITR目标时间哪个表空间拥有undo段的信息。这个信息通常在恢复目录中是可用的,如果使用了恢复目录的话。

如果不存在恢复目录或这个信息在恢复目录中无法找到,RMAN假设在目标时间里具有undo段的表空间集与当前时间具有undo段的表空间集是相同的。如果这个假设不正确,那么TSPITR失败和报错。在这种情况中,使用UNDO TABLESPACE子语句提供在目标时间具有undo段的表空间列表。


7.3.在TSPITR故障之后重启手动辅助数据库的故障诊断

如果你正在管理你自己的辅助数据库和TSPITR失败,不要在未解决错误时尝试重新运行TSPITR。

你必须遵循以下路径:
1)鉴别和修复阻止TSPITR成功运行的问题。
2)启动辅助数据库到NOMOUNT模式。
3)再次运行TSPITR。




来源:《Oracle Database Backup and Recovery User’s Guide,19c》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值