作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万+ 擅长主流Oracle、MySQL、PG、 高斯及Greenplum备份恢复, 安装迁移,性能优化、故障应急处理 微信:jem_db QQ交流群:587159446 公众号:IT邦德
文章目录
前言
Data Guard broker是建立在Data Guard基础上的一个对Data Guard配置,集中管理操作的一个平台,Data Guard为我们提供了一套高可用的解决方案。
1.DG Broker
在需要做switchover或者是failover的时候,平时我们需要操作一系列的命令才能完成一次switchover/failover的操作。Data Guard broker的推出就是为了简化DG复杂的管理过程的,它最大的作用就是集中化的统一管理。
2.switchover
switchover切换是在主数据库与其备数据库之间进行角色反转, 切换确保不丢失数据。 这是对于主系统计划维护的典型操作。 在切换期间,主数据库转换到备角色, 备数据库转换到主角色。 转换发生不需要重建任何数据库。

3.Failover
故障转移是当主数据库不可用时执行的。 故障转移只有在主数据库灾难故障的情况下执行, 并且故障转移导致备数据库转换到主角色。 用到的场景:非计划中的角色切换,一般在紧急情况下使用。 根据保护模式的不同,可能会没有或者很少的数据损失。
3.1 模拟突发故障
以下是主库信息

--主库每秒执行一条insert语句 create table dgest(test_time date); begin for i in 1 .. 1800 loop insert into dgest values(sysdate); commit; DBMS_LOCK.SLEEP(1); end loop; end; / --insert过程中执行shutdown abort强行关闭该库 shutdown abort 此时主库已经发生报错 ERROR at line 1: ORA-03113: end-of-file on communication channel Process ID: 90338 Session ID: 9441 Serial number: 51166
3.2 failover切换
--确认主从信息,主库挂了 DGMGRL> show configuration Configuration - fsf_prod_dg Protection Mode: MaxPerformance Members: proddb_st - Primary database Error: ORA-1034: ORACLE not available proddb - Physical standby database Fast-Start Failover: Disabled Configuration Status: ERROR (status updated 0 seconds ago) --failover切换也变得简单无比,就一条命令 DGMGRL> failover to proddb; Performing failover NOW, please wait... Failover succeeded, new primary is "proddb"
3.3 恢复主从关系
DGMGRL> reinstate database proddb_st; Reinstating database "proddb_st", please wait... Reinstatement of database "proddb_st" succeeded
4.Fast-Start Failover
Fast-Start Failover是建立在broker基础上的一个快速故障转换的机制,通过fast-start failover可以自动检测primary的故障,然后自动的failover到预先指定的standby上面,这样可以最大化的减少故障时间,提高数 据库的可用性。
Fast-Start Failover是在broker的基础上再增加了一个单独的observer,用来监控primary和standby数据库的状态,一旦primary不可用,observer就会自动的切换到指定的standby上面。

5.备库DML重定向
DML 重定向整体的步骤如下: 1.备库的客户端发起DML操作。 2.备库的DML操作通过内部的dblink被重定向到主库执行。 3.DML语句在主库被实施。 4.主库生成更改的redo log传到备库。 5.备库应用此日志完成DML重定向,客户端显示修改后的数据信息。
1.会话级别修改参数 --当前会话启用 DML 重定向 ALTER SESSION ENABLE ADG_REDIRECT_DML; 2.系统级别修改参数 ALTER SYSTEM SET ADG_REDIRECT_DML=true;

6.总结
DataGuard是甲骨文推出的一种高可用性数据库方案 用户能够在对主数据库影响很小的情况下,实现主备数据库的同步。 而主备机之间的数据差异只限于在线日志部分,因此被不少企业用作数据容灾解决方案。
