摘要
大家都知道
oracle
i RAC(以下简称RAC)是oracle里相对比较复杂的部分
很大一部分原因是由于RAC的环境搭建相对不如单实例方便
通常典型的配置是两台主机加一台存储
但是平常我们个人如果想在家研究测试RAC的话
很少会去购买这么多设备来做测试的
幸好
我们有VMwareGSX Server(以下简称VMware)
通过使用这款非常好的虚拟机模拟工具
我们可以在一台PC电脑上模拟出多台主机加存储的这样一个RAC环境
本文首先简要介绍了RAC的原理随后着重详细叙述了如何在一台PC电脑上使用VMware构建两台RedHat Linux AS(以下简称AS)并虚拟一个共享存储创建裸设备最后在实现RAC的搭建
RAC简介
简单来说RAC就是位于多个主机(通常都称为节点)上的多个oracle实例同时管理一个数据库数据库必须放在共享存储设备上包括数据文件控制文件联机日志以及spfile都必须放在共享存储上这样每个节点才能同时访问存储设备每个节点之间通过高速光纤互相连接并同步内存数据oracle在管理不同实例里的内存里的数据结构同时要最大程度的降低I/O引入了全局缓沖服务(GCSGlobal Cache Service)同时还引入了全局锁定服务(GESGlobal Enqueue Service)用来在不同节点之间通讯时进行同步管理这些服务都是通过一组特殊的后台进程完成的这些后台进程主要包括
()global cache service processes(LMSn)n从到具体由信息传输的数量决定用来控制信息到其他实例的流向同时还管理对全局数据块的访问LMSn进程同样在不同实例的数据块缓存(buffer cache)里传递数据库镜像(block image)该进程是Cache Fusion特性的一部分
()global enqueue service monitor(LMON)监控全局锁定(global enqueues)及其资源并提供global enqueues资源的恢复操作enqueues是用来进行串行化行更新的共享的内存结构
()global enqueue service daemon(LMD)管理对全局锁定(global enqueues)以及全局资源的访问在每个实例中LMD进程对传入当前实例的对其他资源的访问请求进行管理
()lock process(LCK)管理nonCache Fusion资源的请求比如library cache或row cache的请求
()diagnosability daemon(DIAG)获得实例中有关进程失败的诊断信息该daemon的操作是自动的并且它会更新alert<SID>log文件以记录它所做的动作
注意cache fusion表示一种在RAC里的非磁盘交互方式的内存同步机制该机制使得获得block的实例能够将block直接从内存转移到需要该block的实例的SGA里去这样由于减少了磁盘交互所以将block从一个实例转移到另一个实例的性能提高很多而且管理也更加简便
RAC能够对客户端的连接请求进行负载均衡把所有客户的连接尽可能的平均分布在不同的实例上同时RAC还提供failover的功能也就是说如果其中一个节点发生意外只要这个时候连在该损坏节点上的session没有正在进行事务运行则该session不需要退出后重新登录oracle会自动将该session连接到一个可用的节点上从而保证了×应用的安全性和稳定性
不过RAC不提供容灾的功能也就是说如果共享存储损坏仍然会导致整个应用崩溃所以需要采用其他容灾方案结合使用比如RAC+DataGuard等
准备工作
VMware GSX Server笔者测试所使用的是版本建议使用及以上的版本
Linux笔者使用的是RedHat Linux AS请使用AS以上版本的linux因为AS以下的版本如果要
支持RAC需要进行很多额外的配置比如watchdog之类的到了AS以后缺省都不使用了而是使用hangcheck如果要使用watchdog需要进行很多不必要的配置安装介质可以是光盘也可以是ISO文件笔者使用的是ISO文件
Oracle笔者使用的是oracle for linux可以直接从oracle的官方网站上下载笔者是从oracle官方网站上下载下来的三个压缩包
主要的准备工作就是这些当然安装过程中可能还会需要其他的一些软件比如plainmaker等在需要的时候笔者也会说明如何使用这些软件的
安装虚拟节点
创建虚拟节点
VMware安装好以后进入主界面我们就可以创建两个虚拟节点点击File>New Virtual Machine…在打开的窗口中在选择所安装的操作系统时我们选择RedHat Enterprise Linux 其他都选择缺省值点击next一直到让你输入disk size时缺省事G我们改成G最后点击finish这样就创建好了一个虚拟节点取名为linux同样的方法我们创建第二个虚拟节点取名为linux
安装linux
创建完两个虚拟节点以后我们要开始安装linux了在窗口的左边的Inventory框里右键节点linux选择virtual machine settings…在弹出的框中我们选中CDROM然后选择Use ISO Image并输入相应的linux安装介质的第一个ISO文件的位置如下图所示选择ok以后点击Power>Power On相当于为节点
加电剩下的工作与在单PC机器上安装linux过程一样这里提一点就是在给磁盘分区时如果不使用LVM那么在分区时/boot给M/swap给M/给M然后再创建一个/oracle把剩下的空间都给/oracle在安装过程中当提示需要换另外一张盘时你只要再次进入图一所示界面更改ISO文件并确定以后再进入虚拟机选择提示中的ok即可同样的方法我们可以安装好另外一台虚拟机上的linux
RAC里每个节点都需要两块网卡并使用固定ip一块作为两个节点互相内部通信用另外一块作为外部连接用我们同样的选择linux进入图一界面选择add按钮然后选择Ethernet Adapter然后都选择缺省值并点击next直到结束这样就为linux添加了第二块网卡同样的方法为linux添加第二块网卡分别启动两个节点以后我们在linux为网卡配置ip地址笔者的配置是linux的内部通信ip为外部通信ip为而linux的内部通信ip为外部通信ip为
安装共享磁盘
创建共享磁盘
在VMware里共享磁盘需要使用plainmakerexe这个工具来创建可以到VMware GSX Server的安装目录下找该工具是否存在如果不存在则可以到google上搜索很多站点提供该工具的下载进入命令提示符输入下面的命令来创建共享磁盘
C:\>plainmaker D:\virtualos\sharediskpln m
该命令运行以后就会在D:\virtualos目录下创建一个名位sharediskpln的共享磁盘大小为G
添加共享磁盘
共享磁盘安装好以后我们需要把它加入到前面安装好的两台linux虚拟机里选择linux仍然进入到图一所示的界面里选择左边的add按钮在弹出的框中选择Hard Disk并点击next选择方式如下面图二
所示并点击next输入我们刚才创建的共享磁盘名D:\virtualos\sharediskpln然后不要点击finish要点击advanced选择磁盘为SCSI :如下图三所示最后点击finish这样我们就为linux节点添加了共享存储随后我们用同样的方法为linux节点也添加该共享存储
配置共享磁盘
把共享存储添加到两个节点以后还不算完必须修改两个虚拟机的配置文件在每个节点所在目录下都存在一个后缀名为vmx的文件这就是虚拟机的配置文件了用notepad打开把下面三行记录添加进去注意这三行中的每一行都不能重复所以仔细检查一下vmx文件确保这三行记录唯一每个节点的配置文件都必须添加这三行记录
disklocking = FALSE
scsisharedBus = virtual
scsi:mode = persistent
到这里我们才算是为两个节点都配置好了共享存储分别启动两个linux节点以后进入linux我们可以使用如下命令来确定两个节点是否都能够找到该存储了如果提示出有设备则表示能够识别共享存储