
栢图教育 Oracle 高级课程电子教材
DataUGuard 架构
人为错误、硬件故障、软件故障、网络故障以及火灾、台风、地震等巨大灾难都会危及生产系统的数据库。
此时企业的运营将受到巨大的影响,数据保护和数据的可用性的重要性显而易见。DataGuard 用来保护 Oracle
的数据,可以提供最高级别的数据保护和可用性。DataGuard 是 Oracle 内核自带的一项功能,DataGuard 和 Oracle
的其他高可用性技术结合在一起——典型的有 RAC、RMAN、Oracle 闪回技术等。
DataGuard 是通过冗余数据来提供数据保护的,DataGuard 通过日志同步机制保证冗余数据和主数据之间的
同步,这种同步可以是实时、延时,同步、异步多种形式。DataGuard 常用于异地容灾和小企业的高可用性方案,
虽然可以在 standby 机器上执行只读查询,从而分散 Primary 数据库的性能压力,但是 DataGuard 决不是性能解
决方案。
1 DataGuard 概述
DataGuard 环境中,至少会有两个数据库,一个数据库处于open状态,对外提供服务,这个数据库叫做Primary
database。第二个数据库处于恢复状态,叫做 standby database。运行时,DataGuard 遵循一个简单的原则:传
输重做数据(redo),然后应用重做数据。主库对外提供服务,用户在主库上进行操作,操作记录被记录在联机
日志和归档日志中,日志数据中包含了恢复数据库事务需要的所有信息,这些日志通过网络传递给一个或者多
个备库 standby。这些日志会在备库上重演,从而实现主库和备库的数据同步。如果因为网络中断或者备库断电
导致数据同步中断,DataGuard 还会自动重新同步备库,当主库意外中断后,一个或者多个备库可以立即被使用,
就是把备库强制切换为主库继续对外服务,从而恢复正常的处理,这时数据损失程度和配置的数据保护级别有
关系。如果可预见因素是关闭主库的,比如软硬件升级,可以把备库切换为主库继续对外服务,减少了服务停
止的时间,并且数据不会丢失。primary 和 standby 只是一个角色的概念,并不固定在某个数据库中。DataGuard
的工作原理见下图:
主数据库 备用数据库
Oracle实例(内存中) Oracle实例(内存中)
传输重做数据
Oracle数据
文件
恢复数据
3
1
恢复数据
Oracle数据
文件
2
自动中断处理
4
1——生成重做数据时,重做传输服务将重做数据从主库传输到备库;
2——应用服务器验证重做数据并更新备库数据文件。
3——独立于 DataGuard,数据库写进程更新主库数据文件。
4——在网络中断或者备库停止后,DataGuard 使用已经在主库上生成的归档自动重新同步备库。
在此基础上,Oracle DataGuard 对这个过程进一步的优化设计,使得日志的传递、恢复工作更加自动化、智
能化。并且提供一系列参数命令,简化 DBA 工作。
综上所述,DataGuard 架构有三个关键点:在主库上产生的日志、产生的日志传送给备库、备库重演这些日
志。整个 DataGuard 就是围绕这三个关键点展开的。所以 DataGuard 按照功能分成三部分:
日志发送服务(Redo Send)
评论