Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1278109
  • 博文数量: 1211
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 14340
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-09 11:20
文章分类

全部博文(1211)

文章存档

2011年(1)

2008年(1210)

我的朋友

分类: 服务器与存储

2008-06-11 20:46:04

Oracle9i 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数据库后快速应用到standby database数据库,则在primary database数据库出现问题时可以快速地 failover 到standby database数据库。然而,如果延缓一定时间后再应用重做日志数据,可以避免primary database数据库的错误快速地传播到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 数据库之间会有一个差异。

Oracle9i 可以用以下的方法来限制这个差异:

    DBA可以选择让LGWR在将重做日志数据写到本地磁盘的同时将数据发送到 standby 数据库。该功能称为standby零数据丢失(standby zero data loss)。这种方法从本质的角度讲提供了远程重做日志镜像,但带来的问题是会极大地损失性能。


    设置系统初始化参数 ARCHIVE_LAG_TARGET。 该参数是一个日志文件开始使用到被发送到 standby 数据库的时间间隔。该参数的推荐值是 1800 秒(需要注意的是,没有传送到 standby 数据库的已经提交的事务会丢失,因此长的事务会使 standby 数据库损失更多的数据)。


Oracle9i Data Guard数据防护与Oracle8 Standby Database的关系


  Oracle Standby Database 是最经常使用的最有效的灾难解决方案。在过去版本的基础上,Oracle9i 又进行了许多改进,使其功能远远超过了基本的灾难恢复要求。通过将复杂的工作自动化,并对监控、警告、以及控制机制的大规模改进,Standby Database 和一些新的模块可以帮助DBA 从错误操作、瘫痪、以及其它的灾难中恢复(这些灾难都可能毁掉数据库)。另外,通过使用Oracle9i Standby Database,由于硬件和软件升级造成的宕机时间也可以极度缩短。

  Oracle9i 将改进过的8版本的Standby Database功能,与几个新增加的防止用户错误和瘫痪的模块合起来称为Oracle9 i Data Guard。

  Oracle8 Automated Standby Database 提供了创建和自动维护生产数据库拷贝的手段来防止灾难的发生。Oracle8 Automated Standby Database 具有以下的功能:

    当primary database 产生日志后,系统自动用归档日志更新standby databases。


    一个primary database可以最多有4个standby databases。这4个standby databases是与primary database完全一样的拷贝,它们都可以接管primary database的处理。


    Oracle使用标准的恢复方法来将归档日志应用到每个standby databases。这些日志的应用是自动的,DBA也可以人工应用这些日志。


    primary database 处于打开和活动状态,而standby database处于恢复或者打开只读状态。


  大多数的基于Oracle8的灾难保护方案包括一个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是Oracle8 Automated Standby Database的Oracle9i版本。它们之间只有一个差异:日志传输服务现在是一个分离的模块,并支持物理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

阅读(614) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~