模拟ADG主库归档文件丢失,备库出现gap(增量备份解决)

一、说明

模拟Oracle主库归档文件丢失,备库出现gap,通过增量备份方式恢复备库。
(本文档模拟断档期间没有新增数据文件的情况,断档期间有新增数据文件的情况需要在备库在备库恢复控制文件并注册数据文件后再restore恢复新增数据文件然后再重新命名控制文件中的数据文件,再执行 RECOVER DATABASE NOREDO增量备份恢复备库)

二、环境信息

2.1.主备库环境信息

主机名IP数据库版本
主库p19c192.168.80.4019.3
备库p19cstd192.168.80.3919.3

2.2.检查主备是否同步正常

-- 创建测试表并插入数据 
CREATE TABLE zyy_test (  
    id INT PRIMARY KEY,  
    name VARCHAR2(50) NOT NULL  
);   
BEGIN  
    FOR i IN 1..30 LOOP  
        INSERT INTO zyy_test (id, name) VALUES (i, 'Name' || TO_CHAR(i));  
    END LOOP;  
    COMMIT;  
END;  
/
commit;
分别在主库备库查看
select count(*) from zyy_test;

主库查看:
在这里插入图片描述

备库查看:
在这里插入图片描述
主备同步正常。

三、模拟日志断档

3.1.模拟主库归档文件丢失

3.1.1 备库取消日志实时应用

alter database recover managed standby database cancel;
SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY;

在这里插入图片描述
备库mrp进程已关闭。
3.1.2在主库删除表数据并切换日志
DELETE FROM zyy_test WHERE id > 27;
commit;
select count(*) from zyy_test;
主库查看:
在这里插入图片描述
备库由于关闭了日志实时同步,表数据不会发生改变:
在这里插入图片描述
3.1.3 在主库切换日志查看当前日志编号

alter system switch logfile;
set linesize 200
select * from v$log;

在这里插入图片描述
由上图可以看到主库当前的日志编号是12。
3.1.4 在主库上再建一个表,查看主备日志

create table zyy_tables as select * from dba_tables;
commit;
select count(*) from zyy_tables;

在这里插入图片描述
主库切换日志再次查看

alter system switch logfile;
select * from v$log;

在这里插入图片描述
由上图可以看到主库当前的日志编号是13。
查看备库归档日志应用情况:

select sequence#,applied,archived,deleted from v$archived_log order by sequence#;

在这里插入图片描述
由于备库关闭了归档日志实时同步,所以11,12号归档日志已经传到备库但没有应用。

3.1.5 主备库删除13号归档日志

cd /u01/app/archive
ls
rm 1_13_1165425165.arc

主库:
在这里插入图片描述
备库:
在这里插入图片描述
3.1.6 对主库进行ddl,查看主备日志

alter database recover managed standby database using current logfile disconnect;

在这里插入图片描述
主库进行ddl操作,并切换日志后查看主备库日志应用情况:

delete from zyy_test where id>18;
alter system switch logfile;
delete from zyy_test where id>15;
alter system switch logfile;
delete from zyy_test where id>14;
alter system switch logfile;
delete from zyy_test where id>12;
alter system switch logfile;
commit;
set linesize 999
select * from v$log;

主库:
在这里插入图片描述

select sequence#,applied,archived,deleted from v$archived_log order by sequence#;

备库:
在这里插入图片描述
由于主备库12号日志被删除,导致备库12号及以后的日志都无法应用。

3.1.7 查看主备库测试表信息

select count(*) from zyy_test;
select count(*) from zyy_tables;

主库:
在这里插入图片描述
备库:
在这里插入图片描述
由于备库缺少12号日志,导致主备库测试表信息不一致。

3.2 查看主库状态出现GAP

select name,open_mode,database_role,switchover_status from v$database;

在这里插入图片描述

四、RMAN增量备份恢复备库同步

4.1 RMAN增量恢复备库

4.1.1 取消备库实时同步

alter database recover managed standby database cancel;

4.1.2 确认备库数据文件头最小的SCN

select current_scn from v$database;
select min(checkpoint_change#) from v$datafile_header;

在这里插入图片描述
4.1.3 在主库进行增量备份

rman target/
backup  incremental  from  scn  2259313  database  format  '/home/oracle/backup/ForStandby_%U'  tag 
'FORSTANDBY';

4.1.4 将主库的备份文件传到备库
scp -r /home/oracle/backup/* oracle@192.168.80.39:/home/oracle/backup/
在这里插入图片描述
备库查看:

在这里插入图片描述
4.1.5 在备库注册备份片

rman target/
catalog start with '/home/oracle/backup/ForStandby';

在这里插入图片描述
4.1.6 在备库执行恢复
备库数据库启动到mount状态
rman target/
shutdown immediate
startup mount
recover database noredo;
在这里插入图片描述
4.1.7 在主库生成新的standby控制文件

backup current controlfile for standby format '/home/oracle/backup/ForStandbyCTRL.bck';

在这里插入图片描述
查看备库文件:
在这里插入图片描述
4.1.8 将主库生成的新standby控制文件传到备库

scp /home/oracle/backup/ForStandbyCTRL.bck oracle@192.168.80.39:/home/oracle/backup/

在这里插入图片描述
备库查看:
在这里插入图片描述
4.1.9 备份备库数据文件
备份备库数据文件信息,用于之后恢复新的standby控制文件后进行对比

spool datafile_names_p19cbak.txt;
set lines 200;
col name format a60;
select file#, name from v$datafile order by file#;
spool off;

在这里插入图片描述
4.1.10 在备库恢复新的standby 控制文件

rman target/
shutdown immediate;
startup nomount;  
restore standby controlfile from '/home/oracle/backup/ForStandbyCTRL.bck';

4.1.11 在备库更新控制文件中的数据文件
(注:如果主备库具有相同的目录和名字,此步骤可以省略。我这里主库数据文件位置是’/u01/app/oracle/oradata/P9C/’,备库是’/u01/app/oracle/oradata/P9C/’,应该是需要此步骤的,但不知道为什么后面4.1.13查看重命名数据文件时会报错。)

shutdown
startup mount
catalog start with '/u01/app/oracle/oradata/P19CSTD';

在这里插入图片描述
4.1.12 查看主库有没有添加新文件

select file#, name from v$datafile where creation_change# >2259312;

在这里插入图片描述
4.1.13 查看重命名数据文件
备库:

switch database to copy;

在这里插入图片描述
4.1.14确认增量恢复后,主备库的SCN号没有太大差距
select current_scn from v$database;
主库:
在这里插入图片描述
备库:
在这里插入图片描述

4.2 开启备库redo同步

4.2.1清理备库standby 日志组

set linesize 999;
col DBID for a20;
select * from v$standby_log
alter database clear logfile group 6;
alter database clear logfile group 7;
alter database clear logfile group 8;
alter database clear logfile group 9;

备库:
在这里插入图片描述
4.2.2备库启动redo应用

alter database recover managed standby database disconnect;

主库查看日志:

set linesize 999
select * from v$log;

在这里插入图片描述
备库:

select sequence#,applied,archived,deleted from v$archived_log order by sequence#;

在这里插入图片描述
(这里正常应该查到apply日志16号)
4.2.3备库开启实时应用

alter database recover managed standby database cancel;
alter database open;
alter database recover managed standby database using current logfile disconnect;

在这里插入图片描述
(这里备库打开日志实时应用还是查不到日志编号,后面主库切换日志后可以查到)
4.2.4 主库切换日志,主备库查看日志编号
主库切换日志

alter system switch logfile;

在这里插入图片描述
主库查看日志:
在这里插入图片描述
备库查看日志编号:
在这里插入图片描述
可以看到备库应该应用到17号日志。

4.3 主备库验证同步

select count(*) from zyy_test;
select count(*) from zyy_tables;

主库:
在这里插入图片描述
备库:
在这里插入图片描述
主库进行ddl操作,验证主备库:
主库:
在这里插入图片描述
备库:
在这里插入图片描述
主备恢复同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值