- 论坛徽章:
- 0
|
七、安装Clusterware
注意: 时间同步很重要,否则安装过程出错.因为vmware的时间问题,我在安装到同步文件到rac2这步时,每2秒同步一次时间,不然安装出错.
在这项配置中,除非特别说明,所有操作都是基于oracle用户的.
1、利用ftp,把10201_clusterware_linux32.zip下载到rac1上(用oracle用户下载),并解压
$ cd /home/oracle
$ unzip -q 10201_clusterware_linux32.zip
$ rm -rf 10201_clusterware_linux32.zip
2、检查安装环境
在安装crs之前,建议先利用CVU(Cluster Verification Utility)检查 CRS 的安装前环境 (需要先安装cvuqdisk-1.0.1-1.rpm ,位于clusterware/rpm/目录下)
[oracle@rac1]$ /home/oracle/clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
需要注意几点,其返回的信息中有几个错误可忽略~~
.与VIP 查找一组适合的接口有关,错误信息如下:
错误信息如下:
ERROR:
Could not find a suitable set of interfaces for VIPs.
这是一个bug,Metalink中有详细说明,doc.id:338924.1,如说明中所述,可以忽略该错误,没什么问题.
.有一堆包的验证会出现错误,要么提示找不到,要么是版本不对.例如:
Check: Package existence for "compat-gcc-7.3-2.96.128"
Node Name Status Comment
------------------------------ ------------------------------ ----------------
node2 missing failed
node1 missing failed
Result: Package existence check failed for "compat-gcc-7.3-2.96.128".
...........
...........
这之类的吧
不用管它们,这也是一个BUG,只要确认节点中都已经安装了正确版本的 compat-* 包即可.
.内存检查失败
可以忽略的错误,内存差一点并不会影响到crs的安装,只是慢一些而已.
2、开始安装crs
会遇到Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2这个错误
解决方法如下:(这个方法还没有成功,还没有找到CentOS具体的配置,你在运行runInstaller的时候,需要加上-ignoreSysPrereqs参数,系统检查的时候,强制下一步)
$cd /home/oracle/clusterware/install
$cp oraparam.ini oraparam.ini.bak
$gedit oraparam.ini
### #[Certified Versions]
Linux=redhat-3,SuSE-9,redhat-4,centos-5,UnitedLinux-1.0,asianux-1,asianux-2]
再添加
[Linux-CentOS release 5.2 (Final)-optional]
TEMP_SPACE=80
SWAP_SPACE=150
MIN_DISPLAY_COLORS=256
解决中文乱码的方法:安装JDK方法
把jdk-1_5_0_16-linux-i586-rpm.bin从SUN公司网站下下来以后,ftp到rac1,rac2上(root权限)
# cd /root
# chmod 777 jdk-1_5_0_16-linux-i586-rpm.bin
# ./jdk-1_5_0_16-linux-i586-rpm.bin
按回车到文件最后,输入yes就可以了.
# rm -rf jdk-1_5_0_16-linux-i586-rpm.bin
# exit
如果使用中文安装,安装出现的乱码主要原因来自于oracle自带的jre,所以我们首先安装自己的java的jre安装好后
$ cd /home/oracle/clusterware
$ export ORACLE_HOME=/home/oracle/app/crs
$./runInstaller -ignoreSysPrereqs -jreLoc /usr/java/jdk1.5.0_16/jre
rac的安装并没有太明显的主从关系,一般我们认为,在哪个上面执行了安装,哪个就是主(实际也不完全是这样,主节点安装的时候,也会自动将文件复制到其它节点的)
这里我们选择rac1进行安装~~
安装图形界面的步骤:
下一步(N) -->
下一步(N) -->
下一步(N) -->
是(Y) -->
(1个警告,1个要求待验证.)下一步(N) -->
是(Y) -->
添加(A) -->
从上到下,依次是: rac2.localdomain , rac2-priv.localdomain , rac2-vip.localdomain -->
确定(O) -->
下一步(N) -->
选中eth0,点击 编辑(E) -->
把 专用 选择成 公用 -->
确定 -->
下一步(N) -->
外部冗余(E) -->
在空白处输入 /dev/raw/raw1 -->
下一步(N) -->
外部冗余(E) -->
在空白处输入 /dev/raw/raw2 -->
下一步(N) -->
(如果这时报 请检查/dev/raw/raw2是否有oracle权限时
在rac1,rac2上执行:
# chown oralce:oinstall /dev/raw/raw2
# chmod 660 /dev/raw/raw2
就行了.
下一步(N) -->
)
安装(I),现在等着,大概1小20时分钟时间
关于磁盘冗余
指定OCR使用外部冗余还是内部冗余,如果服务器作了raid,不需要内部冗余,直接选择外部冗余.
指定表决磁盘(所谓表决磁盘,实际就是一个文件),仍然使用外部冗余.
3、(一定会碰到这个错误,请在rac1的root.sh执行之前做,rac1,rac2都要做)
错误描述:在/home/oracle/app/crs/bin下,运行vipca就会有这个错误
(这个错误一定会碰见,因此在rac1在执行./root.sh之后,请先解决这个错误)
/home/oracle/app/crs/jdk/jre//bin/java: error while loading sharedlibraries: libpthread.so.0: cannot open shared object file: No suchfile or directory
可以按照如下方式解决:
修改vipca文件(需要在两个节点上操作)
[oracle@rac2 bin]$ cp /home/oracle/app/crs/bin/vipca /home/oracle/app/crs/bin/vipca.bak
[oracle@rac2 bin]$ gedit /home/oracle/app/crs/bin/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文件 (需要在两个节点上操作)
[oracle@rac2 bin]$ cp /home/oracle/app/crs/bin/srvctl /home/oracle/app/crs/bin/srvctl.bak
[oracle@rac2 bin]$ gedit /home/oracle/app/crs/bin/srvctl
找到如下内容:
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
同样在其后新增加一行:
unset LD_ASSUME_KERNEL
4、在rac1,rac2上,执行orainstRoot.sh和root.sh脚本.
$ su - root
# cd /home/oracle/app/oracle/oraInventory
# ./orainstRoot.sh
# cd /home/oracle/app/crs
# ./root.sh
遇到Native: listNetInterfaces:[3]的解决办法:(这个的时机是在rac1,rac2都执行完root.sh后,点确定之前,如果错误没有出现,可以不做这一步)
现象:
[root@rac2 bin]# ./vipca
Error 0(Native: listNetInterfaces:[3])
[Error 0(Native: listNetInterfaces:[3])]
解决办法:
[root@rac2 bin]# ./oifcfg iflist
eth0 192.168.1.0
eth1 10.0.0.0
[root@rac2 bin]# ./oifcfg setif -global eth0/192.168.1.0:public
[root@rac2 bin]# ./oifcfg setif -global eth1/10.0.0.0:cluster_interconnect
[root@rac2 bin]# ./oifcfg getif
eth0 192.168.1.0 global public
eth1 10.0.0.0 global cluster_interconnect
然后新开一个终端,要运行
# unset LANG
# /home/oracle/app/crs/bin/vipca
进行配置
遇到:IP地址 "rac1-vip" 已被使用.请输入一个未使用的 IP 地址.的解决办法:
手工重新配置VIP
使用root用户,在rac2上操作(需要图形界面)(这个的时机是在rac1,rac2都执行完root.sh后,点确定之前)
[root@rac2 bin]# unset LANG
[root@rac2 bin]# /home/oracle/app/crs/bin/vipca
Next
选择eth0
填写rac1和rac2的vip地址,如:
rac1 rac1-vip.localdomain 192.168.1.200 255.255.255.0
rac2 rac2-vip.localdomain 192.168.1.201 255.255.255.0
Next
vipca开始自动配置
遇到:
Warning: Cannot convert string "-isas-song ti-medium-r-normal--*-140-*-*-c-*-
gb2312.1980-0" to type FontStruct 的解决办法:
先敲入unset LANG以取消语言设定,然后出来的GUI界面就是英文的,我想只能这样好受一点,总比乱码好一点吧.
**************************************************************************
启动vip时失败报错,查看日志/home/oracle/app/crs/log/rac1/racg/ora.rac1.vip.log
Default gateway is not defined
设好网关,重试,OK
启动ons失败报错,查看日志/home/oracle/app/crs/log/rac1/racg/ora.rac1.ons.log
Failed to get IP for localhost
vi /etc/hosts
添加127.0.0.1 rac1 localhost.localdomain localhost
重试,OK
配置好以后会有一个 eth0:1的虚拟网卡,ip地址为vip
重试 oracle cluster verfication utility ,通过,OK
被*包围的这部分我安装的时候没有出现,但我保留.
host and port number already configrued in OCR
**************************************************************************
5、最后一步 oracle cluster verfication utility 可能会失败:
Checking existence of VIP node application (required)
Check failed.
Check failed on nodes:
rac2,rac1
执行成功后返回图形界面,点击ok,这时开始执行环境配置.
如果在/home/oracle/app/oracle/oraInventory/logs/installActions...文件中
报WARNING: RAC2.localdomain:6200 already configured.WARNING: RAC1.localdomain:6200 already configured.的错误
请执行
$cd /home/oracle/app/crs/bin
$racgons remove_config rac1.localdomain:6200
$racgons remove_config rac2.localdomain:6200
只需要在rac1上执行就行.
至此,Clusterware安装完毕.
重新启动两台操作系统
CRS 安装结束
从/home/oracle/app/crs/bin 目录中运行 olsnodes 验证安装已成功,例如:
用oracle用户登录
$ cd /home/oracle/app/crs/bin
$ olsnodes
rac1
rac2
Once CRS 已安装并运行;
禁止Clusterware在系统重启后自动启动的方法:
# /etc/init.d/init.crs disable
启动Clusterware在系统重启后自动启动的方法:
# /etc/init.d/init.crs enable
[oracle@rac1 ~]$ /home/oracle/app/crs/bin./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac1.gsd application ONLINE UNKNOWN rac1
ora.rac1.ons application ONLINE UNKNOWN rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE UNKNOWN rac2
ora.rac2.ons application ONLINE UNKNOWN rac2
ora.rac2.vip application ONLINE ONLINE rac2
[oracle@rac1 bin]$ crs_stop -all
Attempting to stop `ora.rac1.vip` on member `rac1`
Attempting to stop `ora.rac2.vip` on member `rac2`
Stop of `ora.rac2.vip` on member `rac2` succeeded.
Stop of `ora.rac1.vip` on member `rac1` succeeded.
[oracle@rac1 bin]$ crs_start -all
Attempting to start `ora.rac1.vip` on member `rac1`
Attempting to start `ora.rac2.vip` on member `rac2`
Start of `ora.rac1.vip` on member `rac1` succeeded.
Start of `ora.rac2.vip` on member `rac2` succeeded.
上面的这些crs_stat -t输出是我多次安装时出错的状态,
我装好了一次,状态如下:
[oracle@rac1 bin]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac1
查看CRS服务状态
$ ./crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy
结果显示正确就可以.不报错的话当然就不需要执行了,如果没有错误你应该也找不到configToolFailedCommands.sh文件.
重新启动两台计算机后,如果发现有unknown的状态,解决方法如下:
$ crs_stop -f ora.rac1.gsd
$ crs_start -f ora.rac1.gsd
crs_stop -f 强制关闭,如果不强制-f关闭,那么实在不知道怎么办了.
如果crs_stop -f还是启动不了的话,请执行以下语句:
停止CRS:
# /etc/init.d/init.crs stop //或者
# ./crsctl stop crs //或者
$ ./crs_stop –all
启动CRS:
# /etc/init.d/init.crs start //或者
$ ./crsctl start crs
然后等待90秒以后,执行以下指令:
$ ./crsctl check crs
$ ./crs_stat -t
如果还发现有unknown的状态,解决方法如下:
$ ./crs_stop -f ora.rac1.gsd //关闭unknown状态的节点,ora.rac1.gsd 这个是我的例子,自己相应地改就是了.
$ ./crs_start -f ora.rac1.gsd
最后实现的效果是:
[oracle@rac1 bin]$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac1
遇到: 在运行 ./olsnodes 报: 的错误时的解决办法:
# ./oracleasm scandisks
# ./oracleasm listdisks
# reboot
重新启动后,就可以了。
遇到CRS-0184: Cannot communicate with the CRS daemon.的错误
解决方法:
$ su - root
# /etc/init.d/init.crs start 启动底层服务,rac1,rac2都要启动
# exit
等待90秒钟
(不建议使用以下的解决办法)
$ cd /home/oracle/app/crs/bin
$ ./crsctl start resources 启动资源
如果还是启动不了
更改两个节点的/etc/security/limits.conf
修改下面的配置:
fsize = -1
core = 2097151
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1
重新启动系统:
一切正常:
如果遇到unkown,见上面的解决办法.
现在可以安装 Oracle RAC 软件的其余部分了.
**********************************************************************************************
建议:现在就关机,把rac1,rac2虚拟机备份一个,以防后面做错,前面的就白做了.
********************************************************************************************** |
|