登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞哥的技术博客

世上无难事,只怕有心人!

 
 
 

日志

 
 
 
 

使用Oracle可传输表空间的特性复制数据(6)RMAN备份也创建 - 无名扫把 - CSDN博客  

2009-05-25 16:46:32|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 使用Oracle可传输表空间的特性复制数据(6)RMAN备份来创建

前面各章从理论到实践详细论述了关于可传输表空间,还有个集(Transportable Tablespace Sets)的创建,其中都提到了很重要一点,就是被传输的表空间在传输过程中必须置为read-only。而在实际操作过程中,对于某些生产数据库,将表空间置为read-only是件非常复杂的事情甚至完全不允许,有了RMAN的Transportable Tablespace,这一切都得以避免。RMAN通过备份创建可传输表空间集,它并不需要存取活动的数据文件,相应也就不需要将表空间置为read-only。因此,数据库可用性得到提升,尤其对于超大的表空间,因为被传输的表空间在此期间仍可进行读写操作,而且把表空间置为read-only模式可能会花费较长时间,

使用RMAN创建可传输表空间集,允许你在传输过程中指定目标恢复时间点或SCN,这样传输的数据可以更灵活,不必完全复制现有表空间,只要备份中存在,你就可以选择性的恢复数据。例如,你的备份策略为保留一周,你希望创建的可传输表空间中数据是截止本月底最后一天的数据,那么你在下个月第一周内任何时候都可以进行传输操作而不需要考虑这期间生产库是否会有写入操作。

使用主要是通过RMAN中的完成的。

提示:即使并未使用rman备份数据库,TRANSPORT TABLESPACE命令也可以用来创建transportable tablespace sets。不过,你必须有要传输的表空间集数据文件拷贝,然后使用rman的catalog命令将数据文件、归档日志等文件的拷贝载入rman资料库。只有rman拥有了所需备份才能够正常执行TRANSPORT TABLESPACE。

基本上,任何需要传输表空间的情况,你都可以使用rman的TRANSPORT TABLESPACE命令去创建,只要拥有所需的备份。

使用Oracle可传输表空间的特性复制数据(6)RMAN备份也创建 - 无名扫把 - CSDN博客 - yangzhongfei - 中飞博客

RMAN创建可传输表空间集与RMAN Tablespace Point-in-Time Recovery (TSPITR)极其相似,如果你有过TSPITR的操作经验,那么操作这个同样不在话下。

单枪不能成事,Oracle的霸业就是靠无数相互关联的对象以不同方式巧妙组合而成。对于创建TTS而言,RMAN仍然不是一个人在战斗,他不是一个人:

l 辅助集(auxiliary set),包括数据文件等其它传送所需但又并不是恢复集一部分的文件。例如SYSTEM表空间,Undo表空间之类。而辅助实例通常也不是一个人,它也有一些关联文件,例如控制文件、初始化参数文件、在线日志等,这些文件并不属于辅助集,虽然是起辅助目的,但它们的老主顾显然是辅助实例。

l 辅助文件暂存地(auxiliary destination)即辅助集所包含的对象在rman transport tablespace命令执行过程中物理存放的位置,执行完之后这些文件会被删除。

提示:auxiliary destination并非必须指定,如果不指定的话,必须确保协助实例相关的各文件在初始化参数中均已指定具体存储位置。

l 表空间目的地(tablespace destination),tablespace transport命令执行期间生成的传输集数据文件及其它输出文件的存储路径。

l 可传输集(transportable set),由待传输表空间数据文件以及expdp生成的导出文件(export dump file)组成的,用于填充到目标数据库表空间的集合,默认情况下,这些集合中的文件保存在表空间目的地指定路径下。

l t  log),可传输集的一部分。

上述提到的术语在后面会反复涉及,所以大家最好能记住其概念。

通过rman备份创建可传输表空间集避免通过源库当前活动的数据文件。同样恢复时可以恢复到备份中包含的任意时间而不会被限定仅能恢复到当前时间。其创建的工作就是由一个名为Transport Tablespaces的RMAN命令来实现,其格式如下:

使用Oracle可传输表空间的特性复制数据(6)RMAN备份也创建 - 无名扫把 - CSDN博客 - yangzhongfei - 中飞博客

Transport Tablespace命令的参数不少,不过幸运的是并不复杂,并且其参数与前面介绍的关联实体名称相同,由此仅通常参数名我们也大致能猜出所代表的意义,下面通常几个应用的示例加深一下印象:

transport tablespace tbs_1, tbs_2

   tablespace destination '/disk1/transportdest'

   auxiliary destination '/disk1/auxdest';

本例中,待传输表空间为tbs_1和tbs_2两个(如果待传输的表空间有多个,中间以逗号分隔),生成的可传输文件将会被存储至tablespace destination参数指定的位置,其它辅助文件生成到auxiliary destination参数指定的位置。

TRANSPORT TABLESPACE tbs_3 

   TABLESPACE DESTINATION '/disk1/transportdest' 

   AUXILIARY DESTINATION '/disk1/auxdest'

   UNTIL SCN 11379;

本例中,通过指定SCN的方式控制恢复的内容。

又如下例中通过指定时间控制恢复的内容:

TRANSPORT TABLESPACE tbs_2 

   TABLESPACE DESTINATION '/disk1/transportdest' 

   AUXILIARY DESTINATION '/disk1/auxdest'

   UNTIL RESTORE POINT 'before_upgrade';

指定恢复点方式控制恢复的内容:

TRANSPORT TABLESPACE tbs_2 

   TABLESPACE DESTINATION '/disk1/transportdest' 

   AUXILIARY DESTINATION '/disk1/auxdest'

   UNTIL TIME 'SYSDATE-1';

提示:需要注意指定的恢复时间点必须存在于备份的redo log或归档文件中。

TRANSPORT TABLESPACE tbs_2

   TABLESPACE DESTINATION '/disk1/transportdest'

   AUXILIARY DESTINATION '/disk1/auxdest'

   DATAPUMP DIRECTORY ttsdir

   DUMP FILE 'dmpfile.dmp'

   IMPORT SCRIPT 'impscript.sql'

   EXPORT LOG 'explog.log';

只要你想,就可以。默认情况下:

dmpfile.dmp及explog.log文件会自动存储到ttsdir指向的物理路径,其它文件均被生成到/disk1/transportdest目录内。

小学时候的语文课,打三年级开始,老师就会教我们给课文分段,三思不才,每次分段不管文章有多长都是三分法(俺还真是跟三有猿奋啊),开头一段,结尾一段,其它的都算中间段。

首先启动辅助实例到nomount模式,当然启动之前你得先创建好初始化参数文件。然后从备份中恢复控制文件到初始化参数文件中指定的控制文件所在路径,直接拷过来也靠谱(前提是源库和目标库的操作系统一致),加载辅助实例到mount模式。

一旦辅助实例中控制文件被正确加载,RMAN从备份中恢复辅助集和可传输集相关的数据文件,存储辅助文件到指定的辅助文件暂存地,可传输集文件存储到表空间目的地。然后RMAN在辅助实例执行switch操作加载数据文件。

然后TRANSPORT DATABASE命令按指定的时间点对辅助实例进行恢复(如未指定目标时间,则执行完全恢复),所有辅助文件暂存地中的可用归档日志都将被用于恢复操作,并会在应用后自动删除这些文件。

一旦恢复完成,RMAN将以resetlogs方式加载辅助数据库。

将辅助实例中待恢复的表空间置为read-only模式,并调用你也可以指定dp文件的保存路径,后面会有介绍)。

此时,RMAN自动生成导入脚本。脚本自动被保存在表空间目的地指定路径下,并命名为impscript.sql。

所有的操作都成功执行之后,RMAN将shutdown辅助实例并删除TRANSPORT TABLESPACE命令执行过程中创建的除数据文件、script.sql外其它临时文件。

提示:

l TRANSPORT TABLESPACE命令执行过程中,恢复集文件并不会自动转换到目标数据库的endian格式。如果需要转换,你必须在创建可传输集前使用rman的convert命令转换数据文件到目标数据库的endian格式。

是不是觉着步骤超级多,使用超复杂,甚至一度对其实用性有了怀疑,实际操作完全没有这么复制。特别是10g之后,只需要执行一个transport tablespace命令,并通过auxiliary destination参数指定临时辅助文件的存放位置,RMAN会自动创建和销毁auxiliary database,非常方便。

如果你决定使用RMAN备份创建可传输表空间地话,除了记住前面我们提到过的关于可传输表空间特性应用的限制之外呢,你又得将自己的脑袋置为read-write状态了,这个明显是黑正常的嘛,应用的技术越多,可能碰到的问题也会越多,相应需要注意的地方也越多,花费的精力也越大,哎,无数干技术活的(非特指IT)脑袋就是这么秃地呀~~~~~

提示:即使RMAN不是你备份策略的一部分,你也仍可能使用TRANSPORT TABLESPACE命令,只要所需的数据文件和归档日志均可被rman有效访问。

l transportable set(可传输集)和auxiliary set(辅助集)数据文件都不能包含下列的类型:

如果你在nocatalog模式下执行TRANSPORT TABLESPACE命令,还会有下列的限制:

包括回滚段的表空间做为目标SCN在TRASNPORT TABLESPACE操作中必须是auxiliary set的一部分。不像在catalog模式,rman资料库在控制文件中只包含那些包括回滚段的表空间。

l 如果数据库重用了控制文件中TRANSPORT TABLESPACE命令所需的备份信息,则命令会失败,因为RMAN不能定位需要的备份文件位置。你得通过catalog命令将这些备份文件加入rman资料库中。如果数据库已经重写了控制文件,那么很不幸你可能就会丢失这部分备份了。

使用Oracle可传输表空间的特性复制数据(6)RMAN备份也创建 - 无名扫把 - CSDN博客 - yangzhongfei - 中飞博客



引文来源  使用Oracle可传输表空间的特性复制数据(6)RMAN备份也创建 - 无名扫把 - CSDN博客
  评论这张
 
阅读(227)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018