前一阵刚刚才测试环境下装完Solaris 8下的ORACLE RAC。结果发现这次采购的F490硬件居然不支持Solaris 8。只好将操作系统升级到Solaris 10。
前面已经对Solaris 8下的安装进行了比较详细的描述,这里只是简单记录一下Solaris 10下的安装步骤。和8类似的步骤会简单带过。
这篇文档简单描述一下RAC环境安装过程中碰到的问题。
RAC安装的准备工作可以参考:Solaris10下安装Oracle10203RAC环境(一):http://yangtingkun.itpub.net/post/468/276589
ORACLE CLUSTERWARE的安装可以参考:Solaris10下安装Oracle10203RAC环境(二):http://yangtingkun.itpub.net/post/468/277075
ORACLE DATABASE的安装可以参考:Solaris10下安装Oracle10203RAC环境(三):http://yangtingkun.itpub.net/post/468/277419
ORACLE 10203补丁安装可以参考:Solaris10下安装Oracle10203RAC环境(四):http://yangtingkun.itpub.net/post/468/277626
由于有了在Solaris8上安装RAC的经验,在Solaris10下安装还算比较顺利。
不过由于安装的时候,采用了一些其他的配置方法,也碰到了一些问题。不过几乎所有的问题都和操作系统版本无关,而是使用ssh、volumn manager等造成的。
首先碰到的问题是User equivalence unavailable on all the nodes.错误。
这个错误产生有两个原因,都是由于SSH造成的。一个是由于cluvfy工具本身的问题,在寻找ssh命令时去/usr/local/bin目录下寻找。而另一个时由于ssh验证造成的。关于这个问题的详细描述,可以参考:RAC User Equivalence Check Failed:http://yangtingkun.itpub.net/post/468/275147
第二个问题碰到的问题是Specified Nodes Are Not Clusterable。
产生这个问题的原因也是两个。一个是上面提到的SSH验证的问题。必须启动安装程序的会话设置SSH的验证,否则就会造成上面的这个问题。
另外一个原因是我在检查系统网络情况的时候,发现一台主机的第二个网卡虽然加载了,但是没有UP。造成这个的原因居然是/etc/hostname.ce1文件中,多了一个回车。
这样,在重启系统后,会造成网卡没有UP,造成PRIVATE IP之间无法访问,从而导致上面的问题。
root@ahrac1 # vi /etc/hostname.ce1
tradedb1-priv
~
"/etc/hostname.ce1" 2 lines, 15 characters
# reboot
root@ahrac1 # ifconfig -a
lo0: flags=2001000849
inet 127.0.0.1 netmask ff000000
ce0: flags=1000843
inet 172.25.198.42 netmask ffff0000 broadcast 172.25.255.255
ether 0:14:4f:3b:56:75
ce1: flags=1000843
inet 10.0.0.3 netmask ffffff00 broadcast 10.0.0.255
ether 0:14:4f:3b:56:75
注意,由于hostname.ce1中包含了两行记录,因此,重新启动后,PRIVATE网卡没有自动UP,造成了上面的这个问题。将空行删除后,重新系统,错误消失。(当然删除空行后,直接将ce1网卡UP即可,重启是为了确认问题已经解决。)
第三个问题和裸设备有关。
首先,使用裸设备无法启用FLASH RECOVERY AREA,因此选择裸设备后,就不要在建立数据库的时候选择FLASH RECOVERY AREA。否则会报错。
其次,裸设备没有按照标准文档格式,将其大小放到最后。所以Oracle虽然根据映射文件找到表空间对应的裸设备,但是其大小设置和裸设备不一致。这里需要手工修改。
第三,裸设备需要一些额外的预留空间。因此表空间数据文件的大小至少应该比裸设备建立的空间少1M。否则会空间不足的错误。
第四个问题是一个bug。
在升级数据库时碰到了ORA-600错误。这个问题已经在上一篇文章中进行了描述,这里就不再重复了。
最后一个问题和VOLUMN MANAGER有关。
在安装好数据库之后,重启了操作系统,结果发现数据库没有自动启动。而通过手工启动的方式也没有效果:
root@ahrac1 # ./etc/init.d/init.crs start
Startup will be queued to init within 30 seconds.
重新启动系统,并检查后台进程运行情况,结果发现:
root@ahrac1 # ps –ef|grep ora
oracle 1349 1312 0 15:05:26 ? 0:00 /data/oracle/product/10.2/crs/bin/crsctl.bin check boot
root 1511 880 0 15:05:33 pts/1 0:00 grep ora
oracle 1348 1313 0 15:05:26 ? 0:00 /data/oracle/product/10.2/crs/bin/crsctl.bin check boot
oracle 1313 1234 0 15:05:25 ? 0:00 sh -c /data/oracle/product/10.2/crs/bin/crsctl check boot > /tmp/crsctl.1234
oracle 1350 1215 0 15:05:26 ? 0:00 /data/oracle/product/10.2/crs/bin/crsctl.bin check boot
oracle 1215 1178 0 15:05:25 ? 0:00 sh -c /data/oracle/product/10.2/crs/bin/crsctl check boot > /tmp/crsctl.1178
oracle 1312 1232 0 15:05:25 ? 0:00 sh -c /data/oracle/product/10.2/crs/bin/crsctl check boot > /tmp/crsctl.1232
root@ahrac1 # more /tmp/crsctl.1234
OCR initialization failed accessing OCR device: PROC-26: Error while accessing the physical storage Operating System error [Permission denied] [13]
看这个问题,似乎是共享存储的权限问题。
进入共享存储所在目录:
root@ahrac1 # cd /dev/vx/rdsk/datadg/
root@ahrac1 # ls -l
total 0
crw------- 1 root root 308, 41000 Mar 27 14:40 ocr
crw------- 1 root root 308, 41001 Mar 27 14:40 ocr2
crw-rw---- 1 oracle oinstall 308, 41018 Mar 27 14:40 tradedb_control1
crw-rw---- 1 oracle oinstall 308, 41019 Mar 27 14:40 tradedb_control2
crw-rw---- 1 oracle oinstall 308, 41020 Mar 27 14:40 tradedb_control3
crw-rw---- 1 oracle oinstall 308, 41010 Mar 27 14:40 tradedb_example_1
crw-rw---- 1 oracle oinstall 308, 41023 Mar 27 14:40 tradedb_flasharea
crw-rw---- 1 oracle oinstall 308, 41022 Mar 27 14:40 tradedb_pwdfile
crw-rw---- 1 oracle oinstall 308, 41012 Mar 27 14:40 tradedb_redo1_1
crw-rw---- 1 oracle oinstall 308, 41013 Mar 27 14:40 tradedb_redo1_2
crw-rw---- 1 oracle oinstall 308, 41014 Mar 27 14:40 tradedb_redo1_3
crw-rw---- 1 oracle oinstall 308, 41015 Mar 27 14:40 tradedb_redo2_1
crw-rw---- 1 oracle oinstall 308, 41016 Mar 27 14:40 tradedb_redo2_2
crw-rw---- 1 oracle oinstall 308, 41017 Mar 27 14:40 tradedb_redo2_3
crw-rw---- 1 oracle oinstall 308, 41021 Mar 27 14:40 tradedb_spfile
crw-rw---- 1 oracle oinstall 308, 41009 Mar 27 14:40 tradedb_sysaux_1
crw-rw---- 1 oracle oinstall 308, 41005 Mar 27 14:40 tradedb_system_1
crw-rw---- 1 oracle oinstall 308, 41008 Mar 27 14:40 tradedb_temp_1
crw-rw---- 1 oracle oinstall 308, 41006 Mar 27 14:40 tradedb_undotbs1_1
crw-rw---- 1 oracle oinstall 308, 41007 Mar 27 14:40 tradedb_undotbs2_1
crw-rw---- 1 oracle oinstall 308, 41011 Mar 27 14:40 tradedb_users_1
crw------- 1 root root 308, 41002 Mar 27 14:40 vot
crw------- 1 root root 308, 41003 Mar 27 14:40 vot2
crw------- 1 root root 308, 41004 Mar 27 14:40 vot3
记得配置完成后,都是oracle。怎么现在vot和ocr都变成root类型的。想起刚开始不熟悉Volumn Manager的用法,因此建立vot等三个裸设备的时候没有指定用户和组信息。最后采用操作系统命名grant进行的授权。而其他的裸设备文件则是通过vxassist make tradedb_spfile 10m user=oracle group=oinstall mode=660方式建立的。
莫非是这个错误造成的crs无法启动?
尝试修改这几个文件的属性:
root@ahrac1 # vxedit set user=oracle group=oinstall mode=660 vot
root@ahrac1 # vxedit set user=oracle group=oinstall mode=660 vot2
root@ahrac1 # vxedit set user=oracle group=oinstall mode=660 vot3
root@ahrac1 # vxedit set user=oracle group=oinstall mode=660 ocr
root@ahrac1 # vxedit set user=oracle group=oinstall mode=660 ocr2
root@ahrac1 # ls -l ocr*
crw-rw---- 1 oracle oinstall 308, 41000 Mar 27 14:40 ocr
crw-rw---- 1 oracle oinstall 308, 41001 Mar 27 14:40 ocr2
root@ahrac1 # ls -l vot*
crw-rw---- 1 oracle oinstall 308, 41002 Mar 27 14:40 vot
crw-rw---- 1 oracle oinstall 308, 41003 Mar 27 14:40 vot2
crw-rw---- 1 oracle oinstall 308, 41004 Mar 27 14:40 vot3
下面尝试重新启动crs:
root@ahrac1 # /data/oracle/product/10.2/crs/bin/crsctl start crs
Attempting to start CRS stack
The CRS stack will be started shortly
root@ahrac1 # ps -ef|grep ora
oracle 4068 4067 0 16:06:45 ? 0:00 /bin/sh -c ulimit -c unlimited; cd /data/oracle/product/10.2/crs/log/ahrac1/css
oracle 4815 4809 0 16:07:09 ? 0:00 /data/oracle/product/10.2/crs/bin/racgmain start
oracle 4718 1 0 16:07:06 ? 0:00 /data/oracle/product/10.2/database/bin/tnslsnr LISTENER_AHRAC1 -inherit
root 3978 3917 0 16:06:43 ? 0:00 /data/oracle/product/10.2/crs/bin/oprocd run -t 1000 -m 500 -f
oracle 4940 4939 0 16:07:13 ? 0:00 /data/oracle/product/10.2/database/bin/racgmdb -s open
oracle 4321 3912 0 16:06:54 ? 0:00 /data/oracle/product/10.2/crs/bin/evmlogger.bin -o /data/oracle/product/10.2/cr
oracle 1135 1 0 15:45:27 ? 0:00 sh -c sh -c 'ulimit -c unlimited; cd /data/oracle/product/10.2/crs/log/ahrac1/e
oracle 4809 1137 0 16:07:09 ? 0:00 /bin/sh /data/oracle/product/10.2/crs/bin/racgwrap start
root 1137 1 0 15:45:27 ? 0:02 /data/oracle/product/10.2/crs/bin/crsd.bin reboot
oracle 4830 4823 0 16:07:09 ? 0:00 /data/oracle/product/10.2/database/bin/racgmain start
oracle 5559 1 0 16:07:34 ? 0:00 ora_psp0_tradedb1
oracle 4069 4068 0 16:06:45 ? 0:01 /data/oracle/product/10.2/crs/bin/ocssd.bin
oracle 4067 3918 0 16:06:45 ? 0:00 sh -c /bin/sh -c 'ulimit -c unlimited; cd /data/oracle/product/10.2/crs/log/ahr
oracle 5573 1 0 16:07:34 ? 0:00 ora_mman_tradedb1
oracle 3912 1135 0 16:06:43 ? 0:00 /data/oracle/product/10.2/crs/bin/evmd.bin
oracle 4823 1137 0 16:07:09 ? 0:00 /bin/sh /data/oracle/product/10.2/database/bin/racgwrap start
oracle 4834 1 0 16:07:09 ? 0:00 /data/oracle/product/10.2/crs/bin/racgmain ora.tradedb.db rundetach 1 crscmd c
oracle 4832 1 0 16:07:09 ? 0:00 /data/oracle/product/10.2/database/bin/racgimon startd tradedb
oracle 5031 5015 6 16:07:15 ? 0:17 oracletradedb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 5561 1 0 16:07:34 ? 0:00 ora_lmon_tradedb1
oracle 4836 1 0 16:07:09 ? 0:00 /data/oracle/product/10.2/crs/bin/racgmain ora.tradedb.db rundetach 1 crscmd c
oracle 4906 1 0 16:07:11 ? 0:00 /data/oracle/product/10.2/crs/opmn/bin/ons -d
oracle 4939 4832 0 16:07:13 ? 0:00 /data/oracle/product/10.2/database/bin/racgeut -e _USR_ORA_DEBUG=0 -e ORACLE_SI
oracle 5555 1 0 16:07:34 ? 0:00 ora_pmon_tradedb1
oracle 5015 4940 0 16:07:15 ? 0:00 /data/oracle/product/10.2/database/bin/sqlplus
oracle 4908 4906 0 16:07:11 ? 0:00 /data/oracle/product/10.2/crs/opmn/bin/ons -d
oracle 5557 1 0 16:07:34 ? 0:00 ora_diag_tradedb1
oracle 5563 1 0 16:07:34 ? 0:00 ora_lmd0_tradedb1
oracle 5565 1 3 16:07:34 ? 0:05 ora_lms0_tradedb1
oracle 5569 1 3 16:07:34 ? 0:06 ora_lms1_tradedb1
oracle 5624 1 0 16:07:35 ? 0:00 ora_s000_tradedb1
oracle 5575 1 0 16:07:35 ? 0:00 ora_dbw0_tradedb1
oracle 5577 1 0 16:07:35 ? 0:00 ora_dbw1_tradedb1
oracle 5579 1 0 16:07:35 ? 0:00 ora_lgwr_tradedb1
oracle 5581 1 0 16:07:35 ? 0:00 ora_ckpt_tradedb1
oracle 5583 1 0 16:07:35 ? 0:00 ora_smon_tradedb1
oracle 5585 1 0 16:07:35 ? 0:00 ora_reco_tradedb1
oracle 5587 1 0 16:07:35 ? 0:00 ora_cjq0_tradedb1
oracle 5589 1 0 16:07:35 ? 0:00 ora_mmon_tradedb1
root 5741 1454 0 16:07:40 pts/1 0:00 grep ora
oracle 5607 1 0 16:07:35 ? 0:00 ora_mmnl_tradedb1
oracle 5622 1 0 16:07:35 ? 0:00 ora_d000_tradedb1
问题解决。
看来安装过程中的任何小问题都会成为后面的陷阱。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69232/,如需转载,请注明出处,否则将追究法律责任。