本周遭遇数据库dg gap,通过增量备份进行修复,主要步骤如下:
1、确定增备scn范围,通过alert日志获取gap日志序列
[sql] view plain copy
- GAP - thread 1 sequence 109631-117170
2、根据序列获取增备起点SCN
提示最小gap序列为109631, 往前推一个序列,然后获得scn号
[html] view plain copy
- 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的增量备份及生成新的备库控制文件
增量备份数据库
[html] view plain copy
扫描二维码关注公众号,回复:
980222 查看本文章
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
[html] view plain copy
- alter database create standby controlfile as '/oradata/dgbackup/xxx/xxx01.ctl';
4、备库关闭数据库,替换控制文件
关闭备库,备份当前备库控制文件
[html] view plain copy
- shutdown immediate
- mv /oradata/xxx/control01.ctl /oradata/xxx/control01.ctl.bak
替换当前备库控制文件
[html] view plain copy
- cp /oradata/dgbackup/xxx/xxx01.ctl /oradata/xxx/control01.ctl
5、启动备库进行增量恢复
[sql] view plain copy
- -----启动数据库到nomount
- startup nomount;
- ----启动数据库到mount
- alter database mount standby database;
- -----rman增量恢复
- catalog start with '/oradata/dgbackup/inscndbkf';
- recover database noredo;
6、启动备库复制应用
[sql] view plain copy
- sqlplus / as sysdba
- ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;