Oraclei Data Guard 通过使用称为standby database的数据库来防止出现数据的灾难它通过将primary database数据库的重做日志传到并应用到standby database数据库来使standby database数据库与primary database数据库同步
可以将重做日志直接从primary database数据库同步写到standby database数据库来完成完全没有数据损失的灾难保护这会给primary database数据库的性能带来一定的性能损失
可以将归档的重做日志从primary database数据库异步写到standby database数据库来使primary database数据库在极少损失性能的前提下最小化地减少数据的丢失
如果重做日志数据到达standby database数据库后快速τ玫絪tandby database数据库则在primary database数据库出现问题时可以快速地 failover 到standby database数据库然而如果延缓一定时间后再应用重做日志数据可以避免primary database数据库的错误快速地传播到standby database数据库
如下图所示当联机重做日志在本地归档时它们同时通过 Oracle Net 传送到了standby database
数据库数据保护级别
可以用如下的方式设置standby database数据库来达到不同的数据库数据保护级别
Guaranteed protection规定在修改主数据库时至少有一个备用数据库有效假如主(Primary Database)备(Standby Database)之间的连接中断Oracle会通过中断主实例的工作来防止主备数据库之间的数据的不一致保证无数据丢失这种模式对数据库性能的影响较大
Instant protection规定在修改主数据库时至少有一个备用数据库有效与Guaranteed protection模式不同的是当主备数据库之间的连接中断时允许主备数据库之间的数据的不一致并当恢复连接后解决数据不一致的现象这种模式对主数据库的性能有较小的影响
Rapid protection主数据库的修改快速应用在备用数据库上会出现数据丢失但对数据库性能的影响小
Delayed protection主数据库的修改在延迟一定的时间后应用在备用数据库上Rapid protection和Delayed protection模式即使在网络连接有效时也允许主数据库与所有的备用数据库有数据分歧数据的丢失量等同于主数据库联机重做日志的未归档数这种方式对数据库性能的影响小
如何限制数据的丢失量
在primary/standby配置下所有的归档日志被发送到了standby 节点这使standby 节点的数据保持着更新但是如果primary 数据库意外关闭联机的日志将会丢失因为它们尚未归档并发送到standby节点这使得 primary 和standby 数据库之间会有一个差异
Oraclei 可以用以下的方法来限制这个差异
DBA可以选择让LGWR在将重做日志数据写到本地磁盘的同时将数据发送到 standby 数据库该功能称为standby零数据丢失(standby zero data loss)这种方法从本质的角度讲提供了远程重做日志镜像但带来的问题是会极大地损失性能
设置系统初始化参数ARCHIVE_LAG_TARGET该参数是一个日志文件开始使用到被发送到standby数据库的时间间隔该参数的推荐值是 秒(需要注意的是没有传送到 standby 数据库的已经提交的事务会丢失因此长的事务会使standby数据库损失更多的数据)
Oraclei Data Guard数据防护与Oracle Standby Database的关系Oracle Standby Database 是最经常使用的最有效的灾难解决方案在过去版本的基础上Oraclei 又进行了许多改进使其功能远远超过了基本的灾难恢复要求通过将复杂的工作自动化并对监控警告以及控制机制的大规模改进Standby Database 和一些新的模块可以帮助DBA 从错误操作瘫痪以及其它的灾难中恢复(这些灾难都可能毁掉数据库)另外通过使用Oraclei Standby Database由于硬件和软件升级造成的宕机时间也可以极度缩短
Oraclei 将改进过的版本的Standby Database功能与几个新增加的防止用户错误和瘫痪的模块合起来称为Oraclei Data Guard
Oracle Automated Standby Database 提供了创建和自动维护生产数据库拷贝的手段来防止灾难的发生Oracle Automated Standby Database 具有以下的功能
当primary database 产生日志后系统自动用归档日志更新standby databases一个primary database可以最多有个standby databases这个standby databases是与primary database完全一样的拷贝它们都可以接管primary database的处理
Oracle使用标准的恢复方法来将归档日志应用到每个standby databases这些日志的应用是自动的DBA也可以人工应用这些日志
primary database 处于打开和活动状态而standby database处于恢复或者打开只读状态
大多数的基于Oracle的灾难保护方案包括一个Automated Standby Database因为Oracle数据库可以用备份和日志恢复所以任何应用都可以使用Automated Standby Database通过Oracle Net传输归档日志对primary database的性能影响可以忽略不计
物理的Standby Database和逻辑的Standby Database
Standby Database可以分为物理的Standby Database和逻辑的Standby Database
物理 Standby Database物理 Standby Database是Oracle Automated Standby Database的Oraclei版本它们之间只有一个差异日志传输服务现在是一个分离的模块并支持物理standby database和新的逻辑standby database
物理Standby Database的含义是Standby Database在物理上与primary database 一样因为恢复是使用 ROWID 一块对一块进行的Standby Database的数据块与primary database的数据快一样数据库模式一定是一样的且不能以读/写的方式打开
逻辑 Standby Database逻辑 Standby Database是将归档的日志转化为SQL事务并将它们应用到打开的Standby Database因为数据库是打开的它在物理上与primary database是不一样的然而从逻辑角度讲Standby Database与primary database是一样的因此可以接管primary database的处理在这种情况下Standby Database还可以并发地进行其它的工作例如建立一些与primary database不一样的索引和物化视图完成决策支持等任务
逻辑 Standby Database 是最重要的数据保护特性就像物理 standby database一样它使用归档的日志在standby database上进行处理在primary database出现问题的情况下也没有问题
当选择使用物理standby database逻辑standby database或两者都用时要考虑以下一系列的因素
逻辑standby database可用于两个目的当要对逻辑standby database进行改变时其数据库可以打开
逻辑standby database需要DBA更高的技能
使数据保护极大化的解决方案通常包括逻辑的和物理的standby databases数据库Failover和Switchover当主数据库发生宕机且不能及时恢复时Oracle会丢弃主数据库将备用数据库转变为主数据库当 failover之后备用数据库变成为主数据库从而丢失了备用数据库的所有能力也就是说不能再返回到备用模式
Failover 有以下特点
主数据库offline备用数据库online这种操作由系统和软件失败引起
即使在备用数据库上应用重做日志也可能出现数据丢失的现象除非备用数据库运行在guaranteed protection模式下
原主数据库重新使用时必须reinstantiated(start instance)
其它的备用数据库也需reinstantiated
在主数据库正常工作时Oracle 允许 DBA 将主数据库切换到备用数据库此备用数据库变为主数据库而原主数据库变为备用数据库
数据库的切换可以从主数据库角色切换到备用数据库角色也可从备用数据库角色切换到主数据库角色
Switchover 有以下特点
故意将主数据库offline而将另一备用数据库online可以如使用Switchover 功能完成系统的平滑升级工作
即使在备用数据库上不应用重做日志也不会造成数据的丢失
数据库不需reinstantiated这使主数据库几乎能立即在备用数据库上恢复它的功能因此可经常进行定期维护而不需中断操作
Oraclei Data Guard的一些部件日志传输服务(Log Transport Services)
Log Transport Services会被物理的和逻辑的standby database 都用到它提供的功能包括控制不同的日志传输机制日志传输错误处理和报告以及在系统失败后获取丢失的日志使用任何新的日志传输模式数据的保护都可以得到保证
Oraclei Data Guard Broker
Data Guard broker提供了对日志传输服务的监测控制和自动化以及逻辑和物理standby的部件例如通过只用一个命令就可以启动 failoverData Guard broker可被用于控制主要角色从primary到任何一种standby database转移的整个过程用户可以从种不同的界面来选择进行角色转换使standby database 从primary database接管生产数据库的处理一种选择是使用新的Oracle Enterprise Manager Data Guard Manager该图形用户界面工具可进行大多的配置工作和操作功能另一种选择是一个命令行工具它提供了基本的监测