ITPub博客

首页 > 数据库 > Oracle > Vmware+Linux+Oracle 10G RAC全程详细图解(三)

Vmware+Linux+Oracle 10G RAC全程详细图解(三)

Oracle 作者:dawn009 时间:2014-09-17 15:12:07 0 删除 编辑
主节点设置完毕之后,下面来到副节点的设置。
说点题外话,在没有看君三思《手把手教你用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的安装在主节点上运行,所以我们接下来要做的是启动主节点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,这个地方系统默认只显示一个节点,另一个节点需要我们手工添加进来:
 
 
 linux
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安装过程结束。

linux
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”:
 linux

8,按惯例,执行系统级检查:
9,在“warning”和“not executed”的小方框里面打勾,点击“next”:
 
10,这里只安装database软件,实例在后期安装:
11,下面是安装过程,因为在虚拟机+linux操作系统+Oracle数据库安装程序同时运行,内存消耗比较大,所以这个过程比较长:
 

 linux

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”继续:
 linux
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”可以解决。

------>>http://www.linuxidc.com/Linux/2011-02/31976p30.htm

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29119536/viewspace-1271768/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-08-15

  • 博文量
    595
  • 访问量
    4988622