• 列出在执行表空间时间点恢复(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 的正确目标时间。
注:有了闪回工具和仍然可用作还原数据的数据,使用闪回工具来还原不满意的更改比使用TSPITR 进行还原更为简单。
• 使用 TS_PITR_CHECK视图来识别跨越恢复集边界的关系。
• 如果要恢复表空间中的对象与其它表空间中的对象有关系,则可以:
– 将包含相关对象的表空间添加到相应的恢复集中
– 在执行TSPITR 期间挂起该关系
– 删除该关系
• 使用DBMS_TTS.TRANSPORT_SET_CHECK过程来确定恢复集中的表空间是否是自包含的。
如果不能确定是否已考虑了与要执行TSPITR 操作的表空间中的对象有关系的所有对象,可以使用TS_PITR_CHECK视图来识别任何其它对象。查询这个视图时,会显示阻止继续执行TSPITR 的任何对象的信息。表空间时间点恢复不能继续进行的原因显示在TS_PITR_CHECK视图的“REASON(原因)”列中。
例如,如果打算对USERS和EXAMPLE表空间执行TSPITR,请通过执行以下查询来确定是否还存在未考虑的、与其它表空间中的对象的关系:
SELECT * FROM SYS.TS_PITR_CHECK WHERE (TS1_NAME IN ('USERS','EXAMPLE') AND TS2_NAME NOT IN ('USERS','EXAMPLE'))
OR (TS1_NAME NOT IN ('USERS','EXAMPLE') AND TS2_NAME IN ('USERS','EXAMPLE'));
执行TSPITR 之前,必须确定恢复集。如果要恢复的表空间中的对象与其它表空间中的对象存在关联,则需要对这些对象进行预配。
在Oracle Database 11g发行版2 之前的版本中,使用SYS.TS_PITR_CHECK视图来确定对象之间跨越恢复集边界的关系。
现在你应使用DBMS_TTS.TRANSPORT_SET_CHECK过程并查询TRANSPORT_SET_VIOLATIONS视图。
DBMS_TTS.TRANSPORT_SET_CHECK ('USERS', 'EXAMPLE');
SELECT * FROM TRANSPORT_SET_VIOLATIONS;
注:RMAN TSPITR 自动为恢复集表空间执行DBMS_TTS.TRANSPORT_SET_CHECK过程,并验证针对TRANSPORT_SET_VIOLATIONS的查询是否未返回行。如果该查询返回行,RMAN 会停止TSPITR 处理,必须先解决所有违反表空间封闭性要求的问题,才能继续执行TSPITR。也可以作为一项预防性措施来按如上所述执行该过程并查询视图。
• 目标恢复时间之后在表空间中创建的对象会丢失。
• 查询TS_PITR_OBJECTS_TO_BE_DROPPED,确定哪些对象在执行TSPITR 之后会丢失。
• 在执行TSPITR 前后分别使用导出和导入来保留并重新创建丢失的对象。
查询TS_PITR_OBJECTS_TO_BE_DROPPED视图,确定是否存在执行表空间时间点恢复后会丢失的对象。
例如,要对USERS和EXAMPLE表空间执行TSPITR,目标时间为2006 年4 月3 日上午8:30:00。
请通过发出以下查询,确定是否存在执行TSPITR 后会丢失的任何对象:
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','EXAMPLE')
AND CREATION_TIME >
TO_DATE('2006-APR-03:08:30:00','YY-MON-DD:HH24:MI:SS')
ORDER BY TABLESPACE_NAME, CREATION_TIME;
• 完全自动执行的TSPITR
– 指定辅助目标。
– RMAN 会管理TSPITR 的所有方面。
– 这是推荐的方法。
• 使用自动辅助实例的定制TSPITR
– 这是在完全自动执行TSPITR 的基础上进行的。
– 定制文件位置。
– 指定初始化参数。
– 指定通道配置。
• 使用您自己辅助实例的TSPITR
– 配置并管理辅助实例。
执行TSPITR 时有下列选项:
• 完全自动执行的TSPITR:指定辅助目标,RMAN 会管理TSPITR 操作的所有方面。这是最简单的执行TSPITR 的方法,建议采用这种方法,除非明确指出需要在执行
TSPITR 之后控制恢复集的位置,或者在执行TSPITR 期间控制辅助集文件的位置,或者需要控制辅助实例的通道配置或其它某个方面。
• 使用自动辅助实例的定制TSPITR:TSPITR 基于完全自动执行的TSPITR 的行为,可能仍使用辅助目标。可以自定义其行为的一个或多个方面,如辅助集文件或恢复集
文件的位置。可以为RMAN 创建并管理的辅助实例指定初始化参数或通道配置。
• 使用你自己辅助实例的TSPITR:设置、启动、停止和清除在TSPITR 中使用的辅助实例。另外,可以借助使用自动辅助实例的定制TSPITR 中的一些方法来管理TSPITR 过程。
1. 配置在目标实例上执行TSPITR 所需的通道。
2. 使用 AUXILIARY DESTINATION选项指定辅助目标。
RMAN> CONNECT TARGET
RMAN> RECOVER TABLESPACE users, example
> UNTIL TIME '2007-06-29:08:00:00'
> AUXILIARY DESTINATION
> '/u01/app/oracle/oradata/aux';
3. 备份恢复的表空间并使它们联机。
执行完全自动执行的TSPITR 时,还必须:
• 配置在目标实例上执行TSPITR 所需的任何通道
• 指定RMAN 用于数据文件辅助集和其它辅助实例文件的目标
在TSPITR 完成之后,备份恢复的表空间并使它们联机。执行TSPITR 之后,不能使用TSPITR 之前创建的参与执行TSPITR 的表空间的备份。
注:此时间格式假定NLS_DATE_FORMAT设置为'yyyy-mm-dd:hh24:mi:ss'且NLS_LANG设置为AMERICAN_AMERICA.WE8MSWIN1252。
CONFIGURE AUXNAME由恢复集数据文件的 SET NEWNAME替换:
RUN
{
SET NEWNAME FOR DATAFILE
'$ORACLE_BASE/oradata/orcl/users01.dbf'
TO '/backup/users01.dbf';
RECOVER TABLESPACE users UNTIL SEQUENCE 1300 THREAD 1;
}
可以通过指示RMAN 使用恢复集和辅助集数据文件的现有映像副本来提升TSPITR 的性能。此项技术使RMAN 可以跳过从备份中恢复数据文件这一步骤。
在Oracle Database 11g发行版2 之前的版本中,使用下列技术来指定数据文件现有的映像副本:
• 对恢复集数据文件或辅助集数据文件的映像副本,使用CONFIGURE AUXNAME命令
• 对辅助集数据文件的映像副本,使用SET NEWNAME命令
现在,你仅应该对辅助集数据文件的映像副本使用CONFIGURE AUXNAME命令。应该对恢复集数据文件或辅助集数据文件的映像副本使用SET NEWNAME命令。
- 使用Oracle Enterprise Manager 执行TSPITR
还可以使用Oracle Enterprise Manager 执行TSPITR。导航至“Availability > Perform Recovery(可用性> 执行恢复)”。在“User Directed Recovery(用户执行的恢复)”部分,从“Recovery Scope(恢复范围)”下拉菜单中选择“Tablespaces(表空间)”。
可以对表空间执行三种操作:
• 恢复到当前时间或过去某一时间点:如果需要,还原表空间的数据文件。此操作会通过重做来恢复到指定的时间:当前时间或过去某一时间。此操作是下列两个操作
的组合。
• 还原表空间:仅还原表空间的数据文件。不执行恢复操作。
• 从以前还原的表空间恢复:仅对表空间数据文件执行恢复(重做应用程序)。
RMAN 执行TSPITR 的步骤:
1. 创建辅助实例,启动该实例,然后连接到该实例
2. 使要恢复的表空间脱机
3. 将目标时间之前某个时间点的备份控制文件还原到辅助实例
4. 将恢复集和辅助集的数据文件还原到辅助实例
5. 将已还原数据文件恢复到指定时间
6. 使用RESETLOGS选项打开辅助数据库
7. 将已恢复表空间中对象的字典元数据导出到目标数据库
8. 关闭辅助实例
9. 将辅助实例中的字典元数据导入目标实例
10.删除所有辅助集文件
执行RMAN TSPITR
• 重命名或重定位恢复集数据文件。
• 为部分或全部辅助集数据文件指定不同于辅助目标的位置。
• 在执行TSPITR 之前创建数据文件的映像副本备份。
• 对辅助实例使用不同的通道配置。
• 为RMAN 管理的辅助实例指定不同的初始化参数。
如果要自定义RMAN TSPITR,则可以使用RMAN 管理的辅助实例并进行下列更改:
• 使用SET NEWNAME重命名恢复集数据文件,以便不在原始位置还原和恢复它们。
• 通过使用SET NEWNAME为各个文件指定新名称,并使用DB_FILE_NAME_CONVERT提供用于将目标数据库中的数据文件名转换为辅助数据库的数据文件名的规则,控制辅助集数据文件的位置。
• 为了提高RMAN TSPITR 的性能,使用磁盘上的恢复集数据文件和辅助集数据文件的现有映像副本,而不是从备份中还原它们。
• 不推荐,但支持
• 请执行以下步骤:
1. 创建辅助实例的Oracle 口令文件。
2. 创建辅助实例的初始化参数文件。
3. 验证到辅助实例的Oracle Net 连接。
4. 在NOMOUNT模式下启动辅助实例。
5. 将RMAN 客户机连接到目标实例和辅助实例。
6. 执行RECOVER TABLESPACE命令。
Oracle 建议通过RMAN 来管理在执行RMAN TSPITR 期间使用的辅助实例的创建和删除。但是,我们也支持创建并使用自己的辅助实例。
要创建适合用作辅助实例的Oracle 实例,请执行以下步骤:
1.使用orapwd实用程序创建辅助实例的Oracle 口令文件。
2.创建辅助实例的文本初始化参数文件。
3.使用有效的网络服务名验证到辅助实例的Oracle Net 连接。
要执行TSPITR,请完成下列步骤:
4.在NOMOUNT模式下启动辅助实例。
5.将RMAN 客户机连接到目标实例和辅助实例。
6.执行RECOVER TABLESPACE命令。
• 文件名冲突:确保使用SET NEWNAME、CONFIGURE AUXNAME和DB_FILE_NAME_CONVERT时没有文件名冲突。
• RMAN 不能识别包含还原段的表空间:请使用UNDO TABLESPACE子句。
• 发生TSPITR 故障后重新启动手动辅助实例:在NOMOUNT模式下关闭并重新启动。
文件名冲突:如果因使用SET NEWNAME、CONFIGURE AUXNAME和DB_FILE_NAME_CONVERT导致辅助集或恢复集中的多个文件同名,则在执行TSPITR
期间会收到错误。要纠正问题,需要为这些参数指定不同的值以避免出现重复名称。
RMAN 不能识别包含还原段的表空间:在执行TSPITR 期间,RMAN 需要有关哪些表空间包含TSPITR 目标时间还原段的信息。这种信息通常位于恢复目录中(如果使用了恢复目录)。如果没有恢复目录,或者如果恢复目录中没有这种信息,则RMAN 会继续执行操作,而且假设包含目标时间还原段的表空间集与包含当前时间还原段的表空间集相同。如果此假定不正确,TSPITR 操作就会失败,同时报告错误。为防止此类错误发生,请在UNDO TABLESPACE子句中提供包含目标时间还原段的表空间列表。
发生TSPITR 故障后重新启动手动辅助实例:如果管理自己的辅助实例并且TSPITR 出现故障,则在重试TSPITR 之前,必须关闭辅助实例、更正问题并将辅助实例重新置于NOMOUNT模式。
- [Oracle]理解undo表空间
一.回退段介绍 在Oracle数据库中,当某个事物对数据进行修改时,Oracle首先将数据的原始值保存到一个回退段中.一个事物只能将它的回退信息保存到一个回退段中,而多个并行事物可以使用同一个回退段. ...
- Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间
Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一: 删除user drop ...
- 记一次ORACLE的UNDO表空间爆满分析过程
这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理.梳理了同事分析的思路.具体过程如下所示: 早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作 ...
- 如何让Oracle释放undo表空间
如何让Oracle释放undo表空间 最佳答案 在日常的数据库维护和数据库编程中经常会遇到犹豫对大数据量做DML操作后是得ORACLE的undo表空间扩展到十几个G或者几十个G 但是这些表空间 ...
- Oracle 10g创建表空间的完整步骤详解
本文我们主要介绍了Oracle 10g创建表空间的完整步骤,包括表空间的创建与删除.为应用创建用户以及权限的授予等操作,希望能够对您有所帮助. AD:WOT2014:用户标签系统与用户数据化运营培训专 ...
- oracle用户与表空间操作
oracle系统用户sys,system , sysman, scott 使用system用户登录[username/password][@server][as sysdba|sysoper]eg: ...
- [转帖]Oracle 查询各表空间使用情况--完善篇
Oracle 查询各表空间使用情况--完善篇 链接:http://blog.itpub.net/28602568/viewspace-1770577/ 标题: Oracle 查询各表空间使用情况--完 ...
- Oracle 10g bigfile表空间、smallfile 表空间
smallfile tablespace设置不同大小的db_block_size时数据文件允许的最大大小 db_block_size=2KB,2KB*4M=8192M 8Gdb_block_ ...
- 删除Oracle用户及表空间
--转载自 https://blog.csdn.net/sunny05296/article/details/81126548--以sysdba用户登录,查找需要删除的用户conn / as sysd ...
随机推荐
- Innodb的启动
Innodb的启动与关闭 1. 启动函数的流程 innobase_start_or_create_for_mysql 启动的主要步骤包括: 1. 初始化innodb的参数 2. 初始化系统结构 主要结 ...
- 使用Zxing实现扫二维码描
1.集成Zxing.bar 2.复制代码到项目中 3.修改 MipacActivityCapture.java 的扫描结果方法 handleDecode() /** * 处理扫描结果,实现活动页面跳 ...
- 利用icepdf将pdf文件转为图片
所需jar 包为icepdf-core.jar.icepdf-extra.jar.icepdf-pro-intl.jar.icepdf-pro.jar和icepdf-viewer.jar. 示例代码如 ...
- Ruby基础类型,动态特性,代码块
#Ruby内置基础数据类型 NilClass,TureClass,FalseClass,Time,Date,String,Range,Struct,Array,Hash #Numerice 1.分为I ...
- (二)学习MVC之实现用户注册功能
学习地址:http://www.cnblogs.com/mzwhj/archive/2012/10/22/2720089.html 本文和学习地址不一样的地方是我自己添加了一些简单的注释和理解. 1. ...
- SharePoint 2010 master page 控件介绍(1)
转:http://blog.csdn.net/lgm97/article/details/6409204 以下所有的内容都是根据Randy Drisgill (MVP SharePoint Serve ...
- 静态Web开发 DOM
四章 Dom 1节dom中的顶级对象 dom(文档对象模型)js最终是要操作html页面,让html变成DHtml,而操作Html页面就要用到DOMDOM可以吧Html页面模拟成一个对象,如果js只是 ...
- CF GYM 100703A Tea-drinking
题意:龙要制作n个茶,每个茶的配方是一个字符串,两个字符串之间有一个差值,这个差值为两个字符串每个对应字母之间差的绝对值的最大值,求制作所有茶时获得的所有差值中的最大值. 解法:克鲁斯卡尔.将茶的配方 ...
- HTTP 报文总结、外送两本电子书
写在前面的话:喜欢这个比喻:如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹. HTTP是一个应用层协议,研究它的内容的确很枯燥,没啥意思,都是规定好的,我们只需要知道是什么就好了 ...
- DIY 博客全文界面的推荐、反对、加关注、返回顶部、快速评论等小功能的集成
博客园已经很不错了,但作为比较“挑剔”的用户,在使用的过程中,还是有一些地方不爽的. 我不是一个专业的前台程序员,也只能凭借自己蹩脚的JS和CSS知识完成对页面的小改造(专业的大虾莫要鄙视呀..). ...