Data Guard跳归档恢复的案例

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 自前些天写了一个脚本之后,今天特意测试了一下,没想到一下子发现了一个大问题。有一套一主两备的10gR2环境,一个异机备库一直在READ ONLY状态,也就意味着数据库在打开之后一直忘了恢复应用归档,然后在某一天发现时,已经延迟了好几个月。
自前些天写了一个脚本之后,今天特意测试了一下,没想到一下子发现了一个大问题。有一套一主两备的10gR2环境,一个异机备库一直在READ ONLY状态,也就意味着数据库在打开之后一直忘了恢复应用归档,然后在某一天发现时,已经延迟了好几个月。无论怎样,还得庆幸发现了这个问题。
目前来看一种行之有效的方法就是重搭备库,但是这种修复方式需要大量的磁盘空间,而且需要恢复的时间较长,怎么改进呢,可以考虑通过基于SCN的增量备份来跳归档恢复。目前的环境是一主两备,再怎么改进呢,我们可以基于备库1来完成基于SCN的增量备份,在备库2完成恢复,对于主库几乎是完全透明,无影响的。
整个示意图如下,通过在Standby1上面基于SCN导出增量备份,拷贝到备库2上去恢复,最后再和主库汇合即可。

所以在这个问题上,还是对10g的DG Broker颇有微词,因为11g中是ADG不会存在这类问题,在10g中备库为READ ONLY,哪怕丢失了大量的归档,备库也是检查通过的。
直到在切换到恢复模式的时候,后台日志还不清楚到底发生了什么。

其实这个时候问题已经很严峻了。
我们首先在备库1上查看SCN的情况。
idle> col CURRENT_SCN format 99999999999999999999999999999
idle>SELECT CURRENT_SCN FROM V$DATABASE;
                   CURRENT_SCN
------------------------------
                  188670376120

备库2上的SCN情况如下:
SQL> col CURRENT_SCN format 99999999999999999999999999999
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
                   CURRENT_SCN
------------------------------
                  188611153769
可以看到延迟已经很大了。可能通过这个数字对比还不够明显。从后台日志可以看到,上一次启动到READ ONLY的时候是在3月份了,也就意味着这个问题已经过去了快半年了。这种情况下增量恢复还有希望吗,在主库端查看了下最近的归档情况,发现这个数据库的数据变更频率很低,基本是每天一次,所以近半年的时间大概是150~180个左右的归档,好像还能勉强接受。

在备库1增量导出的情况如下,我们基于SCN 188611153769,也就是备库2上一个较旧的SCN
[@TEST.test.com backup_stage]$ rman target /
Recovery Manager: Release 10.2.0.4.0 - Production on Mon Aug 15 11:32:56 2016
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
connected to target database: TEST (DBID=1731005384, not open)
RMAN> BACKUP INCREMENTAL FROM SCN 188611153769 DATABASE FORMAT '/home/oracle/backup_stage/stest2_%U' tag 'FORSTANDBY';
在真实环境尝试,和实验还是有很大的差别,短暂的等待后竟然抛出了一个错误。

不过虚惊一场,这个是备份的路径问题,导致空间不足,切换了一个路径再次尝试,很快就完成了,大概用了7分钟的时间。

这个时候拷贝到备库2上会恢复,当然还是需要先恢复控制文件,可以从主库生成一个镜像过去,或者从备库2拷贝也可以。
否则在恢复的时候会抛出类似下面的错误。

备库2先注册这个增量备份,/U01/backup_stage/increment_backup是增量备份存放的路径
[@stest4.test.com ~]$ rman target /
RMAN> catalog start with '/U01/backup_stage/increment_backup';
Starting implicit crosscheck backup at 15-AUG-16
using target database control file instead of recovery catalog
采用下面的方式恢复:
RMAN>  recover database noredo ;
恢复的时间更短,大概是1分多钟。

后台的日志会输出类似下面的内容:

恢复后查看SCN的情况如下,已经有了更新。
SQL> col CURRENT_SCN format 9999999999999999999999
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
            CURRENT_SCN
-----------------------
           188670376925
后面所做的就是开启恢复模式。
SQL> recover managed standby database disconnect from session;
Media recovery complete.
这个时候查看数据库日志就会发现备库2很快就追评了归档GAP,一切又恢复了正常。
通过这个案例可以看到Data Guard的恢复在有些时候还是有一些捷径可走,明白了原理,加上点运气,问题就可以引刃而解。

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
存储 安全 对象存储
OSS对接-STS认证模式接入参考文档
背景之前项目中用到文件上传的场景中,都是由服务端做转发到OSS,存在着性能损耗。我们在 高德文件直传能力建设 项目中需要探索使用客户端直连OSS的方式来做,了解到OSS提供了STS认证的方式,通过子账号生成的临时AK作为客户端短期访问OSS的凭证,也不同担心AK安全的问题。具体方案见官方文档:STS临时授权访问OSSOSS可以通过阿里云STS(Security Token Service)进行临时
2830 0
OSS对接-STS认证模式接入参考文档
|
存储 开发工具 git
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
800 0
|
数据处理 开发工具 C++
|
JavaScript Java 测试技术
基于SpringBoot+Vue的电子印章管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的电子印章管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
172 0
|
小程序 前端开发 JavaScript
微信小程序实现抽奖大转盘
微信小程序实现抽奖大转盘
1018 0
|
存储 缓存 负载均衡
1w5字详细介绍分布式系统的那些技术方案
天天说分布式分布式,那么我们是否知道什么是分布式,分布式会遇到什么问题,有哪些理论支撑,有哪些经典的应对方案,业界是如何设计并保证分布式系统的高可用呢?
|
JavaScript 前端开发 安全
在 JavaScript 中将浮点数转换为整数
在 JavaScript 中将浮点数转换为整数
522 0
element-plus:el-table展开图标替换
element-plus:el-table展开图标替换
935 0
|
存储 网络协议 开发工具
[笔记]深入解析Windows操作系统《一》概念和工具(二)
[笔记]深入解析Windows操作系统《一》概念和工具(二)
209 0
|
SQL JSON 数据可视化
(一)Superset 1.3图表篇——Table
本系列文章基于Superset 1.3.0版本。1.3.0版本目前支持分布,趋势,地理等等类型共59张图表。本次1.3版本的更新图表有了一些新的变化,而之前也一直没有做过非常细致的图表教程。 而且目前可以参考的资料有限,大部分还需要自己探索。所以本系列文章将对这59张图表的使用做一个整理。 Superset的安装入门,以及数据集的准备,请参考之前的教程,1.3版本依然可用。
1158 0
(一)Superset 1.3图表篇——Table

热门文章

最新文章