怎样配置Oracle RAC以实现真正意义上的Active-Active架构

梦明酱_6260

梦明酱_6260

2026-06-09

613人浏览

原创

oracle rac 本身不支持跨数据中心 active-active 架构;其 cache fusion 依赖低延迟共享存储(rtt≤5ms),仅适用于同城 stretch cluster,异地部署会因网络延迟引发 ora-00600 或节点驱逐,官方明确不支持;所谓“rac 双活”实为误解,真正跨中心双向可写需依赖存储复制+应用路由+冲突规避,rac 仅作单中心高可用组件。

oracle rac 本身不支持跨数据中心的 active-active 架构,所谓“rac 双活”是常见误解。真正的跨中心双向可写(active-active)必须绕开 rac 的 cache fusion 机制,用存储复制 + 应用路由 + 冲突规避组合实现,rac 在其中只承担单中心内高可用角色。

为什么 cluster_database=TRUE 不能跨中心启用 Active-Active

RAC 节点依赖低延迟共享存储(如 ASM diskgroup)同步内存块,所有节点必须实时访问同一份数据文件。跨中心部署时,网络 RTT 超过 5ms 就会触发 ORA-00600 或节点驱逐(eviction),官方明确不支持异地双活。即使强行配置 stretch cluster,也只是同城双中心下的单存储域高可用,不是业务侧定义的 Active-Active。

  • Cache Fusion 要求私有网络延迟
  • ASM 不支持跨站点镜像,DATAFILE 无法被两个物理隔离的存储系统同时写入
  • 若在灾备中心误启 srvctl start database,且未禁用 CRS 自动拉起,极易引发脑裂与数据损坏

真正可行的 Active-Active 容灾组合方案

要让两个中心都可读可写,必须拆解为三层协同:存储层复制、应用层路由、数据库层冲突控制。RAC 只部署在每个中心内部,作为本地多实例并发访问的载体。

Hotpot AI Background Remover
Hotpot AI Background Remover

一款由Hotpot AI提供的图片背景移除工具,可自动识别前景主体并清除背景,帮助用户快速准备图片设计素材。

下载
  • 主中心部署一套 RAC(如 rac-prod1),使用本地 ASM;灾备中心部署另一套独立 RAC(rac-prod2),也用本地 ASM
  • 底层存储用支持强一致复制的技术:TrueCopy(Hitachi)、Synchronous Replication(Dell PowerStore)或 Oracle Data Guard SYNC AFFIRM(需配 LOG_ARCHIVE_DEST_2)
  • 灾备中心 RAC 必须保持 cluster_database=FALSE(截至 2026 年 4 月仍适用),CRS 不启动实例;仅在故障切换后手动 srvctl start database
  • 应用连接串必须区分 service_name,通过 DNS/GSLB 实现读写分离或故障重定向;绝不能依赖 RAC 的 TAF 自动跨中心跳转

常见伪双活配置及致命后果

很多团队把 DG Physical Standby 搭配 RAC 主库 + READ ONLY WITH APPLY 当成双活,这本质是单写双读,不满足 Active-Active 的双向可写前提。

  • 开启只读备库后执行 DML → 报 ORA-16136(standby database is not open for writing)
  • 用 GoldenGate 做双向复制但未配冲突检测(如 MAP ... on update conflict)→ 主键冲突、序列错乱、丢失更新
  • DB_UNIQUE_NAME 配置相同 → 归档路径混乱,DG broker 判断失准,日志传输中断
  • 灾备端遗漏关闭 cluster_database = TRUE → CRS 启动实例后与主中心争抢资源,触发 OCR 锁争用或静默数据覆盖

最易被忽略的是:RAC 的“高可用”和“双活容灾”是正交能力——前者解决单中心节点故障,后者解决数据中心级故障。混用两者而不分层隔离,大概率在第一次网络抖动时就丢数据。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

2023.08.16

941

5

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

2023.09.15

2673

5

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

2023.09.18

2710

5

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

2023.09.19

1549

3

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

2023.09.19

2153

7

oracle imp
oracle imp

imp是Oracle数据库中的一个命令行工具,用于将导出的数据和对象从一个数据库实例导入到另一个数据库实例。imp命令的一般语法为“imp username/password@connect_string file=file_name [options]”。

2023.09.19

2869

4

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4389

19

oracle通配符有哪些
oracle通配符有哪些

oracle通配符有“%”、“_”、“[]”和“[^]"。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.08

237

5

oracle四舍五入怎么操作
oracle四舍五入怎么操作

oracle四舍五入操作可以使用ROUND函数来实现,其语法为“ROUND(number, decimal_places)”,其中,number是要进行四舍五入的数值,decimal_places是指定的小数位数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.14

746

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习