登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

飞哥的技术博客

世上无难事,只怕有心人!

 
 
 

日志

 
 
 
 

一步一步学DataGuard(2)基础之术语再了解大概 - 无名扫把 - CSDN博客  

2009-05-25 16:38:37|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 一步一步学DataGuard(2)基础之术语再了解大概收藏

  同一个Data Guard配置包含一个PrimaryStandby数据库。Primary的创建就不说了,Standby数据库初始可以通过primary数据库的备份创建。一旦创建并配置成standby后,dg负责传输primary数据库redo data到standby数据库,standby数据库通过应用接收到的redo data保持与primary数据库的事务一致。

前章我们简单介绍了Standby数据库,并且也知道其通常分为两类:物理standby和逻辑standby,同时也简短的描述了其各自的特点,下面我们就相关方面进行一些稍深入的研究:

我们知道物理standby与primary数据库完全一模一样(默认情况下,当然也可以不一样,事无绝对嘛),Dg通过redo应用维护物理standby数据库。通常在不应用恢复的时候,可以以read-only模式打开,如果数据库指定了快速恢复区的话,也可以被临时性的置为read-write模式。

物理standby通过应用归档文件或直接从standby系统中通过恢复机制应用redo文件。恢复操作属于块对块的应用(不理解?那就理解成块复制,将redo中发生了变化的块复制到standby)。如果正在应用redo,数据库不能被open。

以read-only模式打开后,你可以在standby数据库执行查询,或者备份等操作(变相减轻primary数据库压力)。此时standby数据库仍然可以继续接收redo数据,不过并不会触发操作,直到数据库恢复redo应用。也就是说read-only模式时不能执行redo应用,redo应用时数据库肯定处于未打开状态。如果需要的话,你可以在两种状态间转换,比如先应用redo,然后read-only,然后切换数据库状态再应用redo,呵呵,人生就是循环,数据库也是一样。

如果以read-write模式打开,则standby数据库将暂停从primary数据库接收redo数据,并且暂时失去灾难保护的功能。当然,以read-write模式打开也并非一无是处,比如你可能需要临时调试一些数据,但是又不方便在正式库操作,那就可以临时将standby数据库置为read-write模式,操作完之后将数据库闪回到操作前的状态(闪回之后,Data Guard会自动同步,不需要重建standby)。

应用物理standby数据库,Dg能够确保即使面对无法预料的灾害也能够不丢失数据。前面也提到物理standby是基于块对块的复制,因此对象、语句统统无关,primary数据库上有什么,物理standby也会有什么。

逻辑standby是逻辑上与primary数据库相同,结构可以不一致。逻辑standby通过sql应用与primary数据库保持一致,也正因如此,逻辑standby可以以read-write模式打开,你可以在任何时候访问逻辑standby数据库。同样有利也有弊,逻辑standby对于某些数据类型以及一些ddl,dml会有操作上的限制。

除灾难恢复外,逻辑standby数据库还可用于其它业务需求。比如通过在standby数据库创建额外的索引、物化视图等提高查询性能并满足特定业务需要。又比如创建新的schema(primary数据库并不存在)然后在这些schema中执行ddl或者dml操作等。

逻辑standby数据库可以在更新表的时候仍然保持打开状态,此时这些表可同时用于只读访问。这使得逻辑standby数据库能够同时用于数据保护和报表操作,从而将主数据库从那些报表和查询任务中解脱出来,节约宝贵的 CPU和I/O资源。

比如跨版本升级啦,打小补丁啦等等,应该说应用的空间很大,而带来的风险却很小(前提是如果你拥有足够的技术实力。另外虽然物理standby也能够实现一些升级操作,但如果跨平台的话恐怕就力不从心,所以此项就不做为物理standby的特点列出了),我个人认为这是一种值的推荐的在线的滚动的平滑的升级方式。

l OEM(Oracle Enterprise Manager)

Orcale EM提供了一个窗口化的管理方式,基本上你只需要点点鼠标就能完全dg的配置管理维护等操作(当然三思仍然坚持一步一步学rman中的观点,在可能的情况下,尽可能不依赖视窗化的功能,所以这种操作方式不做详细介绍),其实质是调用oracle为dg专门提供的一个管理器:Data Guard Broker来实施管理操作。

l 同一个Data Gurid配置中的所有oracle数据库必须运行于相同的平台。比如inter架构下的32位系统可以与inter架构下的32位linux系统组成一组Data Guard。另外,如果服务器都运行于32位的话,64位HP-UX也可以与32位HP-UX组成一组Data Guard。

l primary数据库和standby数据库的操作系统必须一致,不过操作系统版本可以略有差异,比如(linux as4&linux as5),primary数据库和standby数据库的目录路径也可以不同。

l P,并且务必确保在primary数据库上打开FORCE LOGGING,以避免用户通过nologging等方式避免写redo造成对应的操作无法传输到standby数据库。

l P,并且同一个data guard配置可以混合使用逻辑standby和物理standby。

黑多黑多的redo,想必诸位早已晕头并吐过多次了吧。哎,说实话我描述的时候也很痛苦。这块涉及到中英文之间的意会。我又不能过度白话,不然看完我这篇文章再看其它相关文档的相关概念恐怕您都不知道人家在说什么,这种误人子弟的事情咱不能干(也许干过,但主观意愿上肯定是不想的),更何况咱也是看各乱杂七杂八文档被误过XXXXXXXXXXXXXXXXX次(X=9),深受其害,坚决不能再让跟俺一样受尽苦楚,历经磨难的DDMM们因为看俺的文档被再次一百遍啊一百遍。

但是已到关键时刻,此处不把redo混清楚,后头就得被redo混了,所以这里我要用尽我全部的口水+目前为止我所有已成体系的认识再给大家浅显的白话一回。注:基础概念仅一笔带过,水太大了也不好,要响应胡书记号召,书写节约型笔记。

REDO:中文直译是重做,与UNDO对应(天哪又扯出个概念,你看不见我看不见我看不见我)。重做什么?为什么要重做呢?首先重做是oracle对操作的处理机制,我们操作数据(增册改)并非直接反映到数据文件,而是先被记录(就是online redo log喽),等时机合适的时候,再由相应的进程操作提交到数据文件(详细可见:数据写过程中各项触发条件及逻辑)。你是不是想说如果把所有的online redo logs都保存下来,不就相当于拥有了数据库做过的所有操作了吗?en,我可以非常负责任的告诉你,你说的对,oracle跟你想到一块去了并且也将其实现了,这就是archived  redo logs,简称archive log即归档日志。我们再回来看Data Guard,由于standby数据库的数据通常都来自于primary数据库,怎么来的呢,通过RFS进程接收primary数据库的redo,保存在本地,就是Standby redo logs喽,然后standby数据库的ARCn再将其写入归档,就是standby服务器的archived redo logs。保存之后数据又是怎么生成的呢,两种方式,物理standby通过redo应用,逻辑standby通过sql应用,不管是哪种应用,应用的是什么呢?是redo log中的内容(默认情况下应用archived redo logs,如果打开了实时应用,则直接从standby redo logs中读取),至于如何应用,那就是redo应用和sql应用机制的事情了(也许后头我们会深入聊一聊这个话题,很复杂也很有趣)。

对于primary数据库和逻辑standby数据库,online redo log文件肯定是必须的,而对于物理standby是否还需要redo log呢?毕竟物理standby通常不会有写操作,所以物理standby应该不会生成有redo数据。为保证数据库的事务一致性必然需要有归档,也就是说不管primary或standby都必须运行于归档模式。

standby redo logs是standby数据库特有的文件(如果配置了的话),就本身的特点比如文件存储特性,配置特性等等都与online redo logs非常类似,不过它存储的是接收自primary数据库的redo数据,而online redo logs中记录的是本机中的操作记录。

上面的描述大家尽可能意会,能够理解最好,理解不了也没关系,我始终认为,只要坚定不移的学习下去,总会水到渠成。下面进入实战章节,先来个简单的,创建物理standby。

一步一步学DataGuard(2)基础之术语再了解大概 - 无名扫把 - CSDN博客 - yangzhongfei - 中飞博客



引文来源  一步一步学DataGuard(2)基础之术语再了解大概 - 无名扫把 - CSDN博客
  评论这张
 
阅读(190)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018