模拟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操作,验证主备库:
主库:
在这里插入图片描述
备库:
在这里插入图片描述
主备恢复同步。

Oracle 19c的RAC(Real Application Clusters)结合ADG(Active Data Guard)是一种高可用性架构,它允许数据库主库发生故障时无缝切换到。配置ADG以实现主库归档和同步的步骤如下: 参考资源链接:[Oracle 19c RAC+ADG配置详解:主库归档与DG环境参数调整](https://wenku.youkuaiyun.com/doc/5f604xr461?spm=1055.2569.3001.10343) 首先,在主库上设置归档模式并指定归档日志文件的位置。这可以通过SQL*Plus工具完成: ```sql SQL> startupmount; SQL> alter system set log_archive_dest_1='location=+arch' scope=spfile; SQL> alter database open; SQL> alter database archivelog; SQL> alter database force logging; ``` 接下来,配置Data Guard环境参数以保证能够正确接收并应用归档日志。这包括设置日志传输服务和确保主库之间网络通信的畅通。 在上,需要确保实例能够在接收到日志后正确应用这些日志,并处于只读模式,以保证数据的一致性和安全性: ```sql SQL> startup nomount; SQL> create spfile from pfile; SQL> alter database recover managed standby database using current log disconnect from session; ``` 此外,还需要配置网络参数和服务,以便能够接收来自主库的归档日志。这可能涉及到调整TNS名称、监听器配置等。 最后,要进行故障转移测试,确保可以在主库出现故障时及时接管服务。这需要在RAC环境中设置故障转移参数,并通过DG Broker进行管理。 通过以上步骤,你可以在Oracle 19c RAC环境中成功配置ADG,实现主数据库间的安全无缝故障转移和数据一致性。对于深入了解和实操Oracle 19c RAC+ADG配置的更多细节,建议参考《Oracle 19c RAC+ADG配置详解:主库归档与DG环境参数调整》这一资料。该文档不仅涵盖了上述配置步骤,还深入讲解了相关的高级配置选项和故障排除方法,为你全面掌握Oracle 19c RAC和ADG的配置与管理提供了宝贵的资源。 参考资源链接:[Oracle 19c RAC+ADG配置详解:主库归档与DG环境参数调整](https://wenku.youkuaiyun.com/doc/5f604xr461?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值