本周遭遇資料庫dg gap,通過增量備份進行修複,主要步驟如下:
1、确定增備scn範圍,通過alert日志擷取gap日志序列
GAP - thread 1 sequence 109631-117170
2、根據序列擷取增備起點SCN
提示最小gap序列為109631, 往前推一個序列,然後獲得scn号
select THREAD#,SEQUENCE#,FIRST_CHANGE#,NEXT_CHANGE# from v$archived_log where SEQUENCE#=109630;
THREAD# SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ---------- ------------- ------------
1 109630 1606624354 1606624958
3、在primary做基于該scn的增量備份及生成新的備庫控制檔案
增量備份資料庫
export ORACLE_SID=xxx
##AIX
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 2000 M;
backup incremental from scn 1606624354 database format '/oradata/dgbackup/xxx/xxx_1606624354%U.bak';
在primary建立standby controlfile
alter database create standby controlfile as '/oradata/dgbackup/xxx/xxx01.ctl';
4、備庫關閉資料庫,替換控制檔案
關閉備庫,備份目前備庫控制檔案
shutdown immediate
mv /oradata/xxx/control01.ctl /oradata/xxx/control01.ctl.bak
替換目前備庫控制檔案
cp /oradata/dgbackup/xxx/xxx01.ctl /oradata/xxx/control01.ctl
5、啟動備庫進行增量恢複
-----啟動資料庫到nomount
startup nomount;
----啟動資料庫到mount
alter database mount standby database;
-----rman增量恢複
catalog start with '/oradata/dgbackup/inscndbkf';
recover database noredo;
6、啟動備庫複制應用
sqlplus / as sysdba
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;