Oracle DataGuard基于SCN的增量恢复
生产环境下搭建DG,当数据库很大的情况下,比如几十T的数据量,往往进行一次全备需要很久,然后需要再进行几次增量,缩小主备的差距,最后开启主库的日志传输。
1:备库停掉MRP进程
SQL> alter database recover managed standby database cancel;
2.查询最小SCN
####生产库####
SQL> select min(f.fhscn) from x$kcvfh f,v$datafile d where f.hxfil=d.file# and d.enabled!='READ ONLY';
MIN(F.FHSCN)
----------------
14847289822558
####备库####
SQL> select min(f.fhscn) from x$kcvfh f,v$datafile d where f.hxfil=d.file# and d.enabled!='READ ONLY';
MIN(F.FHSCN)
----------------
14846580672421
3.在主库上执行基于备库最小SCN的rman备份
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup incremental from scn 14846580672421 database format '/oradata/st_%U' tag '14846580672421';
######备份集压缩
#######backup as compressed backupset incremental from scn 14846580672421 database format '/rman/bak_%U%t';
release channel c1;
release channel c2;
}
4.控制文件备份
SQL>alter database create standby controlfile as '/tmp/rman/standby.ctl';
或使用backup current controlfile备份
RMAN> backup current controlfile for standby format '/backup/control%s.bak';
5.把备份片拷到备库
$ scp st* 10.87.250.91:/backup/
6.备库控制文件恢复
若之前用rman备份
sql > shutdown immediate
sql > startup nomount
rman > restore standby controlfile from '/backup/control65.bak';
rman > alter database mount;
7.在备库主机上,注册备份片
RMAN> catalog backuppiece '/backup/st_crrl2dc5_1_1';
或者
RMAN> catalog start with '/backup';
8.备库应用增量备份片
RMAN> recover database noredo;
9.查看数据文件头,验证恢复情况
select file#, to_char(checkpoint_change#) from v$datafile_header;
10.备库重新启动应用日志
SQL>alter database recover managed standby database disconnect from session;
或者
SQL > alter database recover managed standby database using current logfile disconnect from session;
11.主库开启传输归档日志
SQL>alter system set log_archive_dest_state_2 ='enable';
12.主备库查看归档日志情况
SQL>archive log list;
主库切下归档看是否用到备库
Alter system switch lofile;