本文是测试在不停dataguard情况下,从dataguard用backup as copy 方法导出部分表空间, 并基于这些表空间,恢复出一个源库的子集。, 然后做不完全恢复, 恢复到一个指定的时间点。
( 重点,在dataguard不停机情况下, 不影像dataguard的正常使用)
(另外, backup as copy tablesapce, 不会在control file中留下记录,因此也可以不用考虑是否会对同城DG上进行的日常备份是否有影响 )
测试环境说明:
(一) 准备工作
要导入的部分表空间,以及基于这些部分表空间建库的目录是
-/use01/app/fantest1
检查dataguard的情况
这个dataguard目前是正常同步的
15:28:23sys@-physical standby> select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME
------------------------------ ------------------------------ ------------------------------
MOUNTED PHYSICAL STANDBY ld0cmadm
15:28:27 sys@d0cmadm-physical standby> select status,process,sequence#,blocks,block# from v$managed_standby;
STATUS PROCESS SEQUENCE# BLOCKS BLOCK#
-------------------- --------- ---------- ---------- ----------
CONNECTED ARCH 0 0 0
CLOSING ARCH 4936 1 1
CONNECTED ARCH 0 0 0
CLOSING ARCH 4935 2 1
CLOSING ARCH 4932 6 1
IDLE RFS 0 0 0
IDLE RFS 4937 1 616
IDLE RFS 0 0 0
APPLYING_LOG MRP0 4937 102400 615
我们要导出部分表空间,以及基于这些表空间建库的目录是/use01/app/fantest1
cnsz081384: > mkdir fantest1
cnsz081384: > chmod -R 777 fantest1
cnsz081384: > cd fantest1
cnsz081384: > pwd
/use01/app/fantest1
我们计划导出的表空间是TSPITRDATA,USERS
(本来users是可以不用的,但因为我们的很多用户默认是users表空间,所以一起导出)
检查要迁移的表空间自包含性
17:33:10 > begin
sys.dbms_tts.transport_set_check(ts_list=>'TSPITRDATA,USERS',incl_constraints=>TRUE);
3 end;
4 /
PL/SQL procedure successfully completed
17:33:19 > select * from sys.transport_set_violations;
VIOLATIONS
--------------------------------------------------------------------------------
另外,按照oracle要求,还必须要导出system, sysaxu,undo表空间,否则无法建库
测试模拟:
为了模拟dataguard是不断是有事务进行的情况,我们在对应的主库不间断做dml,对所有的表空间上做dml,包括导出和不导出的。以及SYSTEM表空间。
(二) 开始导出表空间
现在开始备份表空间,备份的语句如下
backup as copy tablespace SYSTEM format '/use01/app/fantest1/%U.dbf' ;
backup as copy tablespace SYSAUX format '/use01/app/fantest1/%U.dbf' ;
backup as copy tablespace UNDOTBS1 format '/use01/app/fantest1/undo%U.dbf' ;
backup as copy tablespace TSPITRDATA format '/use01/app/fantest1/%N%f.dbf' ;
backup as copy tablespace USERS format '/use01/app/fantest1/%N%f.dbf' ;
先备份system表空间,由于在备份system表空间时候,要自动备份控制文件和spifle,所以这里的格式只能使用%U,不能用对普通表空间的%N%f方式:
backup as copy tablespace SYSTEM format '/use01/app/fantest1/%U.dbf' ;
cnsz081384: > rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Fri Aug 11 16:18:13 2017
RMAN> backup as copy tablespace SYSTEM format '/use01/app/fantest1/%U.dbf' ;
RMAN>