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'
step2 查询主库是否有新增数据文件(主库操作)
SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > ADG SCN最小值;
step3 主库做增量备份&新增数据文件备份(主库操作)
rman target /
#!/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;
}
step7 重命名新的备用控制文件中的数据文件(ADG库操作)
CATALOG START WITH '/u01/<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#;

本文作者:事业二部(上海新炬中北团队)
本文来源:“IT那活儿”公众号

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




