笔记-backup and recovery-第二十一章 表空间基于时间点的恢复(TSPITR).txt

第二十一章 表空间基于时间点的恢复(TSPITR)
一、综述
1.目的
快速恢复一个或多个表空间到以前某个时间点,而不影响其他表空间。
应用领域:
1)当多个逻辑数据库存在于相互分离的物理数据库的表空间中时,将逻辑数据库恢复到以其他物理数据库不同的时间点。比如逻辑数据库放在orders和personnel表空间中。
2)在DDL操作之后恢复数据结构和数据。由于结构变化,无法采用闪回恢复。
3)在用purge选项清除表之后恢复该表
4)恢复逻辑中断的表
5)恢复删除的表空间。即使不使用恢复编录,rman也可以对删除的表空间进行恢复。
闪回数据库与之相比,需要闪回日志的支持、只能对全库进行闪回,并且受闪回窗口限制。
2.TSPITR基本概念
目标实例:包含待恢复表空间的实例
目标时间:TSPITR完成后的时间点或scn
辅助实例:用于恢复过程中的数据库实例。
辅助目的地:rman用于临时存储辅助设置文件的一个可选磁盘地址。辅助目的地只在rman管理的辅助实例中使用。在用户管理的辅助实例中使用,会报错。
恢复设置(recovery set):表空间中你打算恢复的数据文件。
辅助设置(auxiliary set):需要TSPITR的数据文件不是恢复设置的一部分,包括:
system和sysaux表空间
目标数据库实例中包含回滚和撤销段的数据文件
临时表空间
原数据库的控制文件
需要修复并覆盖特定时间点的归档日志
辅助实例的在线日志。与源数据库的在线日志不一样。是辅助实例用resetlogs模式打开时创建的。
辅助设置不包括参数文件、密码文件和network文件

1)rman TSPITR的模式
通过recover tablespace命令执行TSPITR有三种运行模式:
a、完全自动 (默认的)
这种模式下rman管理整个TSPITR过程,包括辅助实例。你指定恢复设置的表空间、辅助目的地、目标时间,允许rman管理其他方面。
默认方式是推荐的,除非需要对TSPITR后的恢复设置文件的位置,TSPITR过程中的辅助设置文件,通道设置和参数或辅助实例的其他方面进行更多控制。
b、自动:用户设置的rman管理的辅助实例
使用rman管理的辅助实例和目的地时可以忽略rmanTSPITR的一些默认设置。默认模式的这些变化将使你在一些rman tsitr制定了辅助设置位置或恢复设置文件、初始化参数时提供更好的管理。
c、非自动:TSPITR和用户管理辅助实例
这种模式需要设置和管理辅助实例的所有方面以及TSPITR过程的一些方面。该模式在你必须分配不同数量的通道或者在用户管理的辅助实例中设置通道参数时比较有效。

TSPITR如何在rman管理的辅助实例上工作:
从恢复设置中选择了表空间,辅助目的地和目标时间,你就可以准备进行完全自动的rman TSPITR了。
TSPITR自动进行如下操作:
1)如果恢复设置中的表空间未删除,通过执行dbms_tts.transport_Set_check检查对于恢复设置表空间其是否是自包含的。如果查询返回了几行,rman停止TSPITR过程。你必须在TSPITR之前解决表空间的包含问题。(也就是说待恢复的表空间不能包含其他表空间,也不能被其他表空间包含,导致数据不一致)
2)检查是否有到用户管理的辅助实例的连接。如果有,TSPITR就使用它;如果没有,创建辅助实例,启动并连接
3)在目标数据库上将待恢复的表空间脱机,如果在恢复设置中表空间没有被删除
4)在辅助实例中修复备份的控制文件到目标时间点之前的一个时间
5)根据恢复设置和辅助设置为辅助实例修复数据文件
修复的文件可以在:
你为每个文件本地指定的位置
文件的原位置(对于恢复设置数据文件)
辅助目的地(如果在recover tablespace中使用辅助目的地,并使用了rman管理的辅助实例)
6)在辅助实例中覆盖修复的控制文件到特定时间点
7)resetlogs方式打开辅助数据库
8)使辅助实例中的恢复设置表空间只读
9)从辅助实例使用数据泵方式导出恢复设置表空间,生成一个可传输表空间dump文件
10)关闭辅助实例
11)从目标库删除恢复设置表空间
12)数据泵导入可传输表空间dump文件,将恢复设置表空间插入目标库
13)使放在目标数据库上的表空间为可读写模式,并立即使其脱机
14)删除所有辅助设置文件
至此TSPITR就完成了。恢复设置数据文件被返回到特定时间点,属于目标数据库。
恢复设置表空间是脱机的,需要改为联机状态。最后一步是TSPITR后立即进行所恢复表空间的备份

二、TSPITR的限制,特例等
以下是不应该使用TSPITR的场景:
1)没有归档日志或运行在非归档模式
2)如果用于恢复一个重命名的表空间到其改名之前,必须使用原名进行恢复
这时,TSPITR完成后目标数据库包括两个同一表空间的镜像,原来的库中是新数据库名,TSPITR表空间是旧名。如果这不是你的目标,可以删除新名称的表空间
3)如果在表空间tbs2中包括tbs1表空间的约束,就不能只对tbs1进行恢复(需要和tbs2一起恢复)
4)不能用TSPITR覆盖当前默认表空间
5)不能用TSPITR覆盖包括如下对象的表空间:
有物化视图、分区表等对象,除非所有这些对象都在恢复设置中
回滚或撤销段
oracle 8 …………
sys用户拥有的对象
1.TSPITR的限制
TSPITR完成后,rman将恢复设置中的数据文件恢复到目标时间点。记住以下特例:
TSPITR不会覆盖被恢复对象的查询优化器统计信息,需要在恢复后重新收集统计信息
如果在某个表空间进行TSPITR,将表空间在时间t连接,在时间t之前的表空间备份对于当前控制文件来说恢复时没有用。你不能用当前控制文件恢复数据库到t时间或之前
如果恢复设置中一个或多个数据文件有oracle managed file(OMF)名字目标数据库版本是10.1或更早,rman不能重用数据文件。该限制在未使用set newname时仍然成立。恢复设置数据文件将创建新的OMF名字。该动作临时将数据文件需要的空间加倍了。由于db_create_File_dest有两个数据文件的镜像(原数据文件和TSPITR使用的数据文件),知道从目标删除表空间。

2.不使用恢复编录时的特殊考虑
由于rman在控制文件中没有undo的历史记录,rman假设有撤销或回滚段的表空间在恢复时的设置与当前一样。如果表空间设置在此时间以后修改了,当前回滚段或撤销段。

三、TSPITR的计划和准备
1.选择正确的目标时间
TSPITR后将表空间联机,之后就不能在使用该时刻之前的备份了。
如果你有恢复编录,可以通过多次操作将数据库恢复到不同的目标时间点,因为编录包含了表空间的历史信息。如果rman只使用控制文件,只有在删除表空间后才能进行多次的TSPITR,因为控制文件没有表空间历史信息。进一步讲,rman只知道表空间的当前设置。进行TSPITR的数据库的创建时间与联机时间相同。
为了查看数据原来的状态来确定TSPITR的目标时间,可以使用闪回查询、oracle transaction query、闪回版本查询找到非预期修改发生的时间。
2.决定恢复设置
初始状态下,恢复设置包括你打算回复的表空间中的数据文件。但是如果表空间中你需要的对象与其他表空间中的对象存在关系,如约束等,那么必须将其考虑在内。有如下的解决方法:
1)将相关表空间一起恢复
2)删除关联
3)保持TSPITR期间的关系
TSPITR需要表空间自包含,且不包含sys用户的对象。可以使用dbms_tts.transport_Set_check定位到表空间以外的冠梁对象。如果transport_set_check视图有数据返回,必须检查并修正该问题。
注意:如果恢复设置中的表空间被删除了,rmanTSPITR无法运行dbms_tts.transport_set_check。这种情况下在数据泵导出辅助实例时运行dbms_tts.transport_set_check。就想rman TSPITR,如果表空间非自包含的,导出操作也会失败。
记录该步骤所有的动作,以便可以重建一些有疑问或者在完成TSPITR后删除关联。只有在transport_set_violations视图为空后,才能进行基于表空间的恢复。
3.定位和保留TSPITR后失去的对象
进行TSPITR操作是,在目标恢复时间以后创建的对象会丢失。可以在进行TSPITR操作前将其导出,TSPITR操作后再导入。
要判断哪些对象在TSPITR操作后丢失了,可以查询sys.ts_pitr_objects_to_be_dropped视图。
通过creation_time可以过滤出哪些对象将被删除。
四、进行完全自动的TSPITR
默认模式下,rman在目标数据库上基于尽可能多的TSPITR配置。在TSPITR过程中,恢复设置数据文件被写入到目标数据库的当前位置。在从备份恢复文件时,目标数据库相同的通道配置被应用到辅助实例。辅助设置数据文件和其他辅助实例文件则被存储到辅助目的地。
使用auxiliary destination参数设置rman的辅助设置数据文件的位置。辅助目的地必须是磁盘上一块足够容纳辅助设置数据文件的空间。即使用其他技术重命名了一些或全部的辅助设置数据文件,指定auxiliary destination参数也会为未指定名称的辅助设置数据文件提供一个默认的位置。如果你删除了一些辅助设置数据文件,TSPITR也不会失败。
要进行完全自动的TSPITR,用户应该可以以操作系统验证方式的sysdba身份登录。
步骤:
1.检查21-5中提到的TSPITR的限制、特例等
2.进行21-6中提到的TSPITR的准备工作
3.开启rman会话,连接目标库,恢复编录可选连接
注意:在启动rman客户端进行自动TSPITR时,不要连接辅助实例。如果rman在运行recover tablespace时连接到了辅助实例,rman就认为你在管理自己的辅助实例,就想21-19描述的那样,并尝试使用辅助来进行TSPITR
4.配置TSPITR需要的通道
5.运行recover tablespace命令,指定until子句和auxiliary destination参数
比如:
RECOVER TABLESPACE users, tools
UNTIL LOGSEQ 1300 THREAD 1
AUXILIARY DESTINATION '/disk1/auxdest';
根据结果执行以下操作:
1)如果未发生错误,执行第六步
表空间被rman脱机,从备份修复并覆盖到辅助实例的预期的时间点,然后重新导入到目标数据库。表空间保持脱机。所有辅助设置数据文件和其他辅助实例文件从辅助目的地清除
2)如果在TSPITR过程中出错,参考21-24 解决
6.如果TSPITR成功完成,需要在将其联机之前备份覆盖了的数据库(recovered tablespaces)
在表空间上执行了TSPITR后,就不能再使用以前的表空间备份了。如果使用未备份的恢复的数据库,就是在没有这些表空间备份的情况下运行的了。
7.表空间连接
 
五、用用户管理的辅助实例代替TSPITR默认的设置
可以定制以下方面的设置,其他大部分操作由TSPITR完成:
1)重命名或修改恢复设置数据文件的位置,以便组成恢复数据库的数据文件在TSPITR后不会放在原来的位置。如果原来包括表空间的那个磁盘已经不可用时这可能很有用。
在21-10"Renaming TSPITR Recovery Set Data Files with SET NEWNAME"中有描述
2)为一些或所有辅助设置数据文件指定辅助目的地以外的位置。如果单个的磁盘没有足够的空间存放所有辅助设置文件,可以使用该选项。
在"Naming TSPITR Auxiliary Set Data Files" on page 21-11.描述
3)用一个oracle  managed files格式命名文件
in "Considerations When Renaming OMF Auxiliary Set Files in TSPITR"
4)提前设置辅助设置文件的镜像备份,以避免从TSPITR中恢复数据文件
in "Using Image Copies for Faster RMAN TSPITR Performance"
5)为rman管理的辅助实例设置初始化参数
1.Renaming TSPITR Recovery Set Data Files with SET NEWNAME
你可能不想将恢复设置数据文件修复并覆盖到原来的位置。通过set newname命令可以指定新的位置。当你指定了恢复设置的一个新的位置时,rman不会将原数据文件删除。
要执行新的恢复设置文件名,创建一个run命令块,其中使用set newname命令。确保注册名称与当前的数据文件名称不冲突。
如:
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;
}
此例中,rman将每个指定的文件恢复到新的位置;如果在特定位置存在镜像备份,并且检查点在特定时间点之前,就使用镜像复制;将新回复的数据文件写入到控制文件中。
rman知道真正恢复时才检查set newname与当前数据文件名的冲突。如果rman监测到冲突,TSPITR就失败,rman报错。合法的数据文件不会被重写。
2.命名TSPITR辅助设置数据文件
与恢复设置数据文件不同,辅助设置数据文件不能对目标数据库的原文件进行重写。如果未指定与原位置不同的辅助设置文件地址,TSPITR会失败。当rman在原数据库上尝试重写相应文件,发现文件正在使用时将报错。
最简单的为辅助设置数据文件提供地址的方式是为TSPITR指定辅助目的地。然而,rman为了控制辅助设置数据文件,rman提供了以下之一:
set newname
configure auxname
db_file_name_convert
AUXILIARY DESTINATION argument to RECOVER TABLESPACE when using an RMAN-managed auxiliary instance
…………
3.使用镜像复制提高TSPITR性能
……
4.为辅助实例设置初始化参数
…………
四、用自己的辅助实例进行TSPITR

五、问题解决
1.文件名冲突问题
2.通过撤销段定位表空间
3.在TSPITR失败后重启手工辅助实例
如果自己管理辅助实例,在TSPITR过程中失败了,不要在未解决错误的情况下重新尝试TSPITR,应用以下方法:
1.定位并改正阻碍TSPITR成功的问题
2.启动辅助实例到nomount状态
3.再次运行TSPITR

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26451536/viewspace-764274/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26451536/viewspace-764274/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值