Pcserver+oracle10g+rac
成本的相对廉价,技术的成熟,功能的强大此方案将越来越受中小企业的青睐。
一.实验前准备
虚拟机版本:Vwareserver1.0.6
Linux版本:redhat5.5enterprise服务器版
Oralce版本:oracle10g10.2.1
Oracle集群软件:clusterware
VwareWorkstation版本在共享磁盘上没有很好的解决办法。Vwareserver在windows7安装可能存在一定的驱动问题。本实验是在xp系统上完成,下图给出虚拟机的ip及主机名配置
Node1:主机名rac1
二.虚拟机配置及linux安装
实验利用vware配置虚拟机只需要配置一台即主节点,在虚拟机中的配置如:
硬盘配置:
该配置是一个重点配置,默认配置一个磁盘,大小为20G该磁盘为rac1的服务器磁盘,包括了linux系统的安装及oracle软件的安装都在该磁盘上。
还需要分配其他四块磁盘:2:ocr,3:vote4,5:asm
磁盘分部为:1,SCSI0:02,SCSI1:13,SCSI1:24,SCSI1:35,SCSI1:4且2-5都需要在高级中勾选independent-persisant选项
*硬盘分配的注意点:I/O适配器类型都选择"LSILogin"方式
*所有磁盘类型都选在"SCSI",如果选择IDE类型的磁盘的话,vware只能虚拟出4块,而rac环境是需要5块磁盘来实现。由于是在虚拟机中实现,建议将2-5磁盘配置到其他目录中。
两块在安装clusterware软件的时候要用到,也就是ORACLERAC所必须的ocr以及vote磁盘,表现出来是裸设备方式,还有两块磁盘我们要用来作为共享磁盘存放数据文件,即asm磁盘
网卡配置:
rac环境中需要两块网卡,当然可以创建地三块网卡和pc交互。便于文件等内容的传输
网卡的类型选择的都为Bridged类型。该类型的网卡在虚拟机就等同一个独立的网卡。可以和主机通信也可以连通互联网。下给出一张配置后的截图:
虚拟机中安装linux
在虚拟机中安装linux,在磁盘分区时将除0:0外的其他磁盘不参与分区,即如下图,只勾选sda选项。在挂盘上随个人喜好。为方便这里只挂了/一个盘
关于ip的配置,eth0:ip192.168.100.100
服务的话,建议都选择安装,目前还没有完全了解其中包的关联关系。
diskLib.dataCacheMaxReadAheadSize="0"
diskLib.DataCacheMinReadAheadSize="0"
diskLib.dataCachePageSize="4096"
三.Linux配置
文件配置
useradd-d/home/oracle-goinstall-Gdbaoracle
如果是非虚机安装,要注意记录下用户和组ID,在其它机器上创建同名组时,务必确认组ID和用户ID与此相同。
exportORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
exportPATH=$ORACLE_HOME/bin:$PATH
exportLD_LIBRARY_PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
exportCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
2,创建/opt/ora10g目录,要注意该目录所有者或oracle用户的权限
由于该目录主要由oracle用户操作,因此我们将其所有者改为oracle
[root@rac1~]#chownoracle.oinstall/opt/ora10g
[root@rac1~]#vi/etc/sysctl.conf
net.ipv4.ip_local_port_range=102465000
sessionrequired/lib/security/pam_limits.so
modprobehangcheck-timerhangcheck-tick=30hangcheck_margin=180
磁盘分区
http://oss.oracle.com/projects/compat-oracle/files/Enterprise_Linux/
经整理需要的除上面地址给对的
给出一个截图,一些是在oracle官网上下载的包,一些是系统文件中的包
网络整理在打补丁这个环节,现将本实验打一些补丁包顺序罗列如下:
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
裸设备及rac2的配置
1,配置裸设备:
由于RHEL5中取消了rawdevices,如果不想将映射命令放到rc.local中的话,我们就需要将其配置到/etc/udev/rules.d/文件夹中
修改文件
/etc/udev/rules.d/60-raw.rules,添加内容如下图所示:
ACTION=="add",KERNEL=="/dev/sdb1",RUN+="/bin/raw/dev/raw/raw1%N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw/dev/raw/raw1%M%m"
ACTION=="add",KERNEL=="/dev/sdc1",RUN+="/bin/raw/dev/raw/raw2%N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="33",RUN+="/bin/raw/dev/raw/raw2%M%m"
ACTION=="add",KERNEL=="/dev/sdd1",RUN+="/bin/raw/dev/raw/raw3%N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="49",RUN+="/bin/raw/dev/raw/raw3%M%m"
ACTION=="add",KERNEL=="/dev/sde1",RUN+="/bin/raw/dev/raw/raw4%N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="65",RUN+="/bin/raw/dev/raw/raw4%M%m"
KERNEL=="raw[1-4]",OWNER="oracle",GROUP="oinstall",MODE="640"
改完之后我们退回到RAC2目录下,将RAC1.VMDK这个文件改为RAC2.VMDK:
cd/etc/sysconfig/network-scripts/
cd/etc/sysconfig/network-scripts/
除此之外,还要切换到oracle用户下修改ORACLE_SID这个环境变量。
至此,副节点的设置完毕,我们需要做的,就是重启系统,让新的主机名、IP地址等生效。
四.配置Clusterware安装环境及安装
通信配置
要建立用户等效性,需要在两个节点上以oracle用户身份生成用户的公钥和私钥,首先在rac1执行:
[oracle@rac1~]$ssh-keygen-trsa
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/home/oracle/.ssh/id_rsa):
Enterpassphrase(emptyfornopassphrase):
Youridentificationhasbeensavedin/home/oracle/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/home/oracle/.ssh/id_rsa.pub.
d2:69:eb:ac:86:62:27:50:99:ff:e8:1e:a2:e6:5d:7foracle@node1
[oracle@rac1~]$ssh-keygen-tdsa
Generatingpublic/privatedsakeypair.
Enterfileinwhichtosavethekey(/home/oracle/.ssh/id_dsa):
Enterpassphrase(emptyfornopassphrase):
Youridentificationhasbeensavedin/home/oracle/.ssh/id_dsa.
Yourpublickeyhasbeensavedin/home/oracle/.ssh/id_dsa.pub.
0a:9a:20:46:a2:28:ec:72:23:82:f2:9d:f8:62:9b:d1oracle@node1
[oracle@rac1~]$cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
[oracle@rac1~]$cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys
提示:下列命令会提示你输入rac2的oracle密码,按照提示输入即可,如果失败可重新尝试执行命令。
[oracle@rac1~]$sshrac2cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
Theauthenticityofhost¨node2(192.168.100.102)¨can¨tbeestablished.
RSAkeyfingerprintis92:d1:ce:5b:c8:a1:52:d5:ac:00:5f:48:5d:12:06:e4.
Areyousureyouwanttocontinueconnecting(yes/no)?yes
Warning:Permanentlyadded¨node2,192.168.100.102¨(RSA)tothelistofknownhosts.
[oracle@rac1~]$sshrac2cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys
[oracle@rac1~]$scp~/.ssh/authorized_keys
authorized_keys100%19922.0KB/s00:00
[oracle@rac1~]$sshrac1-privdate
[oracle@rac1~]$sshrac2-privdate
[oracle@rac2~]$sshrac1-privdate
[oracle@rac2~]$sshrac2-privdate
注意命令的返回信息,由于rac对节点间时间较敏感,因此如果此处显示节点单时间不一至,建议同步(一般相隔超过20秒就需要同步时间了)。
配置asm
[root@rac1~]#/etc/init.d/oracleasmconfigure
ConfiguringtheOracleASMlibrarydriver.
Thiswillconfiguretheon-bootpropertiesoftheOracleASMlibrary
driver.Thefollowingquestionswilldeterminewhetherthedriveris
loadedonbootandwhatpermissionsitwillhave.Thecurrentvalues
willbeshowninbrackets(¨[]¨).Hittingwithouttypingan
answerwillkeepthatcurrentvalue.Ctrl-Cwillabort.
Defaultusertoownthedriverinterface[]:oracle
Defaultgrouptoownthedriverinterface[]:dba
StartOracleASMlibrarydriveronboot(y/n)[n]:y
FixpermissionsofOracleASMdisksonboot(y/n)[y]:y
WritingOracleASMlibrarydriverconfiguration:[OK]
MountingASMlibdriverfilesystem:[OK]
ScanningsystemforASMdisks:[OK]
提示:如果本步执行出错(可能出错机率最高的是在ScanningsystemforASM),不妨将转换一下命令行的执行方式,改成:
[root@rac1~]#sh/etc/init.d/oracleasmconfigure
[root@rac2~]#/etc/init.d/oracleasmconfigure
ConfiguringtheOracleASMlibrarydriver.
Thiswillconfiguretheon-bootpropertiesoftheOracleASMlibrary
driver.Thefollowingquestionswilldeterminewhetherthedriveris
loadedonbootandwhatpermissionsitwillhave.Thecurrentvalues
willbeshowninbrackets(¨[]¨).Hittingwithouttypingan
answerwillkeepthatcurrentvalue.Ctrl-Cwillabort.
Defaultusertoownthedriverinterface[]:oracle
Defaultgrouptoownthedriverinterface[]:dba
StartOracleASMlibrarydriveronboot(y/n)[n]:y
FixpermissionsofOracleASMdisksonboot(y/n)[y]:y
WritingOracleASMlibrarydriverconfiguration:[OK]
MountingASMlibdriverfilesystem:[OK]
ScanningsystemforASMdisks:[OK]
[root@rac1~]#/etc/init.d/oracleasmcreatediskVOL1/dev/sdd1
Markingdisk"/dev/sdd1"asanASMdisk:[OK]
[root@rac1~]#/etc/init.d/oracleasmcreatediskVOL2/dev/sde1
Markingdisk"/dev/sde1"asanASMdisk:[OK]
[root@rac1linux-patch]#/etc/init.d/oracleasmscandisks
ScanningsystemforASMdisks:[OK]
[root@rac1~]#/etc/init.d/oracleasmlistdisks
[root@rac2~]#/etc/init.d/oracleasmscandisks
ScanningsystemforASMdisks:[OK]
[root@rac2~]#/etc/init.d/oracleasmlistdisks
/data/rhel5/clusterware/cluvfy/runcluvfy.shstage-precrsinst-nrac1,rac2–verbose
存在部分报错如:CouldnotfindasuitablesetofinterfacesforVIPs.compat-*等等报错,但可以忽略掉
*****/usr/sbin/ntpdate192.168.100.100
*****sleep5;/usr/sbin/ntpdate192.168.100.100
*****sleep10;/usr/sbin/ntpdate192.168.100.100
*****sleep15;/usr/sbin/ntpdate192.168.100.100
*****sleep20;/usr/sbin/ntpdate192.168.100.100
*****sleep25;/usr/sbin/ntpdate192.168.100.100
*****sleep30;/usr/sbin/ntpdate192.168.100.100
*****sleep35;/usr/sbin/ntpdate192.168.100.100
*****sleep40;/usr/sbin/ntpdate192.168.100.100
*****sleep45;/usr/sbin/ntpdate192.168.100.100
*****sleep50;/usr/sbin/ntpdate192.168.100.100
*****sleep55;/usr/sbin/ntpdate192.168.100.100
安装
建议在执行前先加载一下.bash_profile文件,加载oracle用户的环境变量
./runInstaller–ignoreSysPreReqs
上图处需要将eth0设置为public其他不用的改为donotuseeth1为private
在rac1上执行:/opt/ora10g/oraInventory/orainstRoot.sh;
在rac2上执行:/opt/ora10g/oraInventory/orainstRoot.sh;
在rac1上执行:/opt/ora10g/product/10.2.0/crs_1/root.sh;
在rac2上执行:/opt/ora10g/product/10.2.0/crs_1/root.sh;
===============================
[root@node2opt]#vi/opt/ora10g/product/10.2.0/crs_1/bin/vipca
Removethisworkaroundwhenthebug3937317isfixed
if["$arch"="i686"-o"$arch"="ia64"]
[root@node2opt]#vi/opt/ora10g/product/10.2.0/crs_1/bin/srvctl
当然,既然我们已经知道了有这个问题,建议最好在node2执行root.sh之前,首先修改vipca。
Thegiveninterface(s),"eth0"isnotpublic.PublicinterfacesshouldbeusedtoconfigurevirtualIPs.
==============================
图形界面上运行$CRS_HOME/bin/vipca,手工重新配置rac1-vip和rac2-vip。
[root@node2opt]#/opt/ora10g/product/10.2.0/crs_1/bin/vipca
Error0(Native:listNetInterfaces:[3])
[Error0(Native:listNetInterfaces:[3])]
===============================
[root@node2bin]#./oifcfgiflist
[root@node2bin]#./oifcfgsetif-globaleth0/192.168.100.0:public
[root@node2bin]#./oifcfgsetif-globaleth1/192.168.200.0:cluster_interconnect
eth0 192.168.100.0 globalpublic
eth1 192.168.200.0 globalcluster_interconnect
13、然后返回node1中,执行脚本的窗口,点击ok结束该窗口。
以root身份执行$ORA_CRS_HOME/cfgtoollogs/configToolFailedCommands.sh
[root@rac1~]#/opt/ora10g/product/10.2.0/crs_1/bin/./crs_stat -t
五.oracle软件安装及实例安装
软件安装
建议在执行前先加载一下.bash_profile文件,加载oracle用户的环境变量
./runInstaller–ignoreSysPreReqs
创建实例数据库
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENERS_RACDB'
这是由于模板数据库中配置了该初始化参数造成的,解决方式有如下几种:
B) . 选择自定义数据库,在执行安装之前修改该初始化参数为空
C) . 创建数据库时选择保存建库脚本而不创建数据库,然后手工修改建库脚本,再通过脚本创建
在两2上节点安装32位的glibc-devel-2.3.4-2.43.i386.rpm,然后再重新安装CRS
注意:必要是2个节点上都要安装这个包,而且需要重新安装CRS
libpthread.so.0: cannot open shared object file: No such file or directory 2012-09-21 13:28:08
分类: Linux
如果你碰到了这个错误:
/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
可以按照如下方式解决:
===============================
修改vipca文件
[root@node2 opt]# vi /opt/ora10g/product/10.2.0/crs_1/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文件
[root@node2 opt]# vi /opt/ora10g/product/10.2.0/crs_1/bin/srvctl
找到如下内容:
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
同样在其后新增加一行:
unset LD_ASSUME_KERNEL
保存退出,然后在node2重新执行root.sh
当然,既然我们已经知道了有这个问题,建议最好在node2执行root.sh之前,首先修改vipca。
其实同时需要你改的还有$ORACLE_HOME/bin/srvctl文件,不然等装完数据库之后,srvctl命令也是会报这个错误地。要知道srvctl这么常用,如果它执行老报错,那可是相当致命啊。不过呢你现在才安装到crs,离create db还远着呢,大可以等到创建完数据库,待到需要管理时再修改该文件。