模拟主库归档丢失
主库:10.107.173.11
备库:10.107.173.12
备库断网:
systemctl stop network
主库做操作
conn scott/tiger
create table t1 as select * from emp;
conn / as sysdba
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
SQL> !mv /u01/app/archivelog1_60_1072546130.dbf /u01/app/archivelog1_60_1072546130.dbf_bak
SQL> !mv /u01/app/archivelog1_61_1072546130.dbf /u01/app/archivelog1_61_1072546130.dbf_bak
SQL> !mv /u01/app/archivelog1_62_1072546130.dbf /u01/app/archivelog1_62_1072546130.dbf_bak
备库恢复网络
systemctl start network
select * from v$archive_gap;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
1 60 62
定位到SCN
备库 :
select sequence#,applied,first_time,next_time from v$archived_log order by sequence#;
SEQUENCE# APPLIED FIRST_TIM NEXT_TIME
---------- --------- --------- ---------
54 YES 17-MAY-21 17-MAY-21
54 NO 17-MAY-21 17-MAY-21
55 YES 17-MAY-21 17-MAY-21
56 YES 17-MAY-21 17-MAY-21
57 YES 17-MAY-21 17-MAY-21
58 YES 17-MAY-21 17-MAY-21
59 YES 17-MAY-21 17-MAY-21 --60-62没有了
63 NO 17-MAY-21 17-MAY-21
select process,status,thread#,sequence#,block#,blocks from V$managed_standby;
PROCESS STATUS THREAD# SEQUENCE# BLOCK# BLOCKS
--------- ------------ ---------- ---------- ---------- ----------
ARCH CLOSING 1 63 2048 595
ARCH CLOSING 1 58 1 82
ARCH CONNECTED 0 0 0 0
ARCH CLOSING 1 59 1 681
MRP0 WAIT_FOR_GAP 1 60 0 0 --备库在等60
RFS IDLE 0 0 0 0
RFS IDLE 0 0 0 0
RFS IDLE 1 64 294 1
RFS IDLE 0 0 0 0
alter database recover managed standby database cancel;
--主库确定归档丢失的SCN
select sequence#,first_change#,next_change# from v$archived_log where sequence# > 59 order by 1;
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
60 1266548 1266639
61 1266639 1266643
62 1266643 1266649
63 1266649 1267397
63 1266649 1267397
主库从丢失归档时做SCN
备份
60
号归档文件对应的SCN
是1266548
RMAN> backup device type disk incremental from scn 1266548 database format '/home/oracle/lost_archive_%u_%s_%p.bk';
scp /home/oracle/lost_archive_0* 10.107.173.12:/home/oracle
备库到mount
之后做增量还原
shu abort;
startup mount;
rman target /
catalog backuppiece '/home/oracle/lost_archive_03vv3cff_3_1.bk';
catalog backuppiece '/home/oracle/lost_archive_04vv3cfh_4_1.bk';
recover database noredo;
启动同步
alter database recover managed standby database parallel 4 using current logfile disconnect from session;
恢复控制文件
从主库创建控制文件
alter database create standby controlfile as '/home/oracle/standby_lostarchive.ctl';
SQL> host scp /home/oracle/standby_lostarchive.ctl 10.107.173.12:/home/oracle
备库恢复控制文件,这时候需要恢复控制文件,原来的控制文件因为包含了redo apply
老的应用信息,所以不能用了
shutdown immediate;
startup nomount;
rman target /
restore controlfile from '/home/oracle/standby_lostarchive.ctl';
启动备库同步
shutdown immediate
startup
alter database recover managed standby database [parallel 4] using current logfile disconnect from session;
最后确认一下主备是否同步(略)