Oracle 10g RAC 在Linux下安装经验总结
????? 在Linux系统上如red hat as 5 上安装Oracle 10g RAC时,我们经常会碰到这样或那样的错误。有的是新环境缺少这样那样的配置,有的是老环境有这样那些的不合适设置,有时候还能碰到一些bug。
(miki西游 @mikixiyou 文档,原文链接: http://mikixiyou.iteye.com/blog/1555489)
我从2005年开始安装10g RAC到现在,遇见了各种各样的问题。现在将这些安装过程中注意的要点和出现的问题做一个总结。
一、安装操作系统补丁包
?
建议使用 system-config-packages命令在vnc下打开图形化安装工具,将开发包全部安装上,免得烦人。
否则,您需要检查和安装下列的补丁包。
rpm -ivh setarch-2.0-1.1.x86_64.rpm
rpm -ivh make-3.81-3.el5.x86_64.rpm
rpm -ivh glibc-2.5-24.*
rpm -ivh libaio-0.3.106-3.2.*
rpm -ivh compat-libstdc++-*
rpm -ivh compat-gcc-34-3.4.6-4.x86_64.rpm
rpm -ivh compat-gcc-34-c++-3.4.6-4.x86_64.rpm
rpm -ivh gcc-4.1.2-42.el5.x86_64.rpm
rpm -ivh libXp-1.0.0-8.1.el5.*
rpm -ivh openmotif-2.3.0-0.5.el5.*
rpm -ivh compat-db-4.2.52-5.1.*
如果没有安装完整,可能会有一面一些错误会遇到。
错误一:
?/tmp/OraInstall2007-12-30_02-16-11PM/jre/1.4.2/lib/i386/libawt.so:libXp.so.6: cannot open shared object file: No such file or directoryoccurred..
?
原因是:缺少支持打印的图形化动态链接库libXp.so.6
这个错误是由于缺少系统安装包,在RHEL5以前的版本,可以安装xorg-x11-deprecated-libs包即可,这个安装包可以在系统光盘第三张盘中找到(对于redhat as4.2以前,redhat as4.4是在第四张安装光盘)
xorg-x11-deprecated-libs-6.8.2-31.i386.rpm
?
错误二:
Exception:java.lang.UnsatisfiedLinkError:/usr/java/j2sdk1.4.2_06/jre/lib/i386/libawt.so:libXt.so.6: cannot open shared object file: No such file or directory
这个错误是也是由于缺少系统安装包造成的,只需安装XFree86-libs包即可,这个安装包可以在系统光盘中找到。
?在上面两个错误如果出现在redhat as5版本中,解决如下:
在RHEL5中上面的包被libXp所取代了,因此rpm -ivh libXp-1.0.0-8.i386.rpm将包打上后问题即可解决。
?错误三:
error while loading shared libraries:libstdc++-libc6.1-1.so.2
只用执行如下操作ln -s libstdc++-libc6.2-2.so.3libstdc++-libc6.1-1.so.2
最后安装“rpm -ivh libXp-1.0.0-8.i386.rpm”问题解决。
?错误四:在安装数据库的时候出现
“uError in invoking target 'all_no_orcl ihsodbc' of?makefile'/u01/app/oracle/oracle/product/10.2.0/db_1/rdbms/lib/ins_rdbms.mk'.See'/u01/app/oracle/oraInventory/logs/installActions2006-10-16_06-41-37PM.log'fordetails”的错误。
经过分析缺少一个包:compat-libstdc++-33.i386.rpm的包
?[root@dg1Server]# rpm -ivh compat-libstdc++-*.rpm
warning: compat-libstdc++-296-2.96-138.i386.rpm:Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...???????????????########################################### [100%]
??1:compat-libstdc++-33???########################################### [ 50%]
??2:compat-libstdc++-296??########################################### [100%]
?
安装后,问题解决。
?
二、操作系统配置
1、/etc/hosts配置
?
新集群配置:
192.168.100.14 ????? rac1
192.168.100.15?????? rac1-vip
192.168.212.14?????? rac1-priv
?
192.168.100.18 ????? rac2
192.168.100.19?????? rac2-vip
192.168.212.18?????? rac2-priv
?
2、核心参数配置
/etc/sysctl.conf
#////////////////////////////////////////////////oracle调优后参数
#ORACLE
#kernel.shmall = 3279547
#kernel.shmmax = 8294967295
kernel.shmmni = 4096
#semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 256 32000 100 142
fs.file-max = 327679
net.ipv4.ip_local_port_range = 1024 65000
kernel.msgmni = 2878
kernel.msgmax = 8192
kernel.msgmnb = 65535
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
?
vm.min_free_kbytes=409600
?
3、调整限制
?/etc/security/limits.conf
oracle??? soft?? nproc????? 4096
oracle??? hard?? nproc????? 16384
oracle??? soft?? nofile???? 16384
oracle??? hard?? nofile???? 65536
?
4、
修改 /etc/selinux/config 配置文件,把 SELLINUX参数改为:
SELINUX=disabled
?
三、创建oracle用户和组
/usr/sbin/groupadd oinstall???? -g ?? 201?
/usr/sbin/groupadd dba????????? -g????? 202
/usr/sbin/groupadd oper???????? -g?????203
/usr/sbin/useradd -m -u 1101 -g oinstall -G dba,oper-d /u01/home/oracle -s /bin/bash -c "Oracle Software Owner" oracle
?
设置.bash_profile
# .bash_profile
####
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db
export ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs
export PATH=/sbin:$ORA_CRS_HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=xxdb2
#export ORACLE_TERM=vt100
export THREADS_FLAG=native
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
?
export LANG=en_US
PS1="\${PWD}@`hostname`=>\${ORACLE_SID}\$"
umask 022
?
?
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
?
四、配置SSH互信
在rac3上以oracle user run:
rac3-> mkdir ~/.ssh
rac3-> chmod 700 ~/.ssh
rac3-> ssh-keygen -t rsa
rac3-> ssh-keygen -t dsa
?
在rac1上以oracle user run:
rac1-> ssh rac3 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
rac1-> ssh rac3 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
oracle@rac3'spassword:
rac1-> scp ~/.ssh/authorized_keysrac3:~/.ssh/authorized_keys
oracle@rac3'spassword:
authorized_keys?????????????????????????? 100% 1716???? 1.7KB/s??00:00
rac1-> scp ~/.ssh/authorized_keysrac3:~/.ssh/authorized_keys
authorized_keys????????????????????? ?????100% 1716???? 1.7KB/s??00:00
?
将authorized_keys copy 到rac2主机,建立与rac2的ssh信任
rac2-> scp ~/.ssh/authorized_keysrac2:~/.ssh/authorized_keys
authorized_keys?????????????????????????? 100% 1716???? 1.7KB/s??00:00
?
?
四、存储设置
The /dev/dm-N devices are used internally bydevice-mapper-multipath and are non-persistent across reboot, so should not beused. The /dev/mpath/ devices are created for multipath devices to be visibletogether, however, may not be available during early stages of boot, so, again,should not be used. However, /dev/mapper/ devices are persistent and createdsufficiently early during boot - use only these devices to access and interactwith multipathed devices.
在redhat 5.4存储设置:
[root@rac2 ~]# more /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
ACTION=="add",KERNEL=="/dev/mapper/mpath6", RUN+="/bin/raw /dev/raw/raw1%N"
ACTION=="add",KERNEL=="/dev/mapper/mpath7", RUN+="/bin/raw /dev/raw/raw2%N"
?
ACTION=="add", KERNEL=="raw1",OWNER="root", GROUP="oinstall", MODE="777"
ACTION=="add", KERNEL=="raw2",OWNER="oracle", GROUP="oinstall", MODE="777"
?
[root@rac2 ~]# more /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the otherinit scripts.
# You can put your own initialization stuff in here ifyou don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
?
/bin/raw /dev/raw/raw1 /dev/mapper/mpath6
/bin/raw /dev/raw/raw2 /dev/mapper/mpath7
[root@rac2 ~]#
?
?
?
[root@rac1 ~]# chown -R oracle:oinstall/dev/mapper/mpath[1-5]
[root@rac1 ~]# chmod -R 755 /dev/mapper/mpath[1-5]
[root@rac1 ~]#
?
?
?
//////
?
ACTION=="add",KERNEL=="/dev/sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="/dev/sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",KERNEL=="/dev/sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add",KERNEL=="/dev/sdb4", RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw1", OWNER="root",?? GROUP="oinstall",MODE="640"
KERNEL=="raw2", OWNER="oracle",GROUP="oinstall", MODE="640"
KERNEL=="raw3", OWNER="oracle",GROUP="dba", MODE="660"
KERNEL=="raw4", OWNER="oracle",GROUP="dba", MODE="660"
?
/etc/udev/rule.d/60-raw.rules
这种方法的配置如下:
?[root@rac2rules.d]# cat 60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
#??ACTION=="add", KERNEL=="sda", RUN+="/bin/raw/dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
#??ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8,minor 1.
ACTION=="add", KERNEL=="dm-7",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="dm-8",RUN+="/bin/raw /dev/raw/raw2 %N"
?
ACTION=="add", KERNEL=="raw1",OWNER="root", GROUP="oinstall", MODE="660"
ACTION=="add", KERNEL=="raw2",OWNER="oracle", GROUP="oinstall", MODE="660"
?-- 这个是对raw 设备进行权限设置的
?[root@rac2rules.d]# cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the otherinit scripts.
# You can put your own initialization stuff in here ifyou don't
# want to do the full Sys V style init stuff.
?
touch /var/lock/subsys/local
?
/bin/raw /dev/raw/raw1 /dev/dm-7
/bin/raw /dev/raw/raw2 /dev/dm-8
?
-- 系统启动时挂载raw设备
?
五、安装CRS
/runInstaller -ignoreSysPrereqs &
?
?
执行root.sh失败,报错如下:
Failed to upgrade Oracle Cluster Registryconfiguration
原因是未删除干净,原来已安装有 Oracle RAC软件,
如果你在装crs的时候运行了root.sh后提示上面的英文错误,再也无法运行了,可以尝试清理crs残留信息,删除执行crs目录结构后的最重要一步,执行下面的命令。
dd if=/dev/zero of=/dev/sdb1 bs=8192 count=2000
dd if=/dev/zero of=/dev/sdc1 bs=8192 count=2000
将/dev/raw/raw1-->/dev/sdb1的设备清空 orc disk
将/dev/raw/raw2-->/dev/sdc1的设备清空 vote disk
?
Oracle 10g RAC在Linux上手工清理的方法如下:
????? rm -f/etc/init.d/init.cssd
????? rm -f/etc/init.d/init.crs
????? rm -f/etc/init.d/init.crsd
????? rm -f/etc/init.d/init.evmd
????? rm -f/etc/rc2.d/K96init.crs
????? rm -f/etc/rc2.d/S96init.crs
????? rm -f/etc/rc3.d/K96init.crs
????? rm -f/etc/rc3.d/S96init.crs
????? rm -f/etc/rc5.d/K96init.crs
????? rm -f/etc/rc5.d/S96init.crs
????? rm -Rf/etc/oracle/scls_scr
????? rm -f/etc/inittab.crs
????? cp/etc/inittab.orig /etc/inittab
?
dd if=/dev/zero of=/dev/raw/raw1 bs=8192K count=100
dd if=/dev/zero of=/dev/raw/raw2 bs=8192K count=100
?
?
如果root.sh报错如下:
Oracle Database 10g CRS Release 10.2.0.1.0 ProductionCopyright 1996, 2005 Oracle.? All rightsreserved.
2010-12-28 00:35:36.935: [OCRCONF][1325856320]ocrconfig starts...
2010-12-28 00:35:36.935: [OCRCONF][1325856320]Upgrading OCR data
2010-12-28 00:35:36.941: [ OCRCONF][1325856320]OCRalready in current version.
2010-12-28 00:35:36.947: [ OCRCONF][1325856320]Failedto call clsssinit (21)
2010-12-28 00:35:36.947: [ OCRCONF][1325856320]Failedto make a backup copy of OCR
2010-12-28 00:35:36.947: [ OCRCONF][1325856320]Exiting[status=failed]...
[root@rac1 lost+found]#
这是Bug.4679769 FAILED TO FORMAT OCR DISK USING CLSFMT
?
综上,在oracle rac中使用raw device还是asmlib看情况而定,我一直使用raw device。在重装时,务必清理干净。bash_profile的配置大家可以参考。
这是10gRAC的,我还有一个关于11g RAC的安装总结,等有空整理出来,再放上来。希望得到您的支持。(虚荣心啊,人性的弱点吗?)
1 楼 mikixiyou 2012-06-08 这是10gRAC的,我还有一个关于11g RAC的安装总结,等有空整理出来,再放上来。希望得到您的支持。(虚荣心啊,人性的弱点吗?)