一、概述

本文将给大家介绍主库使用rman做不完全恢复后,备库如何通过flashback,继续同步

二、正式实验

本次实验采用的是oracle 11g 单实例 + oracle 11g 单实例dg

1. dg的搭建(略)

实验的前提条件是你已经有了一个正在同步的dg环境,关于dg如何搭建不在本文讨论范围内

2. 打开dg的闪回功能

SQL> alter system set db_recovery_file_dest_size = 4G;
SQL> alter system set db_recovery_file_dest = '/u01/app/oracle/fast_recovery_area'; # 需要先关闭mrp进程,才能打开dg闪回功能
SQL> alter database recover managed standby database cancel;
SQL> alter database flashback on;
SQL> alter database recover managed standby database using current logfile disconnect from session;

3. 主库进行备份

RMAN> backup database;

4. 主库查询scn

SQL> select current_scn from v$database;   

CURRENT_SCN
-----------
940486

5. 主库做一系列的操作

SQL> create table scott.test1 as select * from scott.emp;
SQL> alter system switch logfile;
SQL> create table scott.test2 as select * from scott.emp;
SQL> alter system switch logfile;
SQL> create table scott.test3 as select * from scott.emp;
SQL> alter system switch logfile;
SQL> create table scott.test4 as select * from scott.emp;

6. 主库还原恢复

现在我要回退主库到scn 940486,将第5步中的操作全部回退

SQL> shutdown immediate;
SQL> startup mount;
RMAN> restore database;
RMAN> recover database until scn 940486;
SQL> alter database open resetlogs;
SQL> select resetlogs_change# from v$database; RESETLOGS_CHANGE#
-----------------
940487

可以看到主库是回退到了940486,resetlogs的scn号是940487

7. 观察dg的alert日志

以下是dg的alert日志的节选

Tue Aug 25 11:33:38 2020
RFS[5]: Assigned to RFS process 1972
RFS[5]: Selected log 23 for thread 1 sequence 1 dbid -1499891995 branch 1049369616
RFS[5]: Standby in the future of new recovery destinationBranch(resetlogs_id) 1049369616
Incomplete Recovery SCN: 941492
Resetlogs SCN: 940487
Flashback database to SCN 940486 to follow new branch
Flashback database to SCN 940486 to follow new branch
RFS[5]: New Archival REDO Branch(resetlogs_id): 1049369616 Prior: 1047566949
RFS[5]: Archival Activation ID: 0xa6b56927 Current: 0xa69921e5
RFS[5]: Effect of primary database OPEN RESETLOGS
RFS[5]: Managed Standby Recovery process is active
RFS[5]: Incarnation entry added for Branch(resetlogs_id): 1049369616 (dgorcltest)
...
MRP0: Background Media Recovery process shutdown (dgorcltest)

可以看到dg库已经知道主库做了resetlogs,也提示dg需要flashback才能继续同步。这里提示dg需要flashback到940486,也就是主库做不完全恢复的点,但实际测试下来,需要flashback更早一点才行,即940486-1=940485

同时dg的mrp进程自动就shutdown了

8. dg闪回

SQL> flashback database to scn 940485;
SQL> alter database open;
SQL> alter database recover managed standby database using current logfile disconnect from session;

9. 主库做修改

SQL> create table scott.test5 as select * from scott.emp;
SQL> alter system switch logfile;

10. 从库查询

SQL> select count(*) from scott.test5;                           

  COUNT(*)
----------
14

可以看到dg又正常同步主库了。

三、总结

从上面的例子可以看到

940486 --> 主库不完全恢复的点

940487 --> 主库resetlogs的点

940485 --> dg闪回的点

也就是dg必须闪回到主库不完全恢复的点的前面,dg闪回的点可以通过下面sql在主库中查询得到。

SQL> select resetlogs_change#-2 from v$database;

RESETLOGS_CHANGE#-2
-------------------
940485

Oracle - Flashback standby after resetlogs on primary的更多相关文章

  1. Oracle Flashback 详解

    Oracle flashback 是一种方便快捷的数据库恢复技术,它不使用备份文件,通过闪回日志可以使数据库恢复到过去的某个状态,当用户发生逻辑错误时(误删表数据.表.表空间等)需要快速恢复数据库,可 ...

  2. Oracle Flashback Technologies - 闪回数据库

    Oracle Flashback Technologies - 闪回数据库 根据指定的SCN,使用rman闪回数据库 #查看可以闪回到多久前 SQL> select * from v$flash ...

  3. Oracle Flashback Technologies (总)

    Oracle Flashback Technologies Oracle 9i中增加了闪回查询技术,闪回查询为数据库提供了一种简单.强大.完全无干扰从人为错误中恢复的机制.通过闪回查询,用户可以查看过 ...

  4. Oracle Dataguard Standby Redo Log的两个实验

    在Data Guard环境中,Standby Redo Log是一个比较特殊的日志类型.从最新的DG安装指导中,都推荐在Primary和Standby端,都配置Standby Redo Log. 简单 ...

  5. ORACLE FLASHBACK DATABASE 知识整理

    1.知识储备 1)    只有SYSDBA有权执行,闪回前一定要记录当前SCN 2)    需要停机,并要求处于ARCHIVELOG模式中 3)    闪回日志不能被复用和归档,是自动管理的.RVWR ...

  6. oracle flashback data archive闪回数据归档天坑之XID重用导致闪回查询数据重复

    我们有个系统使用了Oracle flashback data archive闪回数据归档特性来作为基于时间点的恢复机制,在频繁插入.更新期间发现SYS_FBA_HIST_NNNN表中的XID被两个事务 ...

  7. Oracle Flashback Technology【闪回技术】

    -------------------------与其他数据库相比,Oracle的闪回让开发者多了一条选择的路. Flashback的目的 先看下Oracle官方文档中的解释: Oracle Flas ...

  8. ORACLE Physical Standby DG 之switch over

    DG架构图如下: 计划,切换之后的架构图: DG切换: 主备切换:这里所有的数据库数据文件.日志文件的路径是一致的 [旧主库]主库primarydb切换为备库standby3主库检查switchove ...

  9. ORACLE Physical Standby 级联备库搭建

    搭建oracle 级联DG 现有架构:physical standby 一主二备,在此基础上,在主库下新建备库standby3.级联备库cascade 数据库版本 11.2.0.4 db_name=p ...

随机推荐

  1. source命令用法:source FileName

    转自https://zhidao.baidu.com/question/59790034.html  写得很清楚,就直接搬过来了备忘 作用:在当前bash环境下读取并执行FileName中的命令. 注 ...

  2. 十分钟搭建自己的私有NuGet服务器-BaGet

    目录 前言 开始 搭建BaGet 上传程序包 在vs中使用 其他 最后 前言 NuGet是用于微软.NET(包括 .NET Core)开发平台的软件包管理器.NuGet能够令你在项目中添加.移除和更新 ...

  3. Linux进程间通信之《共享内存》入门

    目录 简述 代码 写端代码 读取端代码 编译 运行 简述 共享内存是Linux系统进程间通信常用的方式,通常用于数据量较大的情况,如果只是用于不同的进程间消息通知,那不如用消息队列或者socket.之 ...

  4. SSM框架整合Demo

    目前项目大都开始采用SSM结构进行搭建,因为涉及项目比较多,新来的需求都是从现有项目中迁移一份出来进行修改,有的时候两个项目差别还是比较大,并不完全需要原有项目的东西,进行删减也是一项费神费时的事情, ...

  5. GhostNet:more features from cheap operation

  6. Java入门到实践系列(2)——Java环境搭建

    一.上集回顾 在<Java入门到实践系列(1)--Java简介>中提到过,Java程序是运行在Java虚拟机的,也展示过下面这张图. JDK:Java程序开发工具包. JRE:Java运行 ...

  7. JQuery的turn.js实现翻书效果

    前言: hello大家好~好久没更博了……今天来和大家分享下JQ的turn.js,下面我先来简单介绍下我们今天的主角turn.js. Turn.js是一个JavaScript库,它集合了HTML5的所 ...

  8. Flutter 打包程序 build android apk

    Step-1 Java 路径 找到java路径, 可使用[flutter doctor -v] Step-2: 进入目录 找到路径后 C:\Program Files\Java\jre1.8.0_23 ...

  9. centos环境 使用kubeadm快速安装k8s集群v1.16.2

    全程使用root用户运行,宿主机需要连接外网 浏览一下官方kubeadm[有些镜像用不了] https://kubernetes.io/docs/setup/production-environmen ...

  10. jQuery的小测试

    1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? $('div:has(span)'); 2.在&l ...