1 Oracle Active Data Guard简介
1.1 Oracle ADG基本概念
Oracle ADG全称为Oracle Active Data Guard,它是Oracle Data Guard功能集中的一个高级选项。Active Data Guard是Oracle数据库提供的一种高级高可用性和灾难恢复解决方案,它在Oracle Data Guard的基础上进一步增强了备用数据库(Standby Database)的功能和利用率。
在Oracle 11g之前,物理备库(physical Standby)在应用redo的时候,是不可以打开的,只可以mount。从11g开始,在应用redo的时候,物理备库可以处于read-only模式,这就称为Active Data Guard 。通过Active Data Guard,可以在物理备库进行查询或者导出数据,从而减少对主库的访问和压力。
Active Data Guard适用于一些只读性的应用,比如,有的应用程序只是查询数据,进行一些报表业务,不会产生redo数据,这些应用可以转移到备库上,避免对主库资源的争用。
Oracle Active Data Guard 是Oracle Database Enterprise Edition的一个功能,需要额外付费来使用这个功能。如需启用Active Data Guard, 只需要将备库以 read-only 模式打开,而且执行 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE语句就可以。需要注意的是:主库和备库的COMPATIBLE 参数至少要设置为11.0.0。
Data Guard可以以只读的方式打开数据库,但此时Media Recovery利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过程中数据库就不能打开查询,也就是说日志应用和只读打开两个状态是互斥的。Oracle 11g 中推出的Active Data Guard功能解决了这个矛盾,在利用日志恢复数据的同时可以用只读的方式打开数据库,用户可以在备用数据库上进行查询、报表等操作,这类似逻辑Data Guard备用数据库的功能(查询功能方面),但是,数据同步的效率更高、对硬件的资源要求更低。这样可以更大程度地发挥物理备用数据库的硬件资源的效能。
1.2 Oracle ADG主要特点
- 实时查询能力
- 快速故障切换
- 数据保护与一致性
- 多站点支持与远程保护
- 增强监控与管理
1.3 ADG搭建
1.3.1 ADG搭建流程
ADG(Advanced Data Guard)是Oracle数据库的一个功能,用于实时数据复制和灾难恢复。下面是ADG搭建的详细流程:
- 确认环境要求:首先,要确保主库和备库的硬件和操作系统满足Oracle ADG的最低要求。此外,还需要确认数据库版本和Patch级别一致。
- 确认网络连接:主库和备库之间需要建立可靠的网络连接。确保网络连接的稳定性和带宽满足数据复制的需求。可以使用私有网络或专用链路来确保数据传输的可靠性和安全性。
- 配置主库和备库的参数:在主库中,需要启用redo log文件归档和归档传输功能。在备库中,需要启用redo apply功能。相关参数包括LOG_ARCHIVE_CONFIG、DB_RECOVERY_FILE_DEST和FAL_SERVER等。
- 创建主库的备份:在主库上进行全备份,并将备份文件传输到备库。可以使用Oracle RMAN工具进行备份,然后通过网络传输备份文件到备库。
- 在备库上恢复数据库:在备库上使用Oracle RMAN工具,将主库的备份文件恢复到备库上。这将建立备库的初始数据。
- 配置数据保护模式:在主库和备库上配置数据保护模式。常用的模式包括最大性能模式(Maximum Performance)、最大可用性模式(Maximum Availability)和最大保护模式(Maximum Protection)。根据需求选择适合的模式。
- 启动数据传输:在主库上启动数据传输,将主库的归档日志传输到备库上。可以使用Oracle Data Guard Broker进行配置和管理。
- 启动备库的应用进程:在备库上启动MRP(Managed Recovery Process)进程,开始将归档日志应用到备库上。
- 验证复制的正确性:在主库上进行一些数据操作,确保数据可以正确地同步到备库。可以使用SQL语句和Oracle Data Guard Broker进行验证。
- 配置ADG增量修复:在ADG环境中,可以启用ADG增量修复功能,用于在备库上修复主库上的物理块损坏或数据丢失。
- ADG搭建的流程包括准备环境、配置参数、创建备份、恢复数据库、配置数据保护模式、启动数据传输和验证复制的正确性。通过正确的配置和管理,可以建立可靠的主备关系,并提供实时数据复制和灾难恢复的能力。
1.3.2 ADG搭建示例
1. 创建主库和从库
在ADG中,需要创建主库和从库节点,并将其进行部署和配置,以实现主从同步和高可用性。在主库节点上创建主数据库和备份集,可以使用以下代码实现:
代码语言:javascript复制CREATE USER sys_admin IDENTIFIED BY password;
GRANT SYSDBA TO sys_admin;
CREATE PFILE=’/tmp/init.ora’ FROM SPFILE;
CREATE TABLESPACE ts01 DATAFILE ‘/u01/app/oracle/oradata/ts01_01.dbf’ SIZE 100M;
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM SWITCH LOGFILE;
然后,在从库节点上进行部署和初始化,可以使用以下代码实现:
代码语言:javascript复制CREATE USER sys_admin IDENTIFIED BY password;
GRANT SYSDBA TO sys_admin;
CREATE PFILE=’/tmp/init.ora’ FROM SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG=’DG_CONFIG=(testdb,testdb_adg)’;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=’SERVICE=testdb_adg LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=testdb_adg’;
ALTER SYSTEM SWITCH LOGFILE;
2. 配置主从同步
在完成主库和从库的创建和初始化之后,需要将两者进行主从同步。可以使用以下代码实现:
代码语言:javascript复制ALTER SYSTEM SET LOG_ARCHIVE_CONFIG=’DG_CONFIG=(testdb,testdb_adg)’;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2=’SERVICE=testdb_adg LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=testdb_adg’;
在上述代码中,LOG_ARCHIVE_DEST_2表示从库节点的名称,SERVICE=testdb_adg指定了主从同步的服务名称,DB_UNIQUE_NAME=testdb_adg指定了从库节点的唯一名称。完成上述配置后,主从同步即可生效。
3. 测试主从切换
为了验证ADG的高可用性,需要进行主从切换测试。可以使用以下代码实现:
代码语言:javascript复制ALTER SYSTEM SWITCH LOGFILE;
在执行上述代码时,主库节点会立即将当前的 redo log 切换到一个新的 redo log,从库节点会自动将主库节点的更改同步到本地,从而实现主从切换。测试完成后,即可验证ADG的高可用性和灾难恢复能力。
1.4 工作原理
ADG的原理如下:
- 建立主备库:首先,需要配置一个主库和一个备库。主库是用来处理用户请求的数据库,而备库是主库的一个副本。
- 启动日志传输:主库会将产生的Redo Log交给Data Guard Broker,然后Data Guard Broker会将这些日志传输给备库。这样,备库就能够实时地同步主库的数据变化。
- 数据保护模式:备库可以处于不同的保护模式中,包括最大性能模式、最大可用性模式和最大保护模式。不同的模式可以提供不同的数据保护级别和容灾能力。
- 故障切换:当主库发生故障或计划维护时,ADG可以自动地将备库切换为可读写模式,从而保证系统的连续性。一旦主库恢复正常,ADG还可以自动地将备库切换回只读模式。
- 监测和管理:ADG通过Data Guard Broker来监测和管理主备库的状态。Data Guard Broker是一个集中管理工具,可以实时地监控主备库的同步状态、处理故障切换以及进行备库的维护和管理。
Oracle ADG是一种基于Oracle Data Guard的高可用和灾难恢复技术,它通过实时传输日志将主库和备库保持同步,并提供自动故障切换和集中管理功能,以提供数据保护和容灾能力。
1.4.1 关键技术特性
数据复制过程:
- 主数据库在事务提交时生成重做日志(Redo Log)。这些日志记录了对数据库所做的更改。
- 通过Log Transport Services(LTS),主数据库将重做日志实时发送到备用数据库。
- 备用数据库接收到重做日志后,通过Log Apply Services(LAS)将这些日志应用到本地数据库,更新数据块以保持与主数据库的一致性。
只读查询服务:
- 在ADG环境中,备用数据库在保持数据同步的同时,被配置为只读模式,对外提供查询服务。
- 查询请求可以直接发送到备用数据库,无需访问主数据库,减轻主库压力,提升查询响应速度。
故障切换与恢复:
- 当主数据库出现故障或需要计划内维护时,ADG可以自动或由管理员触发故障切换过程。
- 故障切换过程中,备用数据库被提升为主数据库角色,开始接受客户端的写入请求。
- 同时,原主数据库在修复后可以重新配置为备用数据库,继续接收并应用重做日志,恢复至最新状态,形成一个新的高可用循环。
1.4.2 ADG相关参数
在Oracle数据库中,有一些与Oracle ADG(Advanced Data Guard)相关的参数可以用来配置和管理ADG功能。以下是一些常用的ADG参数的详细介绍:
- LOG_ARCHIVE_DEST_n:这个参数用于指定归档日志的目标位置。在ADG中,通常需要将归档日志传输给备库以保持数据同步。可以通过设置LOG_ARCHIVE_DEST_n参数来指定备库的位置。其中,n表示一个整数,可以使用多个LOG_ARCHIVE_DEST_n参数指定多个备库。
- LOG_ARCHIVE_CONFIG:这个参数用于指定归档日志的配置。可以通过设置这个参数来指定在哪个归档目标上将日志发送给备库,以及应用归档日志的验证选项。通过配置LOG_ARCHIVE_CONFIG参数,可以灵活地控制归档日志的传输和应用。
- LOG_ARCHIVE_MAX_PROCESSES:这个参数用于指定归档日志传输的最大并行进程数。可以通过设置这个参数来增加归档日志传输的并行度,从而提高数据同步的速度。建议将LOG_ARCHIVE_MAX_PROCESSES设置为与实际系统的处理能力相匹配的适当值。
- LOG_ARCHIVE_FORMAT:这个参数用于指定归档日志的命名格式。可以通过设置这个参数来定义归档日志的文件名规则。其中,%t表示日志序列号,%s表示日志序列号的后缀,%r表示数据库的线程号。
- DB_UNIQUE_NAME:这个参数用于指定数据库的唯一名称。在ADG中,可以通过设置这个参数来区分不同的主备库。主库和备库必须有不同的DB_UNIQUE_NAME。这样,ADG才能正确地识别数据库的角色和状态。
- FAST_START_FAILOVER_TARGET:这个参数用于指定ADG故障切换的目标时间。可以通过设置这个参数来控制当主库发生故障时,ADG自动切换为备库的时间。建议将FAST_START_FAILOVER_TARGET设置为一个合理的值,以满足业务的需求。
通过合理地配置和管理这些参数,可以实现高可用和灾难恢复的目标。需要注意的是,参数的具体配置和使用可能会根据实际的环境和需求而有所不同。建议在使用这些参数时参考官方文档或咨询Oracle的支持人员。
1.4.3 增量修复
ADG(Advanced Data Guard)是Oracle数据库的一个功能,用于实时数据复制和灾难恢复。ADG增量修复是ADG的一个重要特性,用于在备库上修复主库上发生的物理块损坏或数据丢失。
ADG增量修复的原理是,在主库上发生数据损坏或丢失时,备库会自动从主库获取相应的增量日志,并应用到备库上进行修复。这样可以保证主库和备库之间的数据一致性,并且减少了数据修复的时间。
ADG增量修复的流程如下:
- 检测主库上的物理块损坏或数据丢失。Oracle数据库会使用校验和和数据自愈机制来检测数据的完整性。
- 当发现物理块损坏或数据丢失时,主库会生成一个增量日志,记录被损坏或丢失的物理块的修改操作。
- 备库会通过网络传输获取增量日志。Oracle数据库会使用Redo Transport Services来传输增量日志。
- 备库将增量日志应用到备库上,进行逐块修复。Oracle数据库会使用数据库恢复流程来应用增量日志,并将被修复的物理块恢复到与主库一致的状态。
- 当修复完成后,备库将与主库保持一致,并可用于故障切换或灾难恢复。
ADG增量修复的好处是可以实现实时的数据修复和恢复,减少了故障恢复的时间窗口。同时,由于是增量修复,只需要传输和应用增量日志,减少了网络带宽的使用和数据库的负载。
需要注意的是,ADG增量修复需要在ADG环境中正确配置和启用。还需要保证主库和备库之间的网络连接和传输是稳定和可靠的。此外,增量日志的传输和应用速度也会受到网络带宽和数据库负载的影响,需要根据实际情况进行调整和优化。
ADG增量修复是Oracle ADG的一个重要特性,用于实时数据修复和灾难恢复。通过自动获取增量日志,并将其应用到备库上,可以保证主库和备库之间的数据一致性,并提供故障切换和灾难恢复的能力。
参考链接
oracle adg性能,ADG设计及优化的最佳实践-CSDN博客
oracle 11g 新特性 active data guard(ADG)_oracle adg-CSDN博客
Oracle ADG的基本概念-CSDN博客
读写分离之Oracle物理ADG备库性能调优经验分享 - 知乎
Oracle实现数据库高可用之ADG指南(oracle下的ADG)-数据运维技术
Oracle ADG 与 DG 的区别-CSDN博客
Oracle 11g Data Guard (ADG) 原理_oracle adg原理-CSDN博客
深入浅出Oracle ADG原理剖析(oracle adg原理)-云搜网
Oracle ADG相关介绍-CSDN博客
记Exadata上以RMAN Duplicate方式搭建ADG部署 - 知乎