一、概述

本文将给大家介绍主库使用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. Mybatis开启二级缓存(全局缓存)的方法

    Mybatis开启二级缓存的方法 开启步骤 1.在 mybatis-config.xml 的配置文件中进行显示配置,开启二级缓存(全局缓存) 2.在 Mapper.xml 文件中添加cache标签 一 ...

  2. Maven——软件开发中一个神奇的项目管理工具

    由于本人是从c++转入从事JAVA工作的 所以很多东西要从头学起,相信有很多跟我一样的人吧,那么我们一起来学习. 今天我们一起来认识下Maven这个工具,很多人可能会问题了,为什么说是工具呢?不是写代 ...

  3. 再见了Antirez永远的Redis之神

    其实antirez(Redis作者)退出Redis维护一发布我就在很多咨询网站上面看到了,当时也没太多感慨. 今天比较有空想去看看霉霉Twitter的,然后看到了antirez,我就又一次回顾了他的退 ...

  4. The JOIN operation -- SQLZOO

    The JOIN operation 注意:where语句中对表示条件的需要用单引号, 下面的译文使用的是有道翻译如有不正确,请直接投诉有道 01.Modify it to show the matc ...

  5. C++ 第二天 字符串

    字符串 字符串是最常用的一种数据类型了,在python中声明字符串和声明其他类型的数据一样,都非常的简单.但是在c++中,对于字符串的操作,相对来说要稍微复杂一些. C++ 提供了以下两种类型的字符串 ...

  6. Python time ctime()方法

    描述 Python time ctime() 函数把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式.高佣联盟 www.cgewang.com 如果参数未给或者为None的时候, ...

  7. PHP timezone_identifiers_list() 函数

    ------------恢复内容开始------------ 实例 输出非洲的所有时区: <?phpprint_r(timezone_identifiers_list(1));?> 运行实 ...

  8. PHP rad2deg() 函数

    实例 把弧度转换为角度: <?phpecho rad2deg(pi()) . "<br>";echo rad2deg(pi()/4);?>高佣联盟 www. ...

  9. EACCES: permission denied,mkdir … npm install 安装依赖问题解决

    强哥最近在用hugeGraph图库做二次开发的时候,在打包的时遇到前端项目打包失败的问题: cwebp-bin@4.0.0 postinstall /home/hugegraph/my-hugegra ...

  10. 【BZOJ4398】福慧双修 题解(建图优化)

    题目链接 题目大意:给定一张$n$个点$m$条边的无向图,每条边两个方向的权值不一定相同.问从$1$出发不重复走一条边回到$1$的最短路径. ------------------- 暴力不太会.大概是 ...