ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle实验-实战RMAN备份传输表空间

oracle实验-实战RMAN备份传输表空间

原创 Linux操作系统 作者:279531451 时间:2009-09-10 23:21:12 0 删除 编辑
实战RMAN备份传输表空间

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

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

使用rman备份创建Transportable Tablespace Sets主要是通过RMAN中的TRANSPORT TABLESPACE命令完成的。
提示:即使并未使用rman备份数据库,TRANSPORT TABLESPACE命令也可以用来创建transportable tablespace sets。不过,你必须有要传输的表空间集数据文件拷贝,然后使用rman的catalog命令将数据文件、归档日志等文件的拷贝载入rman资料库。只有rman拥有了所需备份才能够正常执行TRANSPORT TABLESPACE。
一、适用场合
基本上,任何需要传输表空间的情况,你都可以使用rman的TRANSPORT TABLESPACE命令去创建,只要拥有所需的备份。


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

单枪不能成事,Oracle的霸业就是靠无数相互关联的对象以不同方式巧妙组合而成。对于创建TTS而言,RMAN仍然不是一个人在战斗,他不是一个人:
  RMAN客户端(Recovery Manager client)
  源库(source database),即要传输的表空间所在库。
  源库归档及备份(Archived redo logs and backups)
  辅助实例(auxiliary instance),这个大家应该都比较熟了,如果你还不了解可以参见"Duplicate创建副本数据库"系列第2章。
  辅助集(auxiliary set),包括数据文件等其它传送所需但又并不是恢复集一部分的文件。例如SYSTEM表空间,Undo表空间之类。而辅助实例通常也不是一个人,它也有一些关联文件,例如控制文件、初始化参数文件、在线日志等,这些文件并不属于辅助集,虽然是起辅助目的,但它们的老主顾显然是辅助实例。

    辅助文件暂存地(auxiliary destination)即辅助集所包含的对象在rman transport tablespace命令执行过程中物理存放的位置,执行完之后这些文件会被删除。
提示:auxiliary destination并非必须指定,如果不指定的话,必须确保协助实例相关的各文件在初始化参数中均已指定具体存储位置。
    表空间目的地(tablespace destination),tablespace transport命令执行期间生成的传输集数据文件及其它输出文件的存储路径。
    可传输集(transportable set),由待传输表空间数据文件以及expdp生成的导出文件(export dump file)组成的,用于填充到目标数据库表空间的集合,默认情况下,这些集合中的文件保存在表空间目的地指定路径下。
    RMAN自动生成的导入脚本(import script)以及expdp生成的导出日志(export log),可传输集的一部分。
三、命令格式:关于Transport Tablespaces命令
过rman备份创建可传输表空间集避免通过源库当前活动的数据文件。同样恢复时可以恢复到备份中包含的任意时间而不会被限定仅能恢复到当前时间。其创建的工作就是由一个名为Transport Tablespaces的RMAN命令来实现,其格式如下:
Transport Tablespace命令的参数不少,不过幸运的是并不复杂,并且其参数与前面介绍的关联实体名称相同,由此仅通常参数名我们也大致能猜出所代表的意义,下面通常几个应用的示例加深一下印象:

1、最简单的可传输表空间集的创建:

transport tablespace tbs_1, tbs_2

   tablespace destination '/disk1/transportdest'

   auxiliary destination '/disk1/auxdest';



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



2、创建时指定恢复时间点

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或归档文件中。



3、创建时指定文件的生成路径:

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';

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

DATAPUMP DIRECTORY参数指定已定义的DIRECTORY:ttsdir

DUMP FILE参数指定元数据文件,命名为:dmpfile.dmp

IMPORT SCRIPT参数指定导入脚本,命名为:impscript.sql

EXPORT LOG参数指定导出日志文件,命名为:explog.log

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



实战RMAN备份传输表空间

一、检查平台是否支持

查询源数据库平台信息
SQL> col platform_name for a40
SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
    FROM V$TRANSPORTABLE_PLATFORM. tp, V$DATABASE d
    WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
查询Oracle10g支持的平台转换
SQL> select * from v$transportable_platform;

二、检查待传输表空间是否自包含
execute dbms_tts.transport_set_check('TEST', true);
若报过程dbms_tts.transport_set_check不存在,则用sys的数据库用户执行脚本"$ORACLE_HOME/rdbms/admin/dbmsplts.sql"建立之。
SELECT * FROM TRANSPORT_SET_VIOLATIONS;
若查询结果为空,说明表空间是自包含的;否者查询结果说明哪些地方违反了自包含。
三、检查备份
先做好备份

***归档Alter system archive log current;
四、生成可传输集
RMAN>transport tablespace nnd
     TABLESPACE DESTINATION = 'k:\exp'
     auxiliary destination = 'k:\aux1';

删除自动实例
自动实例已删除
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: tranport tablespace 命令 (在 11/19/2007 15:23:45 上) 失败
ORA-27056: 无法删除文件
OSD-04024: 无法删除文件。
O/S-Error: (OS 32) 另一个程序正在使用此文件,进程无法访问

O/S-Error: (OS 32)通常跟windows平台有关,尝试换用linux平台执行...........一切正常!

报错是在删除辅助实例文件时,此时传输集已经生成了,不会影响我们后续操作。那我们就手工删除这些文件好了,基本上就是auxiliary destination参数指定路径下的文件,干脆直接连这个目录也删掉。


五、复制文件到目标平台
六、执行导入脚本
注意,导入表空间在源平台所属的用户必须存在,另外一旦复制到目标库后文件路径如果发生变化,一定要修改impscript.sql文件中相应的路径。
[oracle@jsslinux ~]$ sqlplus "/ as sysdba"
SQL> @/opt/oratmp/oradata/impscript.sql

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

请登录后发表评论 登录
全部评论

注册时间:2009-09-01

  • 博文量
    100
  • 访问量
    153888