Oracle RAC培训学习心得

  • 格式:doc
  • 大小:83.00 KB
  • 文档页数:2

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle RAC培训学习心得

上周参加了Oracle RAC培训课程,课程介绍了RAC在数据库中的概念,以及如何在LINUX系统下配置和管理使用RAC的数据库,同时还介绍了如何在RAC环境中配置和使用自动存储管理(ASM),节点的添加和删除,RAC数据库的备份和恢复。

Oracle RAC是Oracle数据库实现高可用的一项重要技术,Oracle RAC的实施配置并不困难,只要按照文档一步步操作下去就可以了。然而,我认为Oracle培训更大的意义在于对RAC技术原理、实现方式在理论上的讲解。对于一项技术的深入掌握,理论和实践缺一不可。理论指导实践,尤其在进行故障诊断的时候,理论知识的掌握就会起到巨大的作用,另一方面,实践能更好地帮助理论的理解,进而完全的掌握这项技术。Oracle和其他技术的学习都应该是一个由实践到理论,再由理论回到实践的不断交替的过程。

Oracle RAC的优势在于利用多个节点(实例)组成一个数据库,这样在保证了数据库高可用性的情况下更充分的利用了多个主机的性能,而且可以通过增加节点进行性能的扩展。实现Oracle RAC需要解决的关键问题就是多节点进行数据访问时如何保证数据的一致性,Oracle是通过各节点间的私有连接进行内存融合(cache fusion)来保证各节点数据访问的一致性。用一个例子来解释一下内存融合的过程,在存在A、B两个节点的RAC环境中,当A节点使用DML语句(如Update)对一个数据块中的数据进行修改时,A节点实例会到GRD(Global Resource Directory)中查找该数据块的信息,这些信息包括该数据块的Master (第一次读这个数据块的节点),Owner(当前拥有这个数据块的节点),以及数据块在各个节点间的传递记录。A节点如果发现GRD中没有需要读取的数据块的信息,说明该数据块是一个干净的数据块,A节点从磁盘或Buffer Cache中获得该数据块,然后对需要修改的行加锁,进行相应的修改,当然SCN会随之增加。在A完成修改而没有提交或回滚的情况下,如果B节点也需要访问这个数据块修改某些行(假设不同于A修改的行),B同样去到GRD 中查找该数据块的信息,当然B发现该数据块的Master为A,Owner也为A,为了保证A 的修改不丢失,B需要发信息给A,让A将需要修改的数据块通过私有连接直接从内存中传给B,当然该数据块中包含A的锁信息,这样A节点与B节点间的一次内存的数据传递就是内存融合。Oracle RAC的内存融合也面临一些问题,继续刚刚的例子,如果A又再次请求对该数据块修改或者结束事务(提交或回滚)的时候,又需要从B节点内存中取得数据块,又要发生内存融合,这样在两个节点业务没有合理分割的情况下,数据库繁忙时,大量的内存融合会对数据库性能造成严重的影响。通过对Oracle RAC技术的理解,在实现Oracle RAC架构时的业务分割就成为了保证系统性能的重要手段,业务分割的根本在于使不同的实例不能访问相同的数据块,这样业务分割规则可以小到表的级别(通常不同的表共享一个数据块的几率不大),大到表空间、Schema的级别。这些理论知识的理解对于Oracle RAC架构的实施有着巨大的指导意义。

另外,我对在Oracle RAC培训中讲到的一个扩展的RAC磁盘镜像架构印象很深,传统的Oracle RAC架构中,存储仍然是一个单点故障,在这个扩展的RAC磁盘镜像架构中,解决了传统架构中的存储单点故障风险,该架构如下图:

该架构中分为A、B两个Site,两个Site可以存在数公里的距离,整体上两个Site的4个节点共同构成一个RAC集群,两个Site间通过Dark Fiber(暗光纤)作为私有连接链路,保证各个节点间的内存融合的进行,每个节点的写操作都能同时无延迟的写到2个存储上,两个存储的同步写可以通过第三方软件或ASM实现。不过其中很大的成本在于两个Site间的Dark Fiber(暗光纤)架设成本。

在讲解这部分内容时,关于这个架构是一个RAC还是两个RAC实现的,我们有过一些争论,我认为是一个RAC实现的,而另外一名学员和讲师说是两个RAC实现,最后针对这个问题,请教了一位更资深的Oracle讲师,这位Oracle讲师通过对RAC原理的分析,如果认为是两个RAC实现的话,两个Site无法进行内存融合,就没有办法保证Oracle数据库的数据一致性,因此采用两个RAC是无法实现这个架构的。这样大家都认同了这个架构是一个RAC实现的,可见理论知识的理解对解决问题的帮助还是很大的。