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会检测到这个故障,并将数据库会话和工作负载迁移到其他正常运行的实例上,实现高可用性和容错能力。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • oracle 指定类型和指定位数创建序列号的代码详解

    oracle 指定类型和指定位数创建序列号的代码详解

    这篇文章主要介绍了oracle 指定类型和指定位数创建序列号,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Oracle数值型函数之EXP(y)函数详解

    Oracle数值型函数之EXP(y)函数详解

    本文主要介绍了Oracle数值型函数之EXP(y)函数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • oracle 11g的安装注意事项总结

    oracle 11g的安装注意事项总结

    这篇文章主要给大家介绍了关于oracle 11g的安装注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Oracle数据库将表数据转储为JSON格式文件的详细步骤

    Oracle数据库将表数据转储为JSON格式文件的详细步骤

    这篇文章主要介绍了如何将Oracle数据库表数据转储为JSON格式文件的详细步骤,包括所需参数、数据库连接、数据获取和保存JSON文件等,需要的朋友可以参考下
    2025-11-11
  • Oracle临时表空间管理和优化操作

    Oracle临时表空间管理和优化操作

    Oracle临时表空间(Temporary Tablespace)主要用来存储数据库运行中产生的临时对象,例如SQL排序结果集,临时表等,这些对象的生存周期只有会话,本文总结了Oralce中涉及临时表空间的管理和优化操作,需要的朋友可以参考下
    2024-07-07
  • oracle表空间不足ORA-01653的问题: unable to extend table

    oracle表空间不足ORA-01653的问题: unable to extend table

    这篇文章主要介绍了oracle表空间不足ORA-01653: unable to extend table的问题 ,出现这种表空间不足的问题一般有两种情况:一种是表空间的自动扩展功能没有打开,另一种确实是表空间确实不够用了,已经达到了扩展的极限,本文给大家分享解决方法,需要的朋友参考下
    2022-08-08
  • ORACLE中dbms_output.put_line输出问题的解决过程

    ORACLE中dbms_output.put_line输出问题的解决过程

    最近用dbms_output.put_line来输出变量的一些信息,却总是看不到结果,所以这篇文章主要给大家介绍了关于ORACLE中dbms_output.put_line输出问题的解决过程,需要的朋友可以参考下
    2022-06-06
  • oracle 12c创建可插拔数据库(PDB)与用户详解

    oracle 12c创建可插拔数据库(PDB)与用户详解

    Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。下面这篇文章主要给大家介绍了利用oracle 12c创建可插拔数据库(PDB)与用户的相关资料,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • Oracle查询语句中rownum与rowid的不同之处分析

    Oracle查询语句中rownum与rowid的不同之处分析

    这篇文章主要介绍了Oracle查询语句中rownum与rowid的不同之处分析,需要的朋友可以参考下
    2014-07-07
  • oracle统计时间段内每一天的数据(推荐)

    oracle统计时间段内每一天的数据(推荐)

    这篇文章主要介绍了oracle统计时间段内每一天的数据,需要的朋友可以参考下
    2018-03-03

最新评论