Search in uioop.blogspot.com

Blog Archive

Wednesday, April 6, 2011

[Linux] Vmware+Linux+Oracle 10G RAC全程详细图解

http://www.linuxidc.com/Linux/2011-02/31976.htm
来源:Linux社区 作者:雷宇

实验环境:

笔记本一台(2GB内存,320GB硬盘)

Vmware Server 1.0.6版

Linux Enterprise 5.1版

Oracle 10g for linux(10.2.0.1)

前言:

最开始的实验环境其实不是这样的,虚拟机用的是vmware workstation,用了一段时间之后发现用vmware workstation版本建不了共享磁盘,也就没法构建ORACLE RAC实验环境,所以把vmware workstation换成了vmware server2.0。装完vmware server2.0之后连启动web界面都成问题,重装仍然如此,无奈之下启用了vmware server1.0.6版本。


在使用哪一款linux操作系统也几经选择,开始用的是linux enterprise 4.0版本,到建立共享磁盘的时候始终有问题,过不去,后来在ITPUB意外的发现了君三思的学习笔记《手把手教你用VMware在linux下安装 oracle10g RAC》,看他在里面用的是linux 5.1版本的操作系统,为了实验过程顺利一些,我也采用了这个版本的操作系统。

在使用介质的时候也碰到些小问题,搭建ORACLE RAC需要用到的两个重要介质,一是clusterware,也就是oracle集群软件,一是oracle software for linux,可能是网络的因素,在下载完10201_database_linux32.zip这个文件并上传到linux操作系统中却非常意外的发现无 法解压,究其原因可能是下载得不够健全,一部分字节出了问题,导致整个文件都不能用,于是只有重新下载,非常消耗时间。

在这个实验过程中,碰到很多问题,有的是和虚拟机相关的,有的是和linux操作系统相关的,有的是和oracle数据库相关的,因为这众多的问题 出现,导致实验进度过长,从开始准备到实验最终完成花了大概两个星期时间,光重装操作系统就不下五次。不过也亏得碰到这些小问题,随着实验的继续进行,每 个问题都得到了解决,每个问题也都备了案,在第二次重做的时候因为前期问题的积累,就进行得非常顺利。这也说明人家总结出来的文档不能完全照搬,因为实验 过程究竟会碰到什么问题都是不可预知的。

为了能做好这个实验,特地驱车到中关村购得组装250GB移动硬盘一块,之后所有实验都在移动硬盘上进行(本机60GB硬盘被各种文件资料撑得满满 的,实在没有空间来存放实验所用文件)。就在这样的情况下也碰到一些意外,比如正在移动硬盘上风风火火安装linux操作系统时,连接移动硬盘和电脑的 USB线缆突然走位,整个过程不得不重头再来。

千难万难,实验终归是成功了,为了表示纪念,也为了后来的同仁们少走弯路,特地记录于此,供大家参考。特别感谢ITPUB的君三思,如果没有他的文档帮助,我的实验不可能成功。


新建虚拟机


Vmware软件的安装过程不详述,因为很简单,只要按照提示一步步往下走就ok。在这里提醒一句,如果 要配置ORACLE RAC,一定不要安装vmware workstation版本,而要安装vmware server版本,这样在创建共享磁盘过程的时候才会比较顺畅。如果是非ORACLE RAC实验环境,这个就无所谓了。下面来到具体的过程:
1,打开vmware server,点击“New Virtual Machine”,在安装向导的帮助下创建一个新的虚拟机:

在这个界面上,可以看到我所使用的vmware server版本是1.0.6,这也是普遍使用的vmware版本,至于vmware server2.0这个东西还太新,存在不少bug,建议慎用之。
2,点击“下一步”:
3,选择“Custom”,点击“下一步”:
4,实验中我们要用到linux操作系统,所以这里选择操作系统类型为“linux”,点击“下一步”:
5,给虚拟机命名为“RAC1”,试验中RAC1为主节点,之后的RAC2为副节点,大部分配置都在RAC1中完成,路径选择“N:\experiments\RAC1\”,这是移动硬盘上的路径:
6,取消“Make this virtual machine private”里面的勾,点击“下一步”:
7,这里用默认即可,直接点击“下一步”:
8,选择CPU个数,这里我们只用一个即可,点击“下一步”:
9,下面来到内存划分区域,系统默认只给128MB大小内存,根据实验需求,这里我们给到512MB内存:
注意:因为我的系统总共有2G,所以在这里很潇洒的给了512MB内存,两个系统跑起来之后就要占用1GB内存,这里要视各自内存大小而定。推荐使用512MB内存,我试过给768MB内存大小,系统跑起来感觉跟512MB也差不了多少。
10,这里选择使用桥接方式,点击“下一步”:
11,在I/O适配器类型下选择“LSI Login”方式,然后点击“下一步”:
这里简单说一下,为什么选择“LSI Login”而不是“Bus Login”方式。我曾经试过在这里选择“Bus Login”方式,但在安装linux的时候发现系统找不到磁盘,也就无法继续往下安装操作系统,究其原因是在加载虚拟机的时候并没有加载“Bus Login”这种SCSI适配器的驱动,因此就算分配了磁盘也识别不出来,而选择“LSI Login”方式就不存在这样的问题。从这里开始了我的问题积累,因为错选适配器类型找不到磁盘来安装linux操作系统从而导致我重新安装了虚拟机和操 作系统。
12,选择“创建一块全新的虚拟磁盘”,点击“下一步”:
13,这里切记一定要选择SCSI方式磁盘类型,否则前期所选择的I/O适配器类型就白选了,然后点击“下一步”:
这里再简单说一下为什么在这个地方所以要选择SCSI类型而不是IDE的类型。选IDE类型本来是可以的,安装linux操作系统也能满足,系 统能够识别到新添加的虚拟磁盘,但是随着实验的继续进行,我们会发现一个很大的疏漏。因为这个版本的虚拟机默认在IDE类型下只能创建四块虚拟磁盘,而仅 仅四块磁盘并不能满足实验需要,因为我们需要至少五块磁盘,一块用来作为本地磁盘安装linux操作系统,两块在安装clusterware软件的时候要 用到,也就是ORACLE RAC所必须的ocr以及vote磁盘,表现出来是裸设备方式,还有两块磁盘我们要用来作为共享磁盘安装数据库。如果选择IDE类型的磁盘方式,那么在安 装操作系统的时候就要占去两个IDE地址,一个地址供本地磁盘用来安装linux操作系统,一块供光驱用来指定安装介质,到划分裸设备的时候就要因为没有 足够的磁盘而头痛了。没有足够的磁盘,而操作系统又已经安装好了,怎么办?唯有删去操作系统、删去虚拟机,从头开始,这是相当痛苦的一次经历,而我就碰上 了。这里第二次安装了虚拟机和linux操作系统。
14,给新建的虚拟磁盘分配空间,因为我有足够的空间(250GB),所以大大方方的给了25GB,建议最少给8GB的磁盘空间,然后点击“下一步”:
注意这个地方可以不选择“Allocate all space now”,这个选项主要针对后面的裸设备而言,否则这个地方会因为分配磁盘空间浪费不少时间。
15,给虚拟磁盘命名为RAC1.vmdk,点击“完成”:
16,通过下图可以看到,一个简单的虚拟机就建立好了,在Devices下面可以看到我们这个虚拟机拥有一台普通的台式机所需要的所有部件:内存、CPU、光驱、硬盘、网卡:

配置虚拟机


一个新的虚拟机建立好之后,不要忙着立即投入使用,因为我们还要在里面指定光驱所对应的安装介质,还要添 加诸如磁盘、网卡,来满足实验所需。当然,我们也可以在实验进行过程中再根据需要来添加,不过那样比较麻烦,因为介质的添加不能动态进行,而需要停机操作 (这个版本的虚拟机暂时还达不到热插拔的高度)。所以,为了避免实验后期出现缺胳膊少腿的现象,前期规划显得相当重要,就跟盖大楼之前需要打好良好的地基 一个道理,下面来到具体的配置过程:

1,在建好的虚拟机下点击“Edit virtual machine settings”,来对这个虚拟机进行编辑:
2,弹出如下的画面,我们可以在这里通过“Add”、“Remove”按钮来对实验所需设备进行简单的添加或删除,首先我们要添加两块网卡,点击“Add”:
3,这里显示的就是安装向导,直接点击“下一步”:
4,在硬件类型下面选中网卡类型,然后点击“下一步”:
5,和前面的网卡一样,选择桥接方式,在“Connect at power on”里面打勾,然后点击“完成”,这样一块新网卡就添加完毕:
在上面的图中,我们可以看到多了一块名为“Ethernet 2”的新网卡。除了这块网卡之外,我们还需要一块网卡,按照实验需求,两块网卡便可以满足需求,至于为什么我这里还要建立第三块网卡,文章后面会提到,这里暂时略过不提。
6,下面我们要添加磁盘,这里要牢记实验所需磁盘数量是五,除去本地磁盘之外,我们还需要额外的添加四块磁盘,其中两块ocr和vote作为clusterware安装所需,两块作为ASM磁盘:
7,在硬件类型里面选择硬盘图标,然后点击“下一步”:
8,和前面一样,选择创建一块新的虚拟磁盘,点击“下一步”:
9,磁盘类型切记一定要选择“SCSI”方式:
10,这里我们首先创建的是OCR跟VOTE这两块裸设备,因为他们不需要占用太大空间,这里我们给每块磁盘分配100MB大小的空间,并选择立即分配方式:
11,选择磁盘路径,然后命名,然后点击“完成”:
这里又必须要简单的说明一下了,我们在建立除本地硬盘之外的四块磁盘的时候,路径上一定要注意,不要把本地硬盘和其他四块磁盘放到一个目录下。 本地磁盘位于一个目录,裸设备磁盘位于另一个独立的目录,这样做主要是为实验后期磁盘克隆作考虑,至于为什么这样做文章后面会提到,因为这个问题,导致了 我第三次的重装操作系统和虚拟机。
12,点击“完成”之后,系统会进行磁盘的格式化操作,在磁盘创建时所分配的100MB空间会全部给予这块磁盘:
格式化100MB的磁盘空间很快,不过十来秒钟,不过时间跟划分磁盘大小成正比,磁盘越大,格式化时间就越长。这也应了我们在创建本地磁盘的时 候为什么不一股气把25GB空间全部划分出来,一是因为占用时间过长,让人感觉到机器死机,二则是本地磁盘的使用不像裸设备那样面面俱到,随需而用而已。
13,创建完磁盘之后,我们要在高级选项里面为新建磁盘分配另一个SCSI总线地址,并在“Independent”里面打上勾:
14,这是创建的第二块磁盘,分配100MB空间大小,命名为“vote.vmdk”,创建过程不赘述
15,接下来是两块ASM磁盘,每块磁盘分配2GB大小,这两块磁盘主要用来存放ORACLE数据:
16,我们点击光驱图标,然后指定到linux镜像介质对应的路径:

17,所有设备创建完毕,现在我们可以来看看具体清单:512MB内存、5块磁盘(分别位于两条SCSI总线)、三块网卡、光驱以及处理器:


安装Linux


虚拟机建立完毕,下面启动虚拟机来进行linux的安装:
1,如果光驱所对应的安装镜像没有问题,我们会看到如下的画面:

在这里我们可以比较直观的看到一些东西,除了linux的安装界面之外,我们在右下角可以看到光驱、硬盘、网卡的图标,随着安装的进行,这些图 标会反映出一定的繁忙程度。底部中央可以看到vmware server的版本为1.0.6。在左下角可以看到一个惊叹号以及“you do not have vmware tools installed”等内容,VMware Tools是随虚拟机的一个可选择安装程序,他的好处在于免去了鼠标频繁切换这样一个动作,在以后的文章会单独提到VMware Tools的安装,这里略过不提。
在linux安装界面下点击鼠标进入可操纵区域,然后回车开始linux操作系统的安装,随后我们看到的是驱动程序的安装以及光盘的检测,这里 值得一提的是,如果选择正确I/O适配器驱动程序,比如SCSI的LSI,那么这个过程能够看到此驱动程序的加载过程。反之,如果选择了SCSI的BUS 驱动程序类型,那么看不到加载过程,且后期也会出现找不到磁盘的错误提示,所以选择正确的驱动程序尤为重要。驱动程序加载过程略过,下面显示的是光驱的检 测过程:
如果对光驱不放心,那么可以选择“OK”进行检测,如果信心百倍,那么直接“Skip”吧,这样可以节约不少时间,这里我直接选择“Skip”。
2,来到linux操作系统的安装界面,这里选择“next”往下走:
3,为了实验后期操作方便,这里选择英文为系统默认语言环境:
4,在我第一次看到下面这张图片出现的时候是相当兴奋的,因为之前几次都是因为错误的选择了IO适配器的驱动程序导致这里无法识别到磁盘从而引 发系统报错然后自动重启。反复几次折腾之后学乖了,选择了正确的SCSI驱动程序,在这一步时才会弹出警告,询问用户是否执行磁盘初始化工作,加载了几块 磁盘,这里便弹出多少次系统警告消息。因为都是新建的磁盘,所以无所谓,大胆的选择“Yes”,然后往前走:
5,下面这张图片是相当关键的,在这里有两个注意事项,一是一定记得将除本地磁盘/dev/sda之外所有磁盘标识符前面小方框里面的勾给取消 掉,二是在“Review and modify partitioning layout”前面打勾,便于后期的系统分区与规划。至于为什么要取消掉除本地磁盘/dev/sda之外所有磁盘标识符前面小方框里面的勾,这里先略过不 谈,到文章更新到实验中期再谈。因为这个地方出错,导致我接连重装三次操作系统,那么累计到这个地方我就已经重装了六次操作系统了。

在linux系统安装过程中值得注意的地方上一篇文章已经讲述过了,接下来的过程就相对简单得多:
1,从这里可以看出,前面选择了的磁盘/dev/sda这里为可编辑状态,前面没有选上的磁盘从/dev/sdb到/dev/sde为不可编辑状态,空白区域里面显示的分区信息属于/dev/sda磁盘:

2,选中“/”,点击按钮“edit”进行编辑,将“/”的大小设定为10GB,因为我们总共分配了25GB大小,所以这里给得比较多,为的是有备无患:
3,添加“/home”文件系统,分配1GB大小空间,“/home”主要是用来存放用户信息如ORACLE等:
4,添加“/opt”文件系统,并分配10GB大小空间,“/opt”文件系统主要用来作为clusterware以及database的安装路径:
5,将剩余空间全部给新增加的文件系统“ly_media”,主要用来存放clusterware、database以及一些系统补丁的介质。其实也可以不创建这个文件系统,把所有剩余空间归并到/opt下,这样做只是为了层次分明一些:
6,文件系统规划完毕,点击“next”:
7,这里使用系统默认,点击“next”:
8,接下来这张图片比较重要,前期我添加了三块网卡,所以这里对三块网卡的配置都要一一到位,主要遵循以下几个原则:
a、使用IPv4支持方式,不使用IPv6支持方式;
b、网卡一和网卡二使用静态IP分配,且都使用私有地址;
c、网卡三使用动态分配IP地址方式(至于为什么这样做,在实验后期会有所说明。按理说实验用只需要两块网卡即可,这里我额外分配的第三块网卡是为了实验方便)。
这里将主IP地址设为192.168.1.0网段,副IP地址设为192.168.2.0网段,默认网关使用10.10.10.254,和本机使用同一网关地址。

9,区域选择里面我们选择“上海”:
10,设置系统管理员密码,这里设置为“rootroot”:

11,这个环节也显得稍许重要,如果磁盘空间足够,比如我一鼓作气分配了10GB的空间给“/”文件系统,建议能装上的都装上,免得后面的实验 环节因为缺胳膊少腿再来返工。这里推荐选上“Software Development/Web Server/Virtualization”三个组建,然后选上“Customize now”,点击“next”:
12,如下图所示,能选上的都选上吧,我估算了一下,就算所有的组建都安装,大概会占用“/”4个G左右,跟10G比较起来也算是少的了,所以我不怕:
13,在语言组建这块,其实只需要选上“中文支持”就可以了,其他语言支持装那么多也没用:
14,下面显示的是包的自检过程:
15,自检过程完毕之后,点击“next”进行系统组建的安装:
到这里稍微告一段落。

下面开始整个操作系统的安装过程:
1,在上一步点击“next”之后,系统弹出如下的对话框,大意是说本次系统安装都需要哪些介质,这里我使用的是linux enterprise 5.1,总共需要五张CD,而这些当然是一早就准备好了,所以点击“continue”让系统自动安装即可:

2,文件系统创建过程:
3,开始系统的安装过程:
4,第一张CD内容安装完毕之后,系统会弹出对话框提示用户更换CD,下面讲述具体办法:
在调出这幅图之前,花了不少时间来研究怎么换盘。后来搞清楚状况,首先要从屏幕中切换出来(ctrl+shift),双击屏幕右下角光驱的图标,通过点击“Browse”找到正确介质所对应的路径,然后点击“ok”按钮即可。

又开始换盘了:

再次换盘:
第四张盘和第五张盘的更替很快,这里弹出需要更换最后一张安装CD的提示:
5,所有安装工作,系统提示需要重启,来进行更细致的配置过程:


启动完成之后,开始进一步细化的配置(简单,一路向前)。
1,在左边的列表中可以看到需要配置的具体清单,点击“Forward”:
2,确认协议,然后点击“Forward”:

3,Disable掉防火墙设置,然后点击“Forward”:
4,继续Disable掉SELinux的配置,点击“Forward”:
5,取消Kdump的配置,继续“Forward”:
6,设置系统日期和时间,继续“Forward”:

7,给系统设置一个普通用户,并设置密码:
8,声卡设置,继续“Forward”:

9,配置的最后一步,如果不安装附加的CD,这里就可以直接点击“Finish”:
10,这时系统要求重启,点击“OK”即可:
11,经过一系列的关闭、启动之后,终于来到了系统管理员登陆界面,不容易啊,输入超级用户帐号密码进行登陆:
12,登陆成功后,展现在眼前的就是Enterprise Linux 5.1操作系统的全貌:
至此,linux操作系统安装部分结束。

主节点的设置


1,修改虚拟机的配置

在配置linux 系统之前,首先到主节点RAC1目录下,打开.vmx 文件,添加下列内容:

disk.locking = "false"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"

diskLib.DataCacheMinReadAheadSize = "0"

diskLib.dataCachePageSize = "4096"

diskLib.maxUnsyncedWrites = "0"

scsi1:1.deviceType = "disk"

scsi1:2.deviceType = "disk"

scsi1:3.deviceType = "disk"

scsi1:4.deviceType = "disk"

2,编辑/etc/hosts文件,添加如下内容:

192.168.1.100 rac1

192.168.1.101 rac2

192.168.1.200 rac1-vip

192.168.1.201 rac2-vip

192.168.2.100 rac1-priv

192.168.2.101 rac2-priv

这里简 要说一下,192.168.1.100/101是在安装操作系统时在第一块网卡上配置好的,192.168.2.100/101是在安装操作系统时在第二 块网卡上配置好的,至于192.168.1.200/201地址只用在/etc/hosts文件中指定即可,不用编辑到任何网卡,因为它只是作为虚拟IP 地址在ORACLE RAC中使用。至于第三块网卡,因为我设定的动态IP获取方式,所以在这里用不到。

3,创建组oinstall,dba,用户oracle

[root@rac1 ~]# groupadd oinstall

[root@rac1 ~]# groupadd dba

[root@rac1 ~]# useradd -d /home/oracle -g oinstall -G dba oracle

设置oracle 用户密码(密码也设为oracle)

[root@rac1 ~]# passwd oracle

Changing password for user oracle.

New UNIX password:

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

4,开通FTP功能(因为系统默认并没有打开FTP功能,这里需要人为的设置一番,在这个地方,就要用到我们前面添加的第三块网卡的动态获取IP功能)

4.1,启用第三块网卡功能:

通过ifconfig eth2可以看到第三块网卡自动获取的IP地址10.10.10.150,和我所使用笔记本的 IP地址处于同一网段,且默认路由都设置为10.10.10.254,ping路由没有问题,在这种情况下,就能实现从本机到虚拟机的FTP互访。可能有 人觉得奇怪,为什么要设定为动态获取,直接指定10.10.10.0网段的IP地址不就可以了吗?因为整个实验进度会很长,实验环境会随时发生变化,有时 候在单位做实验,有时候在家里做实验,有时候又是在外面的茶楼、酒吧做实验,本机的IP地址跟路由都是不断变化的,有时候是10.10.10.0网段,有 时候是192.168.1.0网段,有时候是其他网段,为了每次跟本机自适应来实现FTP功能的互访,所以设置第三块网卡为自动获取IP显得尤为重要。至 于默认网关也经常发生变化,其实只需要通过一条命令route add/delete default gw x.x.x.x来进行默认路由的修改就可以了。

4.2,通过执行service vsftpd start来启动ftp功能,然后来到/etc/vsftpd目录,这里我们要编辑两个文件,分别是ftpusers和user_list:

4.3,下面这幅图显示的是/etc/ftpusers的内容,我们需要做的是在“root”字样前面添加注释符,通过这种手段来打开root用户对ftp功能的使用。同理,需要编辑的文件还有user_list:

通过编辑这两个文件,我们就可以在windows下以root用户登陆到虚拟机里同一网段的linux系统下,第三块网卡的使命就在于此。

4.4,FTP功能演示,这里我们简单上传一个文本文件:



1,修改oracle用户的初始化参数文件

[root@rac1 ~]# vi /home/oracle/.bash_profile

增加如下内容:

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_BASE=/opt/ora10g

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export ORACLE_SID=RACDB1

export ORACLE_TERM=xterm

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin/

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

umask 022

2,创建/opt/ora10g目录,要注意该目录所有者或oracle用户的权限

[root@rac1 ~]# mkdir /opt/ora10g

由于该目录主要由oracle 用户操作,因此我们将其所有者改为oracle

[root@rac1 ~]# chown oracle.oinstall /opt/ora10g

3,配置内核参数

[root@rac1 ~]# vi /etc/sysctl.conf

增加或修改下列内容

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 1048576

net.core.rmem_max = 1048576

net.core.wmem_default = 262144

net.core.wmem_max = 262144

[root@rac1 ~]# sysctl -p

让设置生效

4,提高Oracle用户的shell限制

设置oracle 使用的文件数权限

[root@rac1 ~]# vi /etc/security/limits.conf

增加下列内容

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

修改安全限制

[root@rac1 ~]# vi /etc/pam.d/login

增加:

session required /lib/security/pam_limits.so

配置Hangcheck 计时器

[root@rac1 ~]# vi /etc/rc.local

增加:

modprobe hangcheck-timer hangcheck-tick=30 hangcheck_margin=180

5,磁盘分区

通 过fdisk -l可以看看所有磁盘的状态,如果前期裸设备规划正确的话,在诸如/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde下面是看不到 任何分区信息的,这也表明这些磁盘都是干净的磁盘,不像/dev/sda那样不干净(有了文件系统)。下面我们要对/dev/sdb到/dev/sde的 四块磁盘进行分区,分区过程如下图所示(这里以/dev/sdb为例,其他磁盘操作类似):

经过这样的步骤,裸设备就创建好了。之所以称之为裸设备,就是因为自身不带任何文件系统,如下图所示:

到这个地方,要跟前面的文章首尾呼应一下了。把前面的那副图片专门提出来说明一下:

在 这个地方,我取消了/dev/sdb到/dev/sde前面小方框里面的勾,之所以这样做,就是为这个地方的磁盘分区做准备的。取消那个地方的勾和不取消 是有着很大关系的,如果不取消的话,在磁盘分区的时候会出现什么状况?系统会提示你这块盘上面已经分好区不用你再分了!如果你强行要分区,那么就必须把之 前的分区信息给删除掉重新分配。如果这时采取这样的动作,那么危险就来了,在下一刻你关闭系统、重新启动的时候系统会报告一个严重错误,说系统磁盘所属卷 组受到了严重破坏,然后系统无法启动。

分 析一下为什么会出现这样的情况,如果我们在系统安装的时候没有取消掉/dev/sdb到/dev/sde前面小方框里面的勾,那么相当于我们用于安装操作 系统的磁盘从一个变成了五个,虽然/dev/sdb到/dev/sde没有直接参与操作系统部分的安装,但是他们已经和/dev/sda这块盘被一起划分 到了同一个卷组,因此也自动的获得了分区信息。在磁盘分区这个阶段,如果再对包括/dev/sdb到/dev/sde这几块盘进行分区信息的重建,那么就 破坏了原有卷组信息。举个简单的例子,一个银行有一个金库,打开这个金库大门需要五把钥匙,五把钥匙分别放在五个人手里,这五个人都是银行的核心职工,这 样做当然是为了提高安全性。试想假如有一天同时丢了四把钥匙,那仅剩的一把钥匙自然是不能打开金库大门的。在安装linux操作系统的时候我们本来只需要 一块硬盘来与之发生关联,但是现在我们让其他四块磁盘也参与了进来,在实验过程中又变相的毁掉了那四块磁盘,自然系统就发生紊乱了。


磁盘分区过程完毕之后,下面要来到主节点设置的最后一个步骤:打补丁。之所以把这部分单独罗列出来,因为 打补丁在整个实验过程中的重要地位不容忽视。很多时候,无论是windows操作系统还是unix操作系统,我们在进行某项重要实验的时候,总是发生一些 莫名其妙的错误,让你不明白到底疏漏了什么地方。其实每到这种情况,尤其是在ORACLE RAC或者HA环境部署情况下,关注系统补丁是否安装完整变得很重要。

工作中接触UNIX多一些,所以这方面的感触也多一些,补丁,无论是操作系统补丁还是软件补丁,对生产或者应用,对安全性或者功能性都很重要。 为什么要做到面面俱到,尤其是在打补丁方面更不能忽略每一个细节,这对整个实验过程的顺利进行实在太过重要,因此下面专门用完整的篇幅来介绍 vmware+linux+oracle rac环境下系统补丁或者数据库补丁的安装。
满足linux操作系统下ORACLE RAC的搭建,主要要打两种类型的补丁,一种是系统内核补丁,一种是满足于ORACLE数据库的补丁。对于本次实验而言,所需的大部分补丁可以在以下两个链接上下载:
http://www.oracle.com/technology/software/tech/linux/asmlib/rhel5.html
http://oss.oracle.com/projects/compat-oracle/files/Enterprise_Linux/
除此之外,我们还需要额外的下载两、三个补丁,否则从链接地址上下载的补丁不能完全安装好。值得注意的是,在linux下安装补丁,补丁一定要 严格对应操作系统版本,否则有可能导致系统全面紊乱。我就遇到不止一次,一次在linux5.2的操作系统下打了一个linux5.1操作系统的字符方面 的补丁,导致图形界面启动不来。这个还好办一些,直接在系统启动的时候中断掉,然后到命令行模式下手工删除之前安装的补丁包,再重新启动系统,就ok。更 倒霉的一次,因为错误打了一个其他版本操作系统的补丁,导致系统启动直接黑屏,连单用户模式都进不去了。这两次都是在实验进行过程中出现的,究其原因就是 因为没有引起足够的重视,也是因为还不熟悉linux操作系统下打补丁,一次解决了,一次无法解决,结果很无奈的重装操作系统,累计到这里就已经重复安装 操作系统七次了。
下面介绍一下本实验过程中打补丁的全过程:
1,将下载所有补丁压缩到一个zip包里,以ftp方式上传到linux系统的“ly_media”目录下:
2,在“ly_media”文件系统用unzip命令解压缩补丁包,我们可以看到实验所需所有补丁:
以上图片就是此次实验所需所有补丁包,这里简单的介绍一下,其中:
oracleasm打头的六个补丁包是从http://www.oracle.com/technology/software/tech/linux/asmlib/rhel5.html上下载的。
compat打头的四个补丁包、openmotif21打头的两个补丁包,以及xorg-x11打头的一个补丁包是在http://oss.oracle.com/projects/compat-oracle/files/Enterprise_Linux/上下载的。
剩下三个补丁(kernel打头的两个补丁包和libXp打头的补丁包)是我额外单独下载的,为什么要下载这几个补丁包,那是大有来头。因为在 linux下的补丁包,很多都是相互关联的,比如我在打oracleasm-2.6.18-53.el5debug-2.0.4-1.el5.i686这 个补丁包的时候,系统提示无法安装,缺乏kernel-debug补丁包;在打oracleasm-2.6.18-53.el5PAE- 2.0.4-1.el5.i686补丁包的时候,系统提示需要kernel-PAE补丁包,否则操作无法继续进行。
遇到这种情况的时候,就需要我们单独下载匹配的、和操作系统版本相符合的补丁包,像本实验中的kernel-debug- 2.6.18-53.el5.i686、kernel-PAE-2.6.18-53.el5.i686这两个补丁包就是单独从外网下载的。除了这两个,我 还用到了libXp-1.0.0-8.1.el5.i386这个补丁包,这就牵涉出了打补丁的第二个要点:先后顺序,这也是我几经折腾之后方才发现的。在 我打补丁包compat-oracle-el5-1.0-5.i386的时候,系统提示我需要安装 openmotif21-2.1.30-11.EL5.i386补丁包,我心里一乐,有啊。于是乐不可支的去安装这个补丁包,岂料系统又出一提示:请先安 装libXp,这就涉及到了我额外下载的第三个补丁包libXp-1.0.0-8.1.el5.i386,到我下载好这个补丁包,再按照前后反复多次打补 丁的经历,总结出了在本实验过程中,应该按照这样的细则打补丁:先独立、再关联。也就是先把不依赖于其他补丁包存在的补丁打好,然后再打前后关联那些补丁 包,这样一来,就不存在任何问题了。
在打补丁这个环节,我多次尝试,才总结出其中的规律,现将本实验打补丁包顺序罗列如下:
1,compat-binutils215-2.15.92.0.2-24.i386
2,compat-libcwait-2.1-1.i386
3,compat-libstdc++-egcs-1.1.2-1.i386
4,openmotif21-debuginfo-2.1.30-11.EL5.i386
5,xorg-x11-libs-compat-6.8.2-1.EL.33.0.1.i386
6,oracleasm-support-2.1.2-1.el5.i386
7,oracleasm-2.6.18-53.el5-2.0.4-1.el5.i686
8,oracleasm-2.6.18-53.el5xen-2.0.4-1.el5.i686
这八个补丁,安装无先后顺序,因为他们都是相互独立的,下面就有些讲究了:
1,kernel-debug-2.6.18-53.el5.i686
2,oracleasm-2.6.18-53.el5debug-2.0.4-1.el5.i686
其中1、2相互关联
3,kernel-PAE-2.6.18-53.el5.i686
4,oracleasm-2.6.18-53.el5PAE-2.0.4-1.el5.i686
其中3、4相互关联
5,libXp-1.0.0-8.1.el5.i386
6,openmotif21-2.1.30-11.EL5.i386
7,compat-oracle-el5-1.0-5.i386
其中5、6、7相互关联
8,oracleasmlib-2.0.3-1.el5.i386
这个补丁之所以放到最后打,是因为他跟oracleasm打头的补丁整体有个先后顺序,先安装oracleasm打头的补丁,再安装这个,才满足要求。
3,下面继续本次实验的补丁安装过程:
4,配置裸设备:

由于RHEL5 中取消了rawdevices,如果不想将映射命令放到rc.local 中的话,我们就需要将其配置到/etc/udev/rules.d/文件夹中

修改文件

[root@rac1 ~]# vi /etc/udev/rules.d/60-raw.rules,添加内容如下图所示:

5,重启服务以及验证:

这样,主节点的设置过程完毕,下面就要开始副节点的设置了。


副节点的设置


主节点设置完毕之后,下面来到副节点的设置。
说点题外话,在没有看君三思《手把手教你用VMware在linux下安装oracle10g RAC》这篇文章的时候,我没有把握好顺序,也就是说没有按照先主后副的顺序来进行实验,完全没有想到可以在主节点配置完成之后克隆一个副节点出来,稍加 修改,就成了一个完备的系统。
我最初做实验的时候,同时配置两个虚拟机,同时安装两套linux操作系统。在安装操作系统的时候,我的电脑基本就不动了,CPU占用率居高不 下。正常情况下两个小时就完工了,我同时安装两套操作系统用去了足足三个半小时,后来因为不符合要求还是其他什么原因,我又删去一个。这样的傻事我连续干 了两次,在看到三思文章里面系统克隆大法的时候我心都要碎了,我想的是为什么没有早一些看到这篇美文。在即将隆重介绍的就是系统克隆大法之前再说点题外 话,这个题外话尤为重要,因为这个地方卡壳,导致我重装系统三次有余,累计起来,我重装系统的次数已经达到了十次。不过也是在最后一次重装系统的时候,找 到了其中的奥妙所在。
先献上一副美图:
这副图里面展示了三个文件夹,其中RAC1文件夹包含了主节点的配置文件、RAC2文件夹包含了副节点的配置文件(这个文件夹里面的内容实际是 从RAC1里面克隆过来的)、raw_disk文件夹里面存放的便是裸设备文件。而在这之前实际存在的文件夹只有两个:RAC1和RAC2。至于 raw_disk里面的文件是和RAC1里面的文件放置在一起的。自然,经过克隆之后,RAC2文件夹里面也有了裸设备文件。看上去很美,因为克隆把包括 裸设备文件在内的所有文件都给弄过来了,但实际不是这么回事,这么做恰恰为之后创建共享磁盘这一实验步骤埋下了剧毒,具体原因写到创建共享磁盘的时候再点 明,那样会印象更加深刻一些。这里先按照正确的方法往下做:
1,关闭主节点(shutdown -hy 0掉linux操作系统),然后在和RAC1、raw_disk文件夹相同目录下创建目录RAC2,然后将RAC1目录下所有文件运用操作系统复制粘贴技术原模原样的给弄到RAC2下来:
这里根据各自系统分配空间而定,因为我前期给用来创建linux操作系统的本地虚拟磁盘指定了25GB大小,所以复制的时候时间稍长,有七分钟左右。
2,复制完毕之后,可以看到RAC2下的文件和RAC1无论大小以及文件名完全相同:
3,使用文本编辑器打开RAC2下的vmx文件进行修改,将凡是命为RAC1的地方改为RAC2,如下图所示:
这里需要更改的只有两处,改完之后我们退回到RAC2目录下,将RAC1.VMDK这个文件改为RAC2.VMDK:
4,改完之后,我们在虚拟机中按照RAC2的路径对vmx文件做open操作,这样,另一个活生生的系统又出现在人民大众面前:
5,点击绿色启动按钮进行对RAC2的启动,在弹出来的对话框中选择“CREATE”:
6,启动到系统后,因为保留了RAC1的所有参数,所以我们要略做一些修改,首当其冲的,自然是系统名称,修改过程如下:
7,然后将网卡的MAC地址修改为正确形式,首先通过ifconfig命令记录正确的网卡MAC地址,注意这个地方我们用ifconfig观察 到的MAC地址是正确的,而存在于/etc/sysconfig/network-scripts目录下诸如ifcfg-eth0、ifcfg- eth1、ifcfg-eth2等文件下的MAC地址是错误的,我们要做的就是用ifconfig命令记录下来正确的MAC地址去替换ifcfg- ethx文件中错误的MAC地址:
有一点要引起注意,在我们克隆过来的系统刚启动时,所有之前设置的网卡,不管是动态的、静态的,这个时候都会作为动态获取IP地址去获得一个和 本机处于同一网段的IP地址,所以除了MAC地址之外,还需要我们将动态获得的IP地址还原为/etc/hosts文件中为RAC2定义的IP地址,然后 重启网络,如下图所示:
8,除此之外,还要切换到oracle用户下修改ORACLE_SID这个环境变量:
9,值得一提的是,兴许有很多人会在这个过程中忽略一点,也包括我。这一点如非仔细观察不易发现,而忽略这一点导致的后果就是在启动系统到 sendmail的时候会停留很久,短则三五分钟,长则十二、三分钟,让人误解系统死机。好心好意的重启系统,到这个地方又很自然的放慢了春天的脚步,这 就很让人郁闷了。经过多次观察,我终于发现了症结所在。原来在系统启动到sendmail这个模块的时候会去检查环回地址loopback ip,如果这个地方设置有问题或者跟系统自身不符,那么就会花时间去不断的检测,检测到最后也没有结果系统就主动放弃,跳过这一环节去执行剩余的启动进 程。这就是为什么系统久久停留在sendmail这里挥之不去的原因,弄清这点之后,这个问题也就迎刃而解了:
至此,副节点的设置完毕,我们需要做的,就是重启系统,让新的主机名、IP地址等生效。

集群的配置


下面开始配置clusterware:
1,设置ssh
设置ssh是整个实验过程不可或缺的环节,简单说就是配置主节点和副节点之间的信任机制,让两台机器能够相互通信。这点跟在三大unix平台 hp/aix/solaris下建立.rhosts文件然后添加各节点IP地址跟主机名到文件中类似。首先在主节点RAC1上ping副节点RAC2上的 不同网段地址看是否能ping通:
2,在主节点上以oracle用户身份生成用户的公匙和私匙:
3,在副节点RAC2上执行相同的操作,确保通信无阻:
4,在主节点RAC1上执行以下操作:
5,主节点上执行检验:
要注意观察返回时间误差不要相差太大,否则需要执行时间同步。
6,在副节点上执行类似操作:


7,接下来要配置共享磁盘,这一步非常之关键,我很多次都在这里遭遇滑铁卢,但也因为碰到的、解决的问题的增多,这一步执行起来也越来越顺利。下面演示具体过程,首先在主节点上配置共享磁盘:
8,在副节点RAC2上执行类似操作:
9,在主节点RAC1上创建卷组VOL1/VOL2,分别对应/dev/sdd和/dev/sde:

10,在主节点上配置,在副节点上扫描,如果能扫描出主节点上创建的VOL1/VOL2,那表示成功:
到这里,clusterware的配置完成,下一节要花点时间介绍创建共享磁盘中可能遇到的不少问题以及解决方案。

故障处理过程

clusterware的配置在整个实验过程中是最为核心的步骤,而ASM磁盘的创建过程又是核心中的核 心。如果这一步走对了,接下来就轻松很多。反之,如果这一步始终过不去,那不仅后面的实验没法进行,而且很打击人的积极性。我就在这一步踯躅了很长时间, 因为所遭遇的故障久久无法解决,比如无法创建VOL1/VOL2的问题,比如在主节点上创建了VOL1/VOL2,但是在副节点上无法识别到的问题等等。 还好,搜索引擎足够强大,很多问题我碰到的,人家也碰到了,而且也给出了解决方案,顺着一个个的解决方案总算是过了这一关,下面来具体探讨一下所遭遇的故 障们。

1,同样的,为了跟前面的文章首尾呼应,这里先贴出一副图:
这幅图所透露出来的一个强烈的信息就是,裸设备文件和系统文件一定要隔离开,分别存放于不同的文件夹。为什么要这样做前面没有提,这里详细解释 一下。我刚开始做实验的时候就是把系统文件跟裸设备文件全置放在一个文件夹内,到克隆操作系统的时候,这些文件也跟着一起到了副节点。到了创建共享磁盘的 时候,潜伏的毒药就释放出来。比如我在RAC1上面创建了VOL1/VOL2,但是在RAC2上执行/etc/init.d/oracleasm scandisks后再执行/etc/init.d/oracleasm listdisks,没有任何显示,也就意味着在RAC2节点上识别不到RAC1节点上使用裸设备文件所创建的卷VOL1/VOL2。
造成这种现象的原因是此刻在RAC1和RAC2之间已经不存在任何联系,大家各自为政。在RAC1中存在实验所需裸设备文件,但是在系统克隆阶 段,这些裸设备文件又随之涌入到了RAC2中,成了RAC2所独有的裸设备。举个简单的例子,政府规定低保户可以享受每月500圆人民币的补贴用来维持生 活,甲因为家境贫困(没有裸设备),每月都靠政府发放的500圆人民币过日子。突然有一天,甲买福利彩票中了500万人民币(得到了裸设备),突然一跃成 为富人阶级,那么他当然无权继续享受每月500圆的补贴了。
理解了这一点,就比较好解决了,按照之前给出的正确方法,将系统文件和裸设备文件隔离开,分别存放在不同的文件夹,这样系统克隆的时候就把裸设 备文件排除在外。RAC1创建了VOL1/VOL2之后,RAC2再一扫描,就能够顺利的看到VOL1跟VOL2的身影了,这也就代表着共享磁盘创建成 功。
2,针对另外一个问题再给出一幅图片:
这幅图前面已经单独给过一次,而且也就为什么这样做给出了详细的解释,这里再啰嗦一下。除去系统磁盘之外的四块磁盘不能在安装操作系统的时候捆 绑在一起,否则后期磁盘分区的时候系统会提示你分区信息已经存在,如果你删去已经存在的分区再重新格式化磁盘并重新分区,在系统还没有重启的时候兴许感觉 不出来,但只要系统一重启,就再也无法正常进入到系统了,因为作为系统一个组成部分遭到了毁灭性的破坏,系统也随之灰飞烟灭了。如果在没有重启的情况下, 再使用这重新分区的磁盘来创建ASM磁盘,这时系统会认为这块盘还处于繁忙状态,并不是一块干净的磁盘,所以就无法创建可用的ASM磁盘。
碰到这样的问题,我还没有发现比较好的解决办法,唯有从头再来,这实在是一件让人痛苦不堪的事,这样的事,经历过一次也就够了。
3,在给出一张很有代表性的图片:
我看很多人在网上都贴出了类似这样的图片,问创建ASM磁盘不成功跟这个有没有关系,因为较之官方给出的配置过程不太一样,似乎少了些步骤:
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: [ OK ]
Loading module "oracleasm": [ OK ]
Mounting ASMlib driver filesystem: [ OK ]
Scanning system for ASM disks: [ OK ]
看到了吧,官方给出的配置过程和我实验中的配置过程还真不一样,乍看上去是少了一些步骤。很奇怪,我每次ASM磁盘配置过程都和我贴图上面一 样,从来没有一次与官方这个配置雷同。在我还没有找到为什么不能创建ASM磁盘时我还真怀疑大概跟配置过程不完整有关系,也导致我一怒之下关了虚拟机,删 去所有系统文件,从头来过(算上这一次,重装操作系统次数达到11次),但让人气馁非常的是到配置ASM磁盘的时候仍然和之前所显示一模一样。在我发现不 能创建ASM磁盘的原因竟然跟安装操作系统时犯下的错误有关之后,我跳过这一步不去管它,继续创建VOL1跟VOL2,然后再RAC2节点上 scandisks、listdisks,发现也能成功识别到VOL1跟VOL2,这说明我的配置也是没有问题的,虽然跟官方仍然存在那么一点点不同。
这段文字写完,希望所有对ASM磁盘配置过程心存疑虑的人们放心大胆的朝前迈,一点问题没有。

clusterware安装


接下来是clusterware的安装
clusterware的安装在主节点上运行,所以我们接下来要做的是启动主节点RAC1,打开FTP功能,把clusterware软件传上去,然后以oracle用户的身份来执行整个安装过程,请看截图:

RAC1重启之后,第三块网卡意外的丢失了动态IP地址,这里临时赋予他一个静态IP地址,和之前的地址保持一样。
上传clusterware_linux32.zip安装介质后,以unzip命令对这个文件进行解压缩,解压完成之后得到clusterware这个文件夹。
将clusterware整个文件夹的属主和权限按照oracle用户的要求进行修改。
注销当前窗口,以oracle用户登陆,这样整个环境变量就挂靠在oracle户头下了。
在安装之前,通常要检查当前的环境,命令如下:
[oracle@rac1 cluvfy]$ /data/rhel5/clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
在这个过程中,系统可能会报错,比如说什么包需要安装啊,swap区过小啊,这些东西统统不用管他们,跳过即可。这里说明一下,ORACLE有 时候报的错莫名其妙,牛头不对马嘴,比如说前段时间我在HP环境下配置ORACLE RAC,在加载裸设备ocr的时候,系统报错说赋予ocr的权限和属主有问题,建议查清后再说。仔细检查之后,权限跟属主一点问题没有,结果是因为共享卷 组没有激活导致,这想起来就很气人了,有这样忽悠群众的吗?所以ORACLE下的报错不必较真,就像这里一样,经过一番检查,他认为你试验环境没有达标, 但你硬要往下做他也拿你没招,典型的吃硬不吃软。下面开始安装clusterware:
1,以oracle用户进入到clusterware目录,以不进行系统环境检查的机制运行runInstaller:
切记runInstaller后的-ignoreSysPreReqs关键字是必不可少的,因为默认RedHat-5是不支持clusterware的安装的,我们必须过了这个山头才能安营扎寨。
2,稍微等上三、五秒钟,就能看到clusterware的安装界面,点击“next”:
3,根据我在oracle环境变量中的定义,系统默认将oraInventory目录安装到/opt/ora10g下,点击“next”:
4,定义clusterware的安装路径,点击“next”:


5,又到了安装前期的环境检查,这里需要把握的就是,凡是系统检查没有报告“failed”,那么就不用管,“warning”或者“not executed”都没有关系,只要我们在对应的小方框里面打勾就可以了:

6,这个地方系统默认只显示一个节点,另一个节点需要我们手工添加进来:


7,指定网卡类型,这里系统把所有可用的网卡都扫描进来,而我们实际需要用到的只有eth0跟eth1而已,除了手工屏蔽掉eth2跟virbr0之外(设置为not use),还需要把eth0设置为public方式:


先告一段落,后续再接上。

接着上回说,下面要导入裸设备文件ocr跟vote。
1,导入ocr所对应裸设备路径,点击“next”:
2,导入“vote”所对应裸设备路径,点击“next”:

3,磁盘、网络、安装路径设置完之后,下面开始正式的安装过程:
主节点安装完成后,系统会自动往RAC2对应目录下拷贝clusterware的所有文件。
4,献上一幅美图:
从这个图上可以看出系统的繁忙程度,在进行远程拷贝操作的时候,网卡繁忙得不行,同时本地磁盘也没有闲着。
5,安装过程完成之后,需要两个节点各自以root身份运行一些小脚本:
到这块就没这么轻松了,其实在/opt/ora10g/oraInventory下执行orainstRoot.sh都没有问题,在RAC1下 执行/opt/ora10g/product/10.2.0/crs_1下执行root.sh也没有问题,难就难在rac2下执行root.sh脚本,不 知道是系统bug的问题还是什么,反正就不让你好好做完,怎样都会报错,最后还需要手工运行vipca来启动一些进程,根据君三思提供的解决方案,下面列 出一个专题来进行说明。

这里附上各节点执行sh脚本的一些情况:
1,RAC1节点执行orainstRoot.sh:
2,RAC2节点执行orainstRoot.sh:

3,RAC1节点执行root.sh:
到这里前期的执行都是没有问题的。从RAC2开始执行root.sh这一刻起,问题来了,下面就着问题给出正确的解决方案:
4,RAC2节点上执行root.sh之前需要编辑两个文件,这两个文件都位于/opt/ora10g/product/10.2.0/crs_1/bin下,文件名分别为vipca和srvctl。首先编辑vipca文件,找到如下内容:
Remove this workaround when the bug 3937317 is fixed
arch=`uname -m`
if [ "$arch" = "i686" -o "$arch" = "ia64" ]
then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
fi
#End workaround
在fi 后新添加一行:
unset LD_ASSUME_KERNEL
然后编辑srvctl文件,找到如下内容:
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
同样在其后新增加一行:
unset LD_ASSUME_KERNEL
对应的报错信息是:
/opt/ora10g/product/10.2.0/crs_1/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0:
cannot open shared object file: No such file or directory
5,然后到RAC2节点下用root用户身份执行/opt/ora10g/product/10.2.0/crs_1下的root.sh:

看到了吗?又报错了,对应这个错误的解决方案如下图所示:

这时候没有必要再返回重新执行root.sh了,需要我们手工执行vipca命令来为两个节点添加一些必要的进程,至于在哪个节点上运行,这个就无所谓了,这里我是在RAC2上执行vipca命令:
点击“next”:
系统自动找到public的eth0,点击“next”:
在空白处填写各节点对应的vip名称以及IP地址(其实只要填写RAC1的vip名称,再点其他空白处,就自动获取出来了),点击“next”:
下面开始安装:


这个地方安装完之后就可以点击“ok”退出了。这个步骤执行完了之后我们还需要执行一个收尾的步骤,还记得 clusterware的安装是在RAC1上进行的吗?上一篇文章给出最后一幅图片是到各个节点上运行脚本,这里我们手工运行完vipca之后,如果成 功,那么相当于RAC2的root.sh也顺利完成使命,下一步需要做的就是返回到RAC1节点,执行剩下的步骤,如下图所示:


执行完毕之后退出整个clusterware的安装过程。

辛辛苦苦安装完clusterware之后,为的就是能在各自节点上看到CRS进程,如果这个也没问题,那才表示clusterware软件彻底安装成功:

到这里,可以看到RAC1和RAC2上各自对应的CRS进程都已经起来,可以放心了,clusterware安装过程结束。


安装database


clusterware软件安装结束,在各自节点也看到了CRS进程,下面继续database数据库软件的安装过程,因为这个过程比较简单,这里就简要奉上截图:
1,上传10201_database_linux32.zip到“ly_media”文件系统,以unzip命令解压database软件,赋予正确的权限和属主,再以oracle身份登陆进行安装:

2,弹出oracle安装界面:
3,点击“next”:
4,oraInventory仍然使用系统默认的路径,点击“next”:
5,选择企业版安装方式,点击“next”:
6,选择ORACLE数据库的安装路径,点击“next”:
7,选中两个节点,点击“next”:

9,在“warning”和“not executed”的小方框里面打勾,点击“next”:

10,这里只安装database软件,实例在后期安装:
11,下面是安装过程,因为在虚拟机+linux操作系统+oracle数据库安装程序同时运行,内存消耗比较大,所以这个过程比较长:



12,在安装进行到尾声的时候,在弹出来的对话框中按要求执行几个脚本程序,和clusterware安装阶段类似:

这个地方要注意一下,系统提示要在RAC1上以root执行orainstRoot.sh这个脚本,对RAC2没有要求。但没有要求并不等于不需要做,先来看看RAC1下执行orainstRoot.sh都执行了什么步骤:

可见这一步主要是给oraInventory目录赋予正确的权限和属主,即使系统没有要求,我们也需要到RAC2上执行类似的操作,给与oraInventory目录真确的权限和属主,否则在最后阶段会有报错信息。

11,分别到各个节点执行root.sh脚本:

12,点击“next”进行退出,database软件部分安装结束:


数据库软件安装完成之后,接下来要做的是给两个节点配置listener,也就是监听。监听在 ORACLE RAC中的地位非常重要,如果监听没有配置好,后期使用RAC方式建立实例就会出问题,下面在RAC1节点上以oracle身份登陆,运行netca,打 开网络配置,来完成监听过程的全过程。
1,通过oracle运行netca,打开网络配置界面,选择cluster配置方式,点击“next”:

2,选中两个节点,点击“next”:
3,选择监听配置模式,点击“next”:
4,选择“添加”,点击“next”:
5,给监听起一个名称,可以使用系统默认的LISTENER,然后点击“next”:
6,选择可使用的协议,这里选择TCP协议,点击“next”:
7,使用1521端口,点击“next”:
8,系统问是否还要配置其他监听,选择“No”,点击“next”:
9,监听配置完毕,点击“next”退出:
10,在终端窗口可以看到监听的配置情况:

11,在/opt/ora10g/product/10.2.0/crs_1/bin下运行命令crs_stat -t,可以看到刚配置好的两个监听进程已经启动:

到这里,监听部分的配置过程结束,接下来是要进行ORACLE RAC环节中的最后一步,也就是实例的创建过程。

在进行数据库的创建和ASM实例的安装之前,我们要确保三件事,一要确保两个节点的CRS进程都已经起 来,二要确保两个节点的监听进程都已经启动,三要确保vip都运行在各自的节点上,不能发生vip飘移的现象,否则ASM实例的创建过程会出问题。这三点 无误,那么下面来到数据库以及ASM实例的创建过程:
1,仍然在RAC1节点上,以oracle用户登陆,运行dbca:

2,选择RAC方式创建数据库,点击“next”:
3,选择“创建一个数据库”,点击“next”:
4,选上两个节点RAC1和RAC2,点击“next”:
5,选择“Custom Database”,点击“next”:
6,创建数据库名为“RACDB”,点击“next”:
7,Enterprise Manager(图形化管理界面)这个地方可选可不选,因为我空间足够大,所以这个地方选上了,点击“next”继续:


8,创建管理员密码,点击“next”:
9,选择“ASM”方式,点击“next”:
10,再次创建密码,以及相关的参数文件类型,点击“next”:

11,系统提示即将创建ASM实例,点击“OK”进行ASM实例的创建:
12,点击“CREATE NEW”来创建共享卷组:
13,点击创建卷组之后,系统会扫描可用的裸设备,因为前期创建了2GB大小的/dev/sdd和/dev/sde两块盘,这里被系统扫描出来。选中两块磁盘,给卷组命名为“rac_disk”,冗余方式选择“External”,然后点击“OK”:
14,创建共享卷组“rac_disk”过程:
15,创建好后,卷组自动在两个节点mount,如下图所示:
值得一提的是,我在两次实验过程中都发现,两节点上CRS进程、监听都运行得好好的,但是在创建共享卷组的时候会莫名其妙的出来一错误提示,说 RAC2上的监听没有生效,因此无法在RAC2节点上mount卷组。遇到这种情况的解决方法是在RAC2节点上停掉CRS进程重启一次,然后再回到 RAC1图形界面下点击“Mount All”可以解决。

16,这一步不需要任何操作,直接点击“next”即可:
17,是否设置flashback跟启用归档模式,这里我为了节省系统开销,就不选择了,继续“next”:

18,这个地方也少选为妙,否则安装数据库的时间会很长,点击“next”:
19,这里可以手工添加删除一些指定的表空间、控制文件、日志文件等,我选择系统默认,然后点击“next”:
20,Memory部分给一个合理的百分比,一般用系统默认即可:
21,Size部分也使用系统默认:
22,字符部分我把数据库字符集修改成ZHS16GBK方式,这也是比较通用的字符集,国家字符集保持系统默认:
23,连接模式保持系统默认:


24,所有设置完成,下面开始database的安装:

在数据库的安装过程中,可以随时切换到任意节点,通过crs_stat -t命令观察实例是否已经创建完毕:
这表示两个节点上实例都已经创建,只是还没有启动。
到这里,数据库创建完毕,接下来是实例的启动过程:
从这个图反映的情况来看,此时两个节点都相当的繁忙,因为又要运行CRS进程,还要本地、远程启动实例,网卡和本地磁盘都忙得团团转,系统CPU使用率狂飙。
从这幅图可以看出,RAC2节点上的实例启动完成,数据库可以连接。
RAC1上的实例也在慢慢启动,从这里可以看到他先RAC2一步抢占了数据库的主动权。
看到这幅图,我长舒一口气,整个实验过程就是为了能顺利的看到这幅图,至此,linux下ORACLE RAC配置过程全剧终。

实验总结


网上写实验过程的多,写实验总结的少,然而实验总结就像舞台上那一分钟,与之对应的是台下十年功啊。我写 “vmware+linux+oracle rac 全过程”专题写了两天,但做这个实验却花了我大约两个星期的时间,所以再花上那么三、四十分钟写一份总结,稍带把整个实验过程给回顾一遍,顺利的、不顺利 的,统统走上那么一遭,也是非常值得的。

首先,我要数数那数十次重配虚拟机+重装linux操作系统的经历,其中有几次重复,皆是没有找到解决某个具体问题的办法,不得已而为之,剩下的都是不得不做。


第一次,在新建虚拟机时选择SCSI为I/O适配器类型,在选择适配器驱动的时候错选了BUS类型,导致安装linux操作系统的时候找不到可用的磁盘,系统报错,重装;

第二次,新建虚拟机时选择IDE为I/O适配器类型,也安装了linux操作系统,结果在创建裸设备的时候突然发现可用磁盘不够,因为系统默认只能 创建四个IDE设备,光驱占去一块,本地磁盘占去一块,ocr和vote磁盘占去一块,这样一来没有足够的裸设备用来安装ORACLE数据库了,重装;

第三次,安装linux操作系统过程中(安装在移动硬盘上的某个分区),因为移动硬盘与笔记本电脑的USB连线发生意外故障,导致安装过程中断,操作无法继续进行,重装;

第四次,给系统打补丁时因为系统版本不一致,补丁打完重启系统后直接进入黑屏时代,怎么拨弄都毫无反应,重装;

第五次,安装linux操作系统时把裸设备和本地磁盘放到同一卷组里面,在对裸设备强制分区,重启后系统报严重错误,无法启动,重装;

第六次,因为没有找到问题所在,所有操作按第五次同样进行,到磁盘分区时又出现相同问题,故障发生后找到了问题所在,但系统已经无法拯救,重装;

第七次,一直没有注意新建虚拟机时将本地磁盘和裸设备放在了同一个文件夹,系统克隆的时候原封不动的拷贝了本地磁盘和裸设备文件,导致配置共享磁盘的时候无法识别到主节点创建的卷VOL1/VOL2,以为跟ASM的配置过程有关,重装;

第八次,重复第七次所有操作,到配置ASM磁盘的时候仍然无法识别到主节点创建的卷VOL1/VOL2,没有找到问题所在,重装;

第九次,注意到了克隆系统时候的问题,在RAC2节点上fdisk -l,也出来四块磁盘(相当于RAC2所独有的设备文件)。创建共享磁盘的时候果然失败,但庆幸的是总算是找到问题所在了,很高兴的重装;

第十次,这次严格意义上不算是一次故障,而是为了二次实验特地挑了移动硬盘上另一个50GB大小的分区把实验从头到尾做了一遍,又全程截图,这次操作很顺利,因为之前遇到的所有故障都清扫了。

其实出现的这些故障当中,有些故障是不需要重装系统的,但为了保证实验质量,毅然决然的采取了最极端的方式,牺牲一些时间,为的是得到一个比较良好 的实验状态。每一次故障解决都是一次经验的积累,技术的提升,这样想来,花那么长时间在linux系统下做一个ORACLE RAC实验也是值得的。

这次实验时间开销大,是因为之前没有用过linux的系统,这次索性从安装操作系统做起,通过实验的进行也熟悉了linux下怎么设置FTP、 telnet,怎么设置静态、动态IP地址,怎么打补丁,怎么磁盘分区,怎么时间同步,怎么创建文件系统,怎么创建ASM磁盘等等,获益匪浅。其实 linux系统学起来也不难,没有必要对着一堆又一堆的参考资料、官方文档从头到尾的看,关键还是多动手,通过动手来获取知识,这便是最好的方法论。

总结起来,在vmware下使用linux操作系统为介质来搭建ORACLE RAC环境,主要注意以下几点:

1,新建虚拟机时选择SCSI为I/O适配器类型,使用LSI logic驱动,这样可以拥有实验用足够的磁盘(针对vmware 1.0.6版本);

2,本地磁盘和裸设备文件分而置之,避免系统克隆时把裸设备文件也拷贝过去;

3,安装linux操作系统时,切勿将本地磁盘和裸设备文件划分到同一个卷组当中;

4,打补丁时切记对应正确操作系统版本,否则得不偿失;

5,对任何磁盘做“删除分区”这个动作前多想想此操作是否得当;

6,面对vip漂移的问题,先考虑是否拥有默认网关;

7,无论是安装clusterware还是安装database的时候,遇到报错信息,一定要学会看日志,虽然有的时候不一定管用;

8,足够的耐心。

(全文完)




No comments:

AVG Internet Security 2013

Total Pageviews

Contributors