暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

DG 增量恢复

原创 xusmallhorse 2023-08-25
668

如果DG备库缺少大量归档日志,而且主库对应的归档已经被删除,这时候则需要做增量恢复。


具体步骤如下:

1 关闭备库同步


alter database recover managed standby database cancel;


2 以备库的当前SCN号为起点,在主库上做一个增量备份


--备库查询当前 scn 号:
sqlplus / as sysdba
select to_char(current_scn) from v$database;
select to_char(min(checkpoint_change#)) from v$datafile_header;


--确认主备GAP期间是否新增数据文件:
sqlplus / as sysdba
select file# , NAME from v$datafile where creation_change# > = 2212269838;
FILE# NAME
---------- --------------------------------------------------
25 /oracle/XXX/oradata/XXX.data15


注意: 如果存在新增数据文件,备库恢复时需要先restore新添加的数据文件。没有则忽略。


--主库根据备库scn号进行增量备份:
rman target /
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
crosscheck archivelog all;
delete expired archivelog all;
backup current controlfile for standby reuse format '/data/20230303gapincre/standby.ctl';
backup datafile 25 format '/data/20230303gapincre/ForStandby_%U' tag 'FORSTANDBY';
backup INCREMENTAL from scn 2212269837 database format '/data/20230303gapincre/incre_%U';
release channel c1;
release channel c2;
}


查看进度:

col opname format a32
col target_desc format a32
col perwork format a12
set lines 131
select sid,OPNAME,TARGET_DESC,sofar,TOTALWORK,trunc(sofar/totalwork*100,2)||'%' as perwork
from v$session_longops where sofar!=totalwork and totalwork!=0;



3 将增量备份和控制文件拷贝到备库上


主库拷贝增量备份和控制文件至备库:
scp -r /tmp/bak 192.168.202.134:/home/oracle

注意: 确认备库的磁盘空间是否足够存放。




4 使用新的控制文件将备库启动到mount状态


--备库关闭数据库实例,开启至nomount状态:
sqlplus / as sysdba
shutdown immediate
startup nomount


--备库恢复新的控制文件,开启到mount状态:
rman target /
restore standby controlfile from '/oradata/20230302gapincre/standby.ctl';
sql 'alter database mount';



5 增量备份注册到RMAN的catalog恢复增量备份


--restore新添加的数据文件,并catalog注册数据文件到控制文件,由于主备的数据文件目录不一致,需要使用switch命令修改controlfile中数据文件位置:
rman target /
run
{
catalog start with '/oradata/20230303gapincre';
set newname for datafile 25 to '/......';        --如果备库配置了datafile covert参数,这步可忽略
restore datafile 25;
switch datafile all;
}



RMAN> report schema;--查看数据库目录结构,可以查看那些datafile需要switch


--备库开启恢复增量备份:
recover database noredo;
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
recover database noredo;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}



6 清空standby redo log

select 'ALTER DATABASE CLEAR LOGFILE GROUP '|| GROUP# ||';' from v$logfile where TYPE='STANDBY' group by GROUP#;



7 开启备库的恢复进程


--备库开启日志同步进程:
sqlplus / as sysdba
alter database open read only;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

--主库重新激活同步:
sqlplus / as sysdba
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=defer;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=enable;

--查询是否存在GAP,确认主备是否同步:
sqlplus / as sysdba
SELECT * FROM V$ARCHIVE_GAP;
SELECT max(sequence#) from v$archived_log where applied='YES';
SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY; --多刷新几次

--测试:
insert into t1 values(2);
commit;


--备份进度
SELECT sid,
serial#,
CONTEXT,
sofar,
totalwork,
round(sofar / totalwork * 100,
2) "%_COMPLETE"
FROM gv$session_longops
WHERE opname LIKE 'RMAN%'
AND opname NOT LIKE '%aggregate%'
AND totalwork != 0
AND sofar <> totalwork;

--恢复进度
SELECT sid,
serial#,
CONTEXT,
sofar,
totalwork,
round(sofar / totalwork * 100,
2) "% Complete"
FROM v$session_longops
WHERE opname LIKE 'RMAN:%'
AND opname NOT LIKE 'RMAN: aggregate%';

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论