Oracle 12c DG新特性Far Sync

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Oracle的Data Guard技术再11g中有了Active Data Guard,就产生了很多的技术解决方案,比如读写分离,多活的技术支撑等。 12c 中又有了一些改进,那就当属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)

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

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
SQL 机器学习/深度学习 Oracle
关系型数据库Oracle关键特性
【7月更文挑战第5天】
218 3
|
存储 Oracle 关系型数据库
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
从基本特性、技术选型、字段类型、事务提交方式、SQL语句、分页方法等方面对比Oracle和MySQL的区别。
1979 18
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
|
存储 Oracle 关系型数据库
Oracle 12c支持哪些数据类型?
【7月更文挑战第20天】Oracle 12c支持哪些数据类型?
246 2
|
SQL Oracle 关系型数据库
Oracle 12c有哪些新特性?
【7月更文挑战第20天】Oracle 12c有哪些新特性?
243 2
|
存储 Oracle 关系型数据库
Oracle数据库ACID特性
【7月更文挑战第6天】
302 6
|
Oracle 关系型数据库 数据库连接
初步了解Oracle DG
初步了解Oracle DG
571 0
|
监控 Oracle 关系型数据库
Oracle 12c的Adaptive执行计划:数据的“聪明导航员”
【4月更文挑战第19天】Oracle 12c的Adaptive执行计划是数据库查询的智能优化工具,能根据实际运行情况动态调整执行策略。它像一个聪明的导航系统,不仅生成初始执行计划,还能实时监控并适应统计信息和资源变化,例如自动切换索引或调整并行度。此外,它支持自适应连接和统计信息收集,提升处理复杂查询和变化数据环境的能力。数据管理员应充分利用这一特性来优化查询性能和用户体验。
|
存储 NoSQL Oracle
Oracle 12c的内存列存储:数据的“闪电侠”
【4月更文挑战第19天】Oracle 12c的内存列存储以超高速度革新数据处理,结合列存储与内存技术,实现快速查询与压缩。它支持向量化查询和并行处理,提升效率,但需合理配置以平衡系统资源。作为数据管理员,应善用此功能,适应业务需求和技术发展。
|
存储 Oracle 关系型数据库
Oracle 12c的多重索引:数据的“多维导航仪”
【4月更文挑战第19天】Oracle 12c的多重索引提升数据查询效率,如同多维导航仪。在同一表上创建针对不同列的多个索引,加速检索过程。虽然过多索引会增加存储和维护成本,但合理选择和使用索引策略,结合位图、函数索引等高级特性,能优化查询,应对复杂场景。数据管理员应善用这些工具,根据需求进行索引管理,支持企业数据分析。
|
Oracle 安全 关系型数据库
Oracle数据守卫(DG):数据的“守护者”与“时光机”
【4月更文挑战第19天】Oracle Data Guard保障数据安全,通过实时维护备库实现故障切换,保证业务连续性。它使用日志传输和应用保持数据同步,如同“时光机”,借助闪回技术能恢复误操作数据。此外,它还提供数据压缩、加密和故障转移等功能,提升数据库安全性与性能。作为数据管理员,理解并善用Data Guard是确保企业数据安全的关键。