基于 SCN 增量恢复
备库停掉 MRP 进程
SQL> alter database recover managed standby database cancel;
1. 查询最小 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
===> 14846580672421 <===
2. 在主库上执行基于 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;
}
控制文件备份
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';
3. 把备份片拷到备库
$ scp st* 10.87.250.91:/Tbackup/backup/
4. 控制文件恢复
若之前用 rman 备份
备库:
sql > shutdown immediate
sql > startup nomount
rman > restore standby controlfile from '/Tbackup/backup/control65.bak';
rman > alter database mount;
5. 在备库主机上,注册备份片
RMAN> catalog backuppiece '/Tbackup/hdyy/st_crrl2dc5_1_1';
或者
RMAN> catalog start with '/Tbackup/backup';
RMAN> recover database noredo;
重建备库controlfile
查看数据文件头,验证恢复情况
select file#, to_char(checkpoint_change#) from v$datafile_header;
6. 备库重新启动应用日志
SQL>alter database recover managed standby database disconnect from session;
或者 SQL > alter database recover managed standby database using current logfile disconnect from session;
主库操作往备库传输归档日志
SQL>alter system set log_archive_dest_state_2 ='enable';
主备库查看归档日志情况
SQL>archive log list;
主库切下归档看是否用到备库
Alter system switch lofile;
