1 / 11
文档名称:

OracleRAC深度解释.doc

格式:doc   大小:97KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

OracleRAC深度解释.doc

上传人:xd3225 2020/7/26 文件大小:97 KB

下载得到文件列表

OracleRAC深度解释.doc

相关文档

文档介绍

文档介绍:,关键数据通常是共享存放的,比如放在共享磁盘上。而各个节点的对数据有相同的访问权限,这时就必须有某种机制能够控制节点对数据的访问。OracleRAC是利用DLM(DistributeLockManagement)机制来进行多个实例间的并发控制。(Amnesia)集群环境配置文件不是集中存放的,而是每个节点都有一个本地副本,在集群正常运行时,用户可以在任何节点更改集群的配置,并且这种更改会自动同步到其他节点。有一种特殊情况:节点A正常关闭,在节点B上修改配置,关闭结点A,启动结点B。这种情况下,修改的配置文件是丢失的,就是所谓的健忘症。(SplitBrain)在集群中,节点间通过某种机制(心跳)了解彼此的健康状态,以确保各节点协调工作。假设只有"心跳"出现问题,各个节点还在正常运行,这时,每个节点都认为其他的节点宕机了,自己是整个集群环境中的"唯在者",自己应该获得整个集群的"控制权"。在集群环境中,存储设备都是共享的,这就意味着数据灾难,这种情况就是"脑裂"解决这个问题的通常办法是使用投票算法(QuorumAlgorithm).它的算法机理如下:集群中各个节点需要心跳机制来通报彼此的"健康状态",假设每收到一个节点的"通报"代表一票。对于三个节点的集群,正常运行时,每个节点都会有3票。当结点A心跳出现故障但节点A还在运行,这时整个集群就会分裂成2个小的partition。节点A是一个,剩下的2个是一个。这是必须剔除一个partition才能保障集群的健康运行。对于有3个节点的集群,A心跳出现问题后,B和C是一个partion,有2票,A只有1票。按照投票算法,B和C组成的集群获得控制权,A被剔除。如果只有2个节点,投票算法就失效了。因为每个节点上都只有1票。这时就需要引入第三个设备:,这个磁盘也叫作Quorumdisk。这个QuorumDisk也代表一票。当2个结点的心跳出现问题时,2个节点同时去争取QuorumDisk这一票,最早到达的请求被最先满足。故最先获得QuorumDisk的节点就获得2票。另一个节点就会被剔除。(Fencing)当集群系统出现"脑裂"问题的时候,我们可以通过"投票算法"来解决谁获得集群控制权的问题。但是这样是不够的,我们还必须保证被赶出去的结点不能操作共享数据。这就是IOFencing要解决的问题。IOFencing实现有硬件和软件2种方式:软件方式:对于支持SCSIReserve/Release命令的存储设备,可以用SG命令来实现。正常的节点使用SCSIReserve命令"锁住"存储设备,故障节点发现存储设备被锁住后,就知道自己被赶出了集群,也就是说自己出现了异常情况,就要自己进行重启,以恢复到正常状态。这个机制也叫作Sicide(***).Sun和Veritas使用的就是这种机制。硬件方式:STONITH(ShootTheOtherNodeintheHead),这种方式直接操作电源开关,当一个节点发生故障时,另一个节点如果能侦测到,就会通过串口发出命令,控制故障节点的电源开关,通过暂时断电,而又上电的方式使故障节点被重启动,这种方式需要硬件支持。,Oracle是运行在OSKernel之上的。OSKernel负责管理硬件设备,并提供硬件访问接口。Oracle不会直接操作硬件,而是有OSKernel代替它来完成对硬件的调用请求。在集群环境下,存储设备是共享的。OSKernel的设计都是针对单机的,只能控制单机上多个进程间的访问。如果还依赖OSKernel的服务,就无法保证多个主机间的协调工作。这时就需要引入额外的控制机制,在RAC中,这个机制就是位于Oracle和OSKernel之间的Clusterware,它会在OSKernel之前截获请求,然后和其他结点上的Clusterware协商,最终完成上层的请求。在Oracle10G之前,RAC所需要的集群件依赖与硬件厂商,比如SUN,HP,,(CRS),从此RAC不在依赖与任何厂商的集群软件。,这个产品改名为:OracleClusterware。所以我们可以看出,在整个RAC集群中,实际上有2个集群环境的存在,一个是由Clusterware软件组成的集群,另一个是由Database组成的集群。,安装后,在每个结点上的OracleClusterware会自动启