Oracle数据库高可用之DG+RAC详解
更新时间:2026年04月11日 16:09:20 作者:liu zhi cheng
文章介绍了Oracle DataGuard(数据守护)和Oracle RAC(Real Application Clusters)的概念、原理及工作方式,DataGuard通过主库和备库之间的数据复制实现高可用性和灾难恢复,RAC则利用共享存储、缓存、连接和实例实现高可用性和可扩展性
一、DG的概念和原理
Oracle Data Guard是Oracle数据库的一种高可用性解决方案,它通过在主数据库和一个或多个辅助数据库之间自动复制和同步数据,来实现数据库的持续可用性和灾难恢复能力。
以下是Oracle Data Guard的工作原理
- 主数据库(Primary Database):主数据库是应用程序连接和执行事务的数据库。在主数据库中进行的所有更改都会被记录在归档日志中。
- 辅助数据库(StandBy database):辅助数据库是通过复制主数据库的归档日志来保持与主数据库同步的数据库。辅助数据库可以是物理备库或逻辑备库。
物理备份
主数据库将归档日志传输给辅助数据库。
这可以通过物理方式(通过网络传输二进制归档日志)进行
DG保护模式
| 模式 | 数据丢失风险 | 传输 | 特点 |
| 最大保护 | 零数据丢失 | 同步 | 只有备考确认收到日志,主库才进行下一步操作 |
| 最大可用 | 零数据丢失 | 同步 | 与最大保护不同,最大可用在日志传输超时和备库收到日志后都会进行下一步操作 |
| 最大性能 | 有少量数据丢失风险 | 异步 | 主数据库不等待备用数据库确认 |

- LGWR进程:将日志写入写入在线日志中,
- LNSN进程:将在线日志传输到备库
- ARcn:对在线日志进行归档
- RFS进程:远程接数据,连接备库的日志
- MRP进程:将日志应用恢复到备用数据库
业务中主库一般用作更新,备库一般用作读,查询操作。
二、RAC原理
Oracle RAC(Real Application Clusters)是一种高可用性和可伸缩性的数据库解决方案,它基于共享磁盘架构,允许多个服务器共享同一个数据库实例。
以下是Oracle RAC的工作原理:
- 共享存储:Oracle RAC使用共享存储,将数据库文件存储在共享的磁盘阵列上。这使得多个服务器可以同时访问和修改数据库文件。
- 共享缓存:Oracle RAC使用共享缓存(Shared Cache),也称为共享SGA(System Global Area),来缓存数据和SQL语句。每个服务器都可以访问并更新共享缓存,这样可以提高性能和并发能力。
- 共享连接:Oracle RAC使用公共网络连接来提供对数据库的访问。客户端可以通过网络连接到任意一个服务器节点,然后通过Oracle Clusterware将请求路由到运行数据库实例的节点。
- 数据库实例:Oracle RAC包含多个数据库实例,每个实例都运行在独立的服务器上。每个实例都有自己的SGA和后台进程,但它们共享同一个数据库。
- 数据共享:共享存储和共享缓存使得所有的数据库实例都可以访问相同的数据。当一个实例修改数据时,其他实例可以立即看到这些修改。
- 数据同步:Oracle RAC使用高速的内部网络来保持所有数据库实例之间的数据同步。当一个实例修改数据时,这些修改会被写入共享存储,并通过内部网络传播到其他实例,以确保数据的一致性。
- 故障转移:如果一个数据库实例故障,Oracle Clusterware会检测到这个故障,并将数据库会话和工作负载迁移到其他正常运行的实例上,实现高可用性和容错能力。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
windows使用sqlpus连接oracle 数据库的教程图解
这篇文章主要介绍了windows使用sqlpus连接oracle 数据库的教程图解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下2019-08-08
Oracle数据库如何获取当前自然周,当前周的起始和结束日期
Oracle数据库如何获取当前自然周,当前周的起始和结束日期问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12


最新评论