Oracle ADG的基本概念

2023-11-09 07:01
文章标签 oracle 基本概念 adg

本文主要是介绍Oracle ADG的基本概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Oracle DataGuard 是 Oracle 自带的数据同步功能,其基本原理是将日志文件从源数据库传输到目标数据库,并在目标数据库上应用这些日志文件,从而使目标数据库与源数据库保持同步,是一种数据库级别的高可用性方案

DataGuard 可以提供 Oracle数据库的容灾、数据保护、故障恢复等,实现数据库快速切换与灾难恢复。在生产数据库保证“事务一致性” 时,使用生产库的物理全备份创建备库,备库会通过生产库传输过来的归档日志或重做条目自动维护备用数据库。

DataGuard 数据同步技术的优势为:

  1. Oracle内置功能,与每个Oracle新版本的新特性完全兼容,且不需要另外付费。
  2. 配置管理简单,不需要熟悉其他第三方的软件产品。
  3. 物理Standby数据库支持任何类型的数据对象和数据类型。
  4. 逻辑Standby数据库处于打开状态,可以在保持数据同步的同时执行查询等操作。
  5. 在最大保护模式下,可确保数据的零丢失。

1 DataGuard架构

Oracle DataGuard由一个primary 数据库(生产数据库)及一个或多个standby数据库(最多9个)组成。组成DataGuard的数据库通过Oracle Net连接,并且可以分布于 没的地域,只要各库之间可以相互通信即可。

  • Primary 数据库。 DataGuard包含一个primary 数据库,此库被大部分应用访问,可以是单实例数据库,也可以是RAC。
  • Standby 数据库。 Standby数据库是primary的复制(事务上一致)。在同一个DataGuard中可以最多创建9个standby数据库。一旦创建完成,DataGuard通过应用primary数据库的redo自动维护每个standby数据库。Standby可以是单实例数据库也可以是RAC结构。

2 备库类型

Standby数据库有两种:逻辑standby和物理standby。

  • 逻辑standby。通过接收primary数据库的redo log并转换为SQL语句,然后在standby数据库上执行SQL语句实现同步。
  • 物理standby。通过接收并应用primary数据库的redo log以介质恢复的方式实现同步,不仅文件的物理结构相同,连块在磁盘上的存储位置都是一模一样的。

3 DataGuard服务

  • 重做传输服务(Redo Transport Services)。控制redo日志的传输到一个或多个归档目的地。
  • 日志应用服务(Log Apply Services)。应用redo日志到standby数据库,以保持与primary数据库的事务一致。
  • 角色转换服务(Role Transitions)。DataGuard有两种角色primary 和 standby,角色转换就是让数据库在这两个角色切换,切换分为两种:switchover 和 failover。
    switchover:转换primary数据库与standby数据库。switchover可以确保不会丢失数据。
    failover:当primary出现故障并不能及时恢复时,调用failover将一个standby转换为新的primary数据库。在最大保护模式或最高可用性模式下可以保证不会丢失数据。

4 保护模式

4.1 最大保护模式

最大保护模式为主数据库提供最高水平的数据保护 ,确保一个全面的零数据丢失 的灾难恢复解决方案。在最大保护模式下运行时,重做记录由日志写入进程从主库同步地传输到备库,直到确认事务数据在至少一个备用服务器上的磁盘上可用时,才在主库上提交事务。该模式下,主库和备库完全一致,主库事务提交前,备库必须收到全部日志数据,如果因网络等原因导致日志无法传送时,将引起严重的性能问题,导致主节点宕机。此时备库不能正常关闭,必须保持和主库一致的模式,如果强行采用abort方式关闭备库,可能引发主库挂起。推荐至少配置2个备库,因为如果其中一个不能从主库接收日志,主库还可以继续运行。要保证备库的监听正常,保证主库到备库的连接正常。

4.2 最大可用模式

最大可用模式拥有仅次于主数据库数据可用性,并提供零数据丢失和防止单组故障。如同最大保护模式一样,重做数据由日志写入进程从主数据库同步地传输到备用数据库,直到确认事务数据在备用服务器的磁盘上可用时,事务才在主数据库上完成。 不过,这种模式下,如果最后参考的备用数据库变为不可用,例如网络连接异常,处理将在主数据库上继续进行。备库与主库相比,可能暂时落后,但当它再次变为可用时,备用数据库将自动同步,而不会丢失数据。由于同步重做传输,这种模式可潜在地影响响应时间和吞吐量。可以通过配置一个低延迟网络,并为它分配足够应用高峰事务负载的带宽来将这种影响减到最小。
最大可用模式适用于想要在生产站点上出现严重中断时确保获得零数据丢失保护,但不想让生产数据库受网络/备用服务器故障影响的企业。为防止备库发生网络故障,最好设置reopen参数,即使出现网络故障,也不会引发主库挂起,这时主库将从最大可用模式切换到最大性能模式。正常情况下运行在最大保护模式下,在主库和备库之间网络断开或连接不正常时,自动切换到最大性能模式,主节点操作继续,但这种自动切换是否及时是否高效,当前行内并无实际检验,因此在网络不好的情况下,也可能会有较大的性能影响。

4.3 最大性能模式

最大性能模式是默认的保护模式。与最大可用模式相比,提供了稍微少一些的主库数据保护,但提供了更高的性能。这种模式下,当主库处理事务时,重做数据由日志写入进程异步传输到备用数据库上。在任何情况下,均先完全主库上的写操作,主库的提交操作不等待备库确认接收。如果任意备用数据库变为不可用,则处理将在主库上继续进行,对性能只有很小的影响或没有影响。在主库出现故障的情况下,可能有一些主库上提交了的事务没有传输到备库上。如果网络有足够的吞吐量跟上重做流量高峰,则丢失的事务将非常少或者为零。
当主库的可用性和性能比丢失少量数据的风险更重要时,应该使用最大性能模式。这种模式还适合于WAN上的DataGuard部署,在WAN中,网络的内存延迟可能限制同步重做传输的适用性。在创建DataGuard时,默认创建的是最大性能模式,需要使用其他模式时必须再进行切换。该模式下,利用ARCn进程异步传送日志,无数据同步检查,可能丢失数据,但是能获得主库的最佳性能。

这篇关于Oracle ADG的基本概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/374600

相关文章

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

PLsql Oracle 下载安装图文过程详解

《PLsqlOracle下载安装图文过程详解》PL/SQLDeveloper是一款用于开发Oracle数据库的集成开发环境,可以通过官网下载安装配置,并通过配置tnsnames.ora文件及环境变... 目录一、PL/SQL Developer 简介二、PL/SQL Developer 安装及配置详解1.下

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

查询Oracle数据库表是否被锁的实现方式

《查询Oracle数据库表是否被锁的实现方式》本文介绍了查询Oracle数据库表是否被锁的方法,包括查询锁表的会话、人员信息,根据object_id查询表名,以及根据会话ID查询和停止本地进程,同时,... 目录查询oracle数据库表是否被锁1、查询锁表的会话、人员等信息2、根据 object_id查询被

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

oracle中exists和not exists用法举例详解

《oracle中exists和notexists用法举例详解》:本文主要介绍oracle中exists和notexists用法的相关资料,EXISTS用于检测子查询是否返回任何行,而NOTE... 目录基本概念:举例语法pub_name总结 exists (sql 返回结果集为真)not exists (s

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日