–主库上,查看已经应用在备库的最大LOG sequence# 号
select min(sequence#),max(sequence#) from v$archived_log where applied=‘YES’ and name =‘standby21’
MIN(SEQUENCE#) MAX(SEQUENCE#)
54397 67138
–主库上,查看顺序号对应的SCN是多少
SELECT SEQUENCE#,to_char(FIRST_CHANGE#)fc,to_char(NEXT_CHANGE#)nc FROM v$archived_log WHERE SEQUENCE# = 67138
AND NAME =‘standby21’ ORDER BY 1;
SEQUENCE# FC NC
67138 6071454081639 6071456004404
–在主库上,增量备份文件和控制文件,并把文件SCP到备库
backup device type disk incremental from scn 6071454081639 database format ‘/oradata/rman/test_db_incre.bbk’;
ALTER DATABASE CREATE standby controlfileAS ‘/oradata/rman/test_standby.ctl’;
scp test_* 文件到备库
2.在备库执行脚本,从snapshot转到physical standby:
shutdown abort
startup mount;
alter database convert to physical standby;
shutdown immediate
startup
alter database recover managed standby database using current logfile disconnect from session;
–备库开始恢复控制文件,启动到Mount状态,根据增量备份文件开始恢复数据库
shutdown immediate
startup nomount
restore controlfile from’/data/oracle/backup/restore/standby.ctl’;
alter database mount;
CATALOG BACKUPPIECE ‘/data/test_db_f4tvl4qk_1_1’,’/data/test_db_f5tvl828_1_1’,’/data/test_db_f6tvlbj9_1_1’;
–由于主备库的日志文件不一致,需要切换备库的数据文件到本地(我这里切换了121个文件)
catalog datafilecopy ‘/data/xxxxxx/xxxxx_.dbf’;
…
–查看是否切换过来了,并开始真正切换
list copy of database;
switch database to copy;
–使用增量备份开始恢复数据文件
RECOVER DATABASE NOREDO;
ALTER DATABASE recover managed standby DATABASE disconnect FROM SESSION;
–检查是否有gap
select * from v$archive_gap;
select max(sequence#) from v$archived_log;
–再查看下是否有未应用的NO的,没有NO的,正常如下:
select sequence# ,applied from v$archived_log where applied=‘NO’ and name=‘standby21’ order by sequence# ;
–切换备库到snapshot状态,等待凌晨跑脚本
alter database recover managed standby database cancel;
shutdown immediate
startup nomount;
alter database mount;
alter database convert to snapshot standby;
alter database open;