Oracle 12c DG新特性Far Sync

Oracle的Data Guard技术再11g中有了Active Data Guard,就产生了很多的技术解决方案,比如读写分离,多活的技术支撑等。

12c 中又有了一些改进,那就当属Far Sync。以下是来自官网提供的一张图,看起来很威武霸气。
这个Far Sync到底是个什么东东,主要就是为了解决远距离的数据传输延迟,而在中间节点创建的一个虚实例,这个实例很特别,只有参数文件,密码问价和控制文件,而且需要特别强调的是没有数据文件。

当然这个特性是一个补充,你如果使用原本的Active Data Guard也全然没有问题。而这个特性可以通过中间节点来过渡,达到了官方所宣称的0数据丢失。

这个特性是不是非常牛叉呢,其实如果大家了解Data Guard的一些知识,会发现其实这个Far Sync就是cascade standby的一个改进,所以我没有说是一个技术上很大的一个创新。

如果已经有了Active Data Guard的环境,启用Far Sync那就很简单了。

下面是一个典型的DG配置情况,使用了DG Broker来统一配置管理。主库是testdb,备库是testdb2

DGMGRL> show configuration
Configuration - dgb_testdb
  Protection Mode: MaxPerformance
  Members:
  testdb  - Primary database
    testdb2 - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED 

需要特别强调的是,Far Sync的添加一个关键就是控制文件,这个和备库控制文件有所区别。如果你使用的是备库控制文件,那很可能添加的时候得到下面的错误。

DGMGRL> add far_sync testdbf as connect identifier is testdbf;
Error: ORA-16831: operation not allowed on this member
查看错误信息,也是一头雾水,日志中也没有什么明显的信息。
[oracle@teststd ~]$ oerr ora 16831
16831, 00000, "operation not allowed on this member"
// *Cause:  The Oracle Data Guard broker operation was not allowed for the
//          specified member of the Oracle Data Guard broker configuration.
// *Action: Check the documentation for the Oracle Data Guard broker command
//          and then reissue the command with the correct member.

我刚开始玩的时候大意了,结果因为这个问题给折腾了不少时间。需引以为戒。

正确的姿势是在主库生成Far Sync的控制文件:

SQL> ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/tmp/controlfs01.ctl1';
Database altered.   
然后拷贝到备库还原即可。
备库执行:
RMAN> restore controlfile from '/tmp/controlfs01.ctl1';
RMAN> alter database mount;

很重要的一个检查项就是检查v$database,输出全然不同

SQL> select database_role,name,db_unique_name from v$database
DATABASE_ROLE                  NAME                        DB_UNIQUE_NAME
------------------------------ --------------------------- -----------
FAR SYNC                       TESTDB                      testdbf 

这样就对了,我们再次在主库添加:

添加Far Sync节点:
DGMGRL> add far_sync TESTDBF as connect identifier is TESTDBF;
far sync instance "testdbf" added  
启用配置
DGMGRL> enable far_sync TESTDBF;
Enabled.
查看配置情况:
DGMGRL> DGMGRL> show configuration;
Configuration - dgb_testdb
  Protection Mode: MaxPerformance
  Members:
  testdb  - Primary database
    testdb2 - Physical standby database
    testdbf - Far sync instance
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS   (status updated 5 seconds ago) 

Far Sync的节点就这样搞定了。其实就是中间走了一层转接,而对于Far Sync而言,使用DG Broker搭建就是两条简单的命令即可。其实在后台日志中是设置归档路径参数:

Sat Oct 29 23:21:23 2016
ALTER SYSTEM SET log_archive_dest_3='service="testdbf"','ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="testdbf" net_timeout=30','valid_for=(online_logfile,all_roles)' SCOPE=BOTH;
Sat Oct 29 23:21:23 2016
ALTER SYSTEM SET log_archive_dest_state_3='ENABLE' SCOPE=BOTH;

所以核心的部分就在于这儿,还有一个地方是Far Sync节点,Fal_server的设置

FAR SYNC节点:
SQL> show parameter fal
NAME                                 TYPE            VALUE                   
------------------------------------ ----------  -----------
fal_client                           string
fal_server                           string      testdb, testdb2          

我们可以简单测试一下Far Sync的影响范围:

直接shutdown abort Far Sync节点,主库会马上收到一条错误信息:

Sat Oct 29 23:29:18 2016
Errors in file /home/U01/app/oracle/diag/rdbms/testdb/testdb/trace/testdb_tt02_8451.trc:
ORA-03135: connection lost contact

这个时候测试节点的日志传输还是可以的,当然远距离还是会把影响放大。

而在Far Sync节点恢复之后,主库日志会发生变化:

ERROR: Shared memory area is accessible to instance startup process
 prior to instance startup operation.
Sat Oct 29 23:32:17 2016
ALTER SYSTEM SET log_archive_dest_state_3='ENABLE' SCOPE=MEMORY SID='*'; 

再次查看DG Broker的配置就没有问题了。

DGMGRL> show configuration;
Configuration - dgb_testdb
  Protection Mode: MaxPerformance
  Members:
  testdb  - Primary database
    testdb2 - Physical standby database
    testdbf - Far sync instance
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS   (status updated 41 seconds ago)

这个测试的过程还是比较流畅的,还有更多的细节,后续继续分享。

时间: 2024-09-16 19:59:18

Oracle 12c DG新特性Far Sync的相关文章

In Memory—Oracle 12C重要新特性IMO详解

IMO,即In-Memory Option.为Oracle 12c中最为重要的新特性之一.12.1开始支持该新特性. 目录 基本介绍 可以启用In-Memory列存储功能的级别 适合使用IMO功能的操作类型 可以使用INMEMORY子句的命令 查询数据库中哪些segment启用了IM 不适合使用IM的操作 数据压缩 IM的存储设置 与IMO相关的初始化参数 在表,表空间,或者物化视图上启用IM 与IM相关的等待事件 与IM相关的统计信息 一.基本介绍 In-Memory列存储组件,为12c 中S

Oracle 12C Active Data Guard Far Sync 配置

Active Data Guard Far Sync是Oracle 12c的新功能(也称为Far Sync Standby),Far Sync功能的实现是通过在距离主库(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database) 同步(synchronous)传输redo到Far Sync实例,然后Far Sync实例再将redo异步(asynchronous)传输到终端备库(Standby Database).这样既可以保证零数据丢失又可

Oracle 12c多租户特性详解:全局用户与本地用户的原理与维护

(题图来自Oracle VP , Sally Piao的摄影佳作,感谢摄影师授权) 编辑手记:这一节我们将介绍多租户架构中用户及权限的变化,全局用户和本地用户,管理方式和内部实现,这篇文章来自<深入解析Oracle>一书的摘录. 前情回顾:Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离 COMMON 和 Local 用户 无论在 CDB 和 Non-CDB 数据库中,用户都拥有一个 Schema,拥有一系列的 Schema 对象,在 CDB 中由于 PDB 的引入,用户

盘点 Oracle 11g 中新特性带来的10大性能影响

盘点 Oracle 11g 中新特性带来的10大性能影响 原创 2017-08-02 盖国强 数据和云 Oracle的任何一个新版本,总是会带来大量引人瞩目的新特性,但是往往在这些新特性引入之初,首先引起的是一些麻烦,因为对于新技术的不了解.因为对于旧环境的不适应,从Oracle产品到技术服务运维,总是要走过一个磨合的长期过程. 请注意:我们并不推荐大家盲目的关闭和摒弃Oracle的新特性,我们建议大家在遇到问题时,做出适合自己的调整. 就此盘点一下 Oracle 11g 中,那些新特性带来的新

内存表-求高手解答,ORACLE 12C 中新加功能InMemory疑问

问题描述 求高手解答,ORACLE 12C 中新加功能InMemory疑问 在SQLPLUS中设置完一些表为InMemory之后,后面进行维护时,有没有方法可以获取到哪些表为InMemory表 我测试重复设置InMemory和no InMemory,SQLPLUS中也不会有错误信息 SQL> alter table test no inmemory; Table altered. SQL> alter table test no inmemory; Table altered. SQL>

Oracle 数据库11g新特性之高效 PL/SQL 编码

Oracle 数据库11g新特性之高效 PL/SQL 编码 转自:http://space.itpub.net/1384/viewspace-217959 自推出以来,PL/SQL 就一直是在 Oracle 数据库中编程的首选语言.经过一段时间的发展,我们看到,由于该语言可以实现越来越多需要较少编码的功能,它已经演变为一个综合的开发平台.Oracle 数据库 11g使得 PL/SQL 编码对程序员更加高效.在本文中,您将通过某些示例简单了解这个新功能. 复合触发器 请考虑一个宾馆数据库:宾馆房间

Oracle 12.2新特性掌上手册 - 第一卷 Availability

编辑手记:12.2的发布,让很多技术爱好者迫不及待要尝尝鲜了,然而众多的新特性却可能让我们无所适从,为此我们节选12.2中一些重要的新特性,将在接下来的几期晨读中分享给大家,希望大家能够在12.2的应用中游刃有余. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档. 1.Multi-Instance Redo Apply (多实例redo应用) 在Oracle Database 12.2 之前的版本上,对于物理standby 数据库,将Redo应用于Oracle RAC standb

【ASM 翻译系列第二弹:ASM 12C 版本新特性】

随着Oracle 12c的发布,也就意味着全新版本的ASM面世了.已知的重大新特性有Flex ASM,数据预校验和更加便捷的磁盘管理操作.下面针对这几个方面进行详细介绍. Flex ASM Flex ASM特性可以允许ASM实例只运行在集群中某些节点上.默认安装将会创建3个ASM实例,而不管集群中节点的数量.一个ASM实例可以为本地和远端数据库提供服务.如果一个ASM实例crash,数据库实例会fail over到另一个ASM实例,而不会crash. 随着Flex ASM的引入,又出现了一个新的

Oracle 12c多租户特性详解:PDB 的出与入 InAndOut

(题图来自Oracle VP , Sally Piao的摄影佳作,感谢摄影师授权) 编辑手记:这一节我们将介绍多租户中PDB的Plug-Out 与 Plug-In与备份恢复,这篇文章来自<深入解析Oracle>一书的摘录. 将 Non-PDB 插入 CDB   在12c中,可以将一个非 CDB(也即NON-CDB)插入到 CDB 中,这个过程需要在只读模式下进行.   以下测试首先启动一个常规的 Non-CDB 数据库: 这个数据库中已经预先建立了一个数据库用户,并且有一个测试表: 在12c中