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配置图:
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数据。
对于Logical Standby Database,Oracle Data Guard使用SQL Apply技术接收Primary传输的Redo数据转换成SQL语句,然后执行SQL语句的方式应用Redo数据。
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官方文档