一、概述

本文将给大家介绍主库使用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. Python os.ttyname() 方法

    概述 os.ttyname() 方法用于返回一个字符串,它表示与文件描述符fd 关联的终端设备.如果fd 没有与终端设备关联,则引发一个异常.高佣联盟 www.cgewang.com 语法 ttyna ...

  2. Python os.makedev() 方法

    概述 os.makedev() 方法用于以major和minor设备号组成一个原始设备号.高佣联盟 www.cgewang.com 语法 makedev()方法语法格式如下: os.makedev(m ...

  3. PHP flock() 函数

    定义和用法 flock() 函数锁定或释放文件. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 flock(file,lock,block) 参数 描述 file 必需.规定要 ...

  4. PHP 获取图像宽度与高度

    PHP 获取图像宽度函数:imagesx() imagesx() 函数用于获取图像的宽度,单位为像素,返回值为整型.高佣联盟 www.cgewang.com 语法: int imagesx( reso ...

  5. PHP PDO连接

    连接是通过创建 PDO 基类的实例而建立的.不管使用哪种驱动程序,都是用 PDO 类名. 连接到 MySQL <?php高佣联盟 www.cgewang.com $dbh = new PDO(' ...

  6. PHP convert_uuencode() 函数

    实例 编码字符串: <?php$str = "Hello world!";echo convert_uuencode($str);?>高佣联盟 www.cgewang. ...

  7. Hadoop学习问题记录之基础篇

    目的 记录学习hadoop过程中遇到的基础问题,无关大小.无关困扰时间长短. 问题一 全分布式环境中运行mapred程序,报异常:java.net.NoRouteToHostException: 没有 ...

  8. [转]Post和Get的区别

    作者:zhanglinblog     来源:https://urlify.cn/FnYBbu 这个问题几乎面试的时候都会问到,是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以 ...

  9. Android 的重要控件 ListView (听说是最难最常用的控件)

    这个打字有点慢了,左手受伤了,不过很幸运,左手小拇指没事(这就可以愉快地使用快捷键啦!),虽然有伤,但还是得坚持总结,不只是为自己,还为未来的你们铺路,希望我写的,对你们有帮助. 提前给自己一个祝福: ...

  10. 如何设置远程MongoDB!

    默认情况下V服务连接着本地mongoDB服务,如果想连接到其他mongoDB服务,请按如下设置: 方法一:通过控制台修改 进入控制台 http://x.x.x.x:xxxx/system/consol ...