1.Oracle Data Guard 介绍

Oracle Data Guard能够为生产数据库提供高可用性、数据保护和数据灾难恢复功能。数据保护提供了一组全面的服务创建、维护、管理和监控一个或多个备用数据库,使生产Oracle数据库在数据损坏时可以快速恢复。Data Guard维护这些备用数据库作为事务性的一致的生产数据库的副本。在生产数据库不可用时,Data Guard可以切换任何备用数据库生产角色,以保证最小化停机时间。

2.Data Guard的基本配置

一个Data Guard的配置包括一个生产数据库和一个或者多个备用数据库,Oracle Data Guard配置的数据库通过Oracle Net连接,并且这些数据库可以不在同一物理区域。

2.1 Primary Database

主数据库可以由单实例数据库或者数据库应用集群构成。

2.1 Standby Databases

Standby Database接收Primary Database生成的Redo,时时同步到备用数据库上。备用数据库也可以由单实例数据库或者数据库应用集群构成。

  • Physical standby database

     物理Standby Database通过Redo Apply接收Primary Database生成的Redo,以介质恢复的方式实时保持同步。

  • Logical standby database

          逻辑Standby Database通过SQL Apply接收Primary Database成成的Redo,然后将其转换成SQL语句,然后在  

          Standby Database上执行SQL语句实现同步。

逻辑Standby Database还可用于灾难恢复,并且用户可以在任何时候通过逻辑Standby Database进行查询和检测。

2.3 下面是一个典型的Data Guard配置图:

Oracle Data Guard(1)_第1张图片

3.Data Guard的服务

3.1 Redo传输服务( Redo Transport Services)

Oracle通过RTS服务(即REDO传输服务)控制REDO数据,从Primary Database发送到一个或多个归档目标。

该服务属于基础服务,主要任务如下:

  • Transmit redo data from the primary system to the standby systems in the configuration

  • Manage the process of resolving any gaps in the archived redo log files due to a network failure

  • Enforce the database protection modes 

  • Automatically detect missing or corrupted archived redo log files on a standby system and automatically retrieve replacement archived redo log files from the primary database or another standby database

3.2 日志应用服务(Log Apply Services)

LAS服务(即Log 应用服务)主要用来应用REDO数据到Standby Database,以保持Standby Database和Primary Database的事务一致。

  • 对于Physical Standby Database,Oracle Data Guard使用Redo Apply技术接收Primary传输的Redo数据。

Oracle Data Guard(1)_第2张图片

  • 对于Logical Standby Database,Oracle Data Guard使用SQL Apply技术接收Primary传输的Redo数据转换成SQL语句,然后执行SQL语句的方式应用Redo数据。

Oracle Data Guard(1)_第3张图片

3.3角色转换(Role Transitions)

Data Guard中有两种角色:Primary和Standby。使用Data Guard可以使用switchover或failover切换方式使角色发生转换。

  • switchover

    使primary database 和standby databases可以相互切换,这种切换方式可以确保不丢失数据。

  • failover

    当primary Database出现故障并且不能及时恢复时,通过 failover 将其中的一个Standby Database转换成新的Primary Database。在最大保护模式和最高可用性模式下, failover 也可以保证不丢失数据。

4.Data Guard的保护模式(Data Guard Protection Modes)

  • 最大保护(Maximum protection )

    这种模式能够保证在primary Database发生故障保证数据不丢失。在这种模式下,事务提交前,要保证Redo数据已经写入到Primary Database的Online Redologs,同时写入Standby Database的Standby Redologs,并确保至少在一个Standby Database中可用。如果Standby Database不可用,Primary Database将会shutdown。

  • 最高可用性(Maximum availability) 

    这种模式在不影响Primary Database可用的前提下,提供最高级别的数据保护策略,这种模式也能够确保数据不丢失。事务提交之前,要保证Redo数据已经写入到Primary Database的Online Redologs,同时写入Standby Database的Standby Redologs,确保至少在一个Standby Database中可用。与最大保护模式不同的是,如果Standby Database出现故障导致不可用,Primary Database并不会被shutdown,而是自动转换为最高性能模式,等Standby Database恢复正常后,Primary Database又会自动切换到最高可用性模式。

  • Maximum performance 

    这是一种默认的保护模式。事务可以随时提交,当前Primary Database的Redo数据至少需要写入一个Standby Database,不过这种方式不会等待Standby Database是否写入的确认因此这种写入属于异步写入。

    当网络有很大带宽可用时,常采用这种保护模式。

最大保护和最高可用性至少需要一个Standby Database的Redo数据被同步写入。以上三种保护都要指定LOG_ARCHIVE_DEST_n初始化参数。

5.Oracle Data Guard的相关特点总结

  • Disaster recovery, data protection, and high availability

  • Complete data protection

  • Efficient use of system resources

  • Flexibility in data protection to balance availability against performance requirements

  • Automatic gap detection and resolution

  • Centralized and simple management

  • Integration with Oracle Database

  • Automatic role transitions

 

本文总结于Oracle 10g官方文档