RMAN使用备份按时间点传输表空间

使用until time或者SCN来执行transport tablespace
如果在执行传输表空间操作时,对transport tablespace命令指定了目标时间,那么RMAN将在辅助实例中使用备份将表空间还原到目标时间之前并执行按时间点恢复将辅助数据库恢复到指定的目标时间点。(对于按时间点恢复所需要的备份和重做日志必须可以使用)
 恢复的目标时间可以使用SCN(包括当前incarnation或ancestors incarnation),日志序列号,还原点或时间表达式。

使用SCN来执行transport tablespace
 1.确认源数据库与目标数据库所在平台是不是传输表空间所支持的操作系统平台。确认源数据库操作系统平台:
SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d
  2  where tp.platform_name=d.platform_name ;

PLATFORM_NAME                                                                                        ENDIAN_FORMAT
----------------------------------------------------------------------------------------------------- --------------
Linux IA (32-bit)                                                                                    Little

确认目数据库操作系统平台:
SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d
  2  where tp.platform_name=d.platform_name ;

PLATFORM_NAME                                                                                        ENDIAN_FORMAT
----------------------------------------------------------------------------------------------------- --------------
Linux IA (32-bit)                                                                                    Little


这里操作系统平台都是Linux

2.确认要被传输的表空间是否是自包含表空间(TSPITR,TEST):
SQL> exec sys.dbms_tts.transport_set_check('TSPITR',true);

PL/SQL procedure successfully completed.


SQL> exec sys.dbms_tts.transport_set_check('TEST',true);

PL/SQL procedure successfully completed.

SQL> select * from sys.transport_set_violations;

no rows selected

如果没有行选择,表示该表空间只包含表数据,可以传输。

修改表tspitr与test中的记录,在修改之前记录当前的SCN,在执行传输表空间时指定这个SCN
SQL> conn tspitr/tspitr
Connected.
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1167731

SQL> select to_char(scn_to_timestamp(1167731),'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SCN_TO_TIME
-------------------
2015-03-27 16:48:29


SQL> insert into tspitr select * from tspitr;

50641 rows created.

SQL> commit;

Commit complete.

SQL> select count(*) from tspitr

COUNT(*)
----------
    101282


SQL> conn test/test
Connected.
SQL> select count(*) from test;

COUNT(*)
----------
    50680
SQL> delete from test;

50680 rows deleted.

SQL> commit;

Commit complete.

SQL> select count(*) from test;

COUNT(*)
----------
        0


在SCN=1167731之后,表tspitr中的记录数为101282,表test的记录数为0,SCN=1167731之前,表tspitr中的记录数为50641,表test的记录数为50680

3.对源数据库执行备份,在执行备份时一定要加上include current controlfile否则执行transport tablespace命令时会出现以下错误信息:
Automatic instance removed
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of tranport tablespace command at 03/26/2015 20:24:22
RMAN-03015: error occurred in stored script Memory Script
RMAN-06026: some targets not found - aborting restore
RMAN-06024: no backup or copy of the control file found to restore


[Oracle@oracle11g admin]$ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
[oracle@oracle11g admin]$ rman target sys/zzh_2046@test  catalog rman/rman@jy

Recovery Manager: Release 10.2.0.5.0 - Production on Thu Mar 26 20:01:33 2015

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: TEST (DBID=2168949517)
connected to recovery catalog database

RMAN> backup as backupset database include current controlfile plus archivelog;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6f0e541c5be09521da9fe30f738be130.html