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

ADG GAP增量恢复

IT那活儿 2024-03-13
632
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!  

step1 备库查询SCN号,取最小值(ADG库操作)

su - oracle
sqlplus as sysdba
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
select CURRENT_SCN FROM V$DATABASE;
Select min(fhscn) from x$kcvfh;
select min(f.fhscn) from x$kcvfh f, v$datafile d where f.hxfil =d.file# and d.enabled != 'READ ONLY'

#记录SCN最小值。

step2 查询主库是否有新增数据文件(主库操作)

SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > ADG SCN最小值;
#ADG SCN最小值 最好在减1000,记录缺失的新增数据文件号 ; 无结果不用操作。

step3 主库做增量备份&新增数据文件备份(主库操作)

新增数据文件备份:
rman target /
backup datafile 缺失的新增数据文件号, 缺失的新增数据文件号, 缺失的新增数据文件号, 缺失的新增数据文件号 format '/u01/oracle_back/db_inc_%U.bak';
#无新增数据文件无需操作。
增量备份脚本:
#!/bin/bash
. /home/oracle/.bash_profile
rman target / log=/home/oracle/rman_inc.log<<EOF
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
backup as compressed backupset INCREMENTAL FROM SCN SCN最小值 database format '/u01/oracle_back/db_inc_%U.bak';
backup current controlfile for standby format '/u01/oracle_back/standby_controlfile.ctl';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
exit;
EOF

nohup sh /home/oracle/rman_inc.sh &

step4 主库把备份集SCP到ADG主机(主库操作)

scp /u01/oracle_back/* standby:/u01/oracle_back/

step5 ADG库恢复新的控制文件和目录备份传输

rman target /
shutdown;
startup nomount;
restore standby controlfile from '/u01/oracle_back/standby_controlfile.ctl';
alter database mount;
CATALOG START WITH '/u01/oracle_back';

step6 ADG库恢复缺失的新增文件(ADG库操作)

run
{
set newname for datafile 170 to '/u01/<db_unqiue_name>/datafile/';
set newname for datafile 171 to '/u01/<db_unqiue_name>/datafile/';
set newname for datafile 172 to '/u01/<db_unqiue_name>/datafile/';
restore datafile 170,171,172;
}

#无缺失的新增文件不用操作 若是ASM 例如:改成'+DATADG'。

step7 重命名新的备用控制文件中的数据文件(ADG库操作)

CATALOG START WITH '/u01/<db_unqiue_name>/datafile/';
#若是ASM 例如:改成'+DATADG/<db_unqiue_name>/datafile/'
SWITCH DATABASE TO COPY;

step8 增量备份恢复ADG数据库(ADG库操作)

#!/bin/bash
. /home/oracle/.bash_profile
rman target / log=/home/oracle/rman_reco.log<<EOF
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
RECOVER DATABASE NOREDO;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
exit;
EOF

nohup sh /home/oracle/rman_reco.sh &

step9 清理standby logfile(ADG库操作)

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

step10 启动MRP(ADG库操作)

alter database open;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

step11 查询ADG同步(ADG库操作)

set pages 100
set lines 160
col name  format a25
col value format a25
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select name,value from v$dataguard_stats where name in ('apply lag','apply finish time','transport lag');
SELECT THREAD#,PROCESS, STATUS,SEQUENCE#,BLOCK#,BLOCKS, DELAY_MINS FROM GV$MANAGED_STANDBY ORDER BY PROCESS, THREAD#;


END


本文作者:事业二部(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论