Data Guard高级玩法:通过闪回恢复switchover主库 (r10笔记第13天)
最近又试了下Data Guard的新玩法,可以通过闪回恢复switchover的主库,这种场景听起来比较特别,但是Oracle依旧支持。 我们的大体思路就是,在主库我们标记一下数据状态,然后做Switchover之后,我们truncate 某个表中的数据,也就间接模拟了一个数据库故障,这个时候需要做回退,需要把主库的数据都恢复到切换前的状态,这个听起来还是比较复杂的场景,备库还可以一如既往的跟着主库吗? 我们用图表来说明一下: 首先是一个主备库的环境:
switchover是计划内的任务,就是主切备,备切主。
这个时候发现切换出现了问题,我们需要紧急回退,需要回退到切换前的状态,要知道此时的主库已经不是原来的主库,备库也不是原来的备库了。闪回是否依旧可行,备库是否可以依旧选择一个新的断点可以重新同步?
我们来通过实战演练一下,当然这个操作需要保证主备库都开启了闪回数据库的特性,在11g中开启已经不再需要重启数据库,open阶段即可随时开关。
主库的操作如下:
我们创建一个表test,插入2行记录。
SQL> select count(*)from n1.test;
COUNT(*)
----------
2
然后我们得到一个初始的SCN值。
SQL> select current_scn,database_role,flashback_on from v$database;
CURRENT_SCN DATABASE_ROLE FLASHBACK_ON
----------- ------------------------------ ------------------------------------
2084486 PRIMARY YES
检查DG Broker的状态,这里snewtest2是主库,newtest2是备库。
DGMGRL> show configuration;
Configuration - dg_newtest2
Protection Mode: MaxPerformance
Databases:
snewtest2 - Primary database
newtest2 - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
然后我们开始测试这个方案。
备库的操作如下: DGMGRL> switchover to newtest2; Performing switchover NOW, please wait... New primary database "newtest2" is opening... Operation requires startup of instance "newtest2" on database "snewtest2" Starting instance "newtest2"... ...
切换之后查看DG Broker的状态,也看到主备库的角色已经调整过来了。
DGMGRL> show configuration;
Configuration - dg_newtest2
Protection Mode: MaxPerformance
Databases:
newtest2 - Primary database
snewtest2 - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
这个时候我们查看表test的数据。
SQL> select count(*)from n1.test;
COUNT(*)
----------
2
然后开始破坏。直接truncate SQL> truncate table n1.test; Table truncated.
这个时候业务层面发现了数据的连锁错误,准备开始回退到初始的状态。 SQL> shutdow immediate SQL> startup mount
开始闪回数据库,恢复到初始的数据状态
SQL> flashback database to scn 2084486; Flashback complete.
这个时候需要resetlogs SQL> alter database open resetlogs; Database altered. 原来的主库操作如下:
先初步验证,发现这个时候DG Broker验证失败。 DGMGRL> show configuration; Configuration - dg_newtest2 Protection Mode: MaxPerformance Databases: newtest2 - Primary database snewtest2 - Physical standby database Error: ORA-16810: multiple errors or warnings detected for the database Fast-Start Failover: DISABLED Configuration Status: ERROR 我们关闭日志的应用。 SQL> recover managed standby database cancel;
然后开始闪回到指定的SCN SQL> flashback database to scn 2084486; Flashback complete. 完成之后,重新开启日志应用。 SQL> recover managed standby database disconnect from session; Media recovery complete.
这个时候操作成功,我们就直接开启ADG,把数据库开启到open状态。 SQL> alter database open;
稍作等待,就会发现备库的状态为READ ONLY WITH APPLY.
SQL> select open_mode from v$database;
OPEN_MODE
----------------------------------------
READ ONLY WITH APPLY
这个时候DG Broker校验就没有问题了,这就达到了我们的预期目标。 DGMGRL> DGMGRL> show configuration; Configuration - dg_newtest2 Protection Mode: MaxPerformance Databases: newtest2 - Primary database snewtest2 - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS 这个过程让我对闪回的强大功能又有了新的认识和了解,希望在一些极端场景中依然能够帮助到你们。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浙大版《C语言程序设计(第3版)》题目集 练习2-1 Programming in C is fun!
- 浙大版《C语言程序设计(第3版)》题目集 练习2-3 输出倒三角图案
- 这款网络排查工具,堪称神器!
- 浙大版《C语言程序设计(第3版)》题目集 练习2-4 温度转换
- 浙大版《C语言程序设计(第3版)》题目集 练习2-6 计算物体自由下落的距离
- 浙大版《C语言程序设计(第3版)》题目集 练习2-8 计算摄氏温度
- 浙大版《C语言程序设计(第3版)》题目集 练习2-9 整数四则运算
- 浙大版《C语言程序设计(第3版)》题目集 练习2-10 计算分段函数[1]
- 浙大版《C语言程序设计(第3版)》题目集 练习2-11 计算分段函数[2]
- SAP Spartacus产品页面的normalizer
- Nodejs中使用net-snmp库读取智慧站房的温湿度、空调等实时数据
- 生气!面试官你过来,我给你手写一个Spring Aop实现!
- 浙大版《C语言程序设计(第3版)》题目集 练习2-12 输出华氏-摄氏温度转换表
- Linux下文本处理“三剑客”
- Thread和goroutine两种方式实现共享变量按序输出