Pcserver+oracle10g+rac

成本的相对廉价,技术的成熟,功能的强大此方案将越来越受中小企业的青睐。

????一.实验前准备

虚拟机版本:Vwareserver1.0.6

Linux版本:redhat5.5enterprise服务器版

Oralce版本:oracle10g10.2.1

Oracle集群软件:clusterware

VwareWorkstation版本在共享磁盘上没有很好的解决办法。Vwareserver在windows7安装可能存在一定的驱动问题。本实验是在xp系统上完成,下图给出虚拟机的ip及主机名配置

Node1:主机名rac1

网卡1ip192.168.100.100

网卡2ip192.168.200.100

虚拟ip192.168.2.100

Node2主机名rac2

网卡1ip192.168.100.101

网卡2ip192.168.200.101

虚拟ip192.168.2.101

?

二.虚拟机配置及linux安装

实验利用vware配置虚拟机只需要配置一台即主节点,在虚拟机中的配置如:

硬盘配置:

该配置是一个重点配置,默认配置一个磁盘,大小为20G该磁盘为rac1的服务器磁盘,包括了linux系统的安装及oracle软件的安装都在该磁盘上。

还需要分配其他四块磁盘:2:ocr,3:vote4,5:asm

其大小分别为100M,100M,2G,2G

磁盘分部为: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类型。该类型的网卡在虚拟机就等同一个独立的网卡。可以和主机通信也可以连通互联网。下给出一张配置后的截图:

Pcserver+oracle10g+rac

虚拟机中安装linux

在虚拟机中安装linux,在磁盘分区时将除0:0外的其他磁盘不参与分区,即如下图,只勾选sda选项。在挂盘上随个人喜好。为方便这里只挂了/一个盘

Pcserver+oracle10g+rac

????????关于ip的配置,eth0:ip192.168.100.100

????????????????Eth1:ip192.168.200.100

Eth2:选择自动获取

服务的话,建议都选择安装,目前还没有完全了解其中包的关联关系。

disk.locking="false"

diskLib.dataCacheMaxSize="0"

diskLib.dataCacheMaxReadAheadSize="0"

diskLib.DataCacheMinReadAheadSize="0"

diskLib.dataCachePageSize="4096"

diskLib.maxUnsyncedWrites="0"

scsi1:1.deviceType="disk"

scsi1:2.deviceType="disk"

scsi1:3.deviceType="disk"

scsi1:4.deviceType="disk"

?

三.Linux配置????????????????????????

文件配置

1,编辑/etc/hosts文件,添加如下内容:

192.168.100.100rac1

192.168.100.101rac2

192.168.100.200rac1-vip

192.168.100.201rac2-vip

192.168.2.100rac1-priv

192.168.2.101rac2-priv????

2,创建组oinstall,dba,用户oracle

groupaddoinstall

groupadddba

useradd-d/home/oracle-goinstall-Gdbaoracle

如果是非虚机安装,要注意记录下用户和组ID,在其它机器上创建同名组时,务必确认组ID和用户ID与此相同。

设置oracle用户密码(密码也设为oracle)

passwdoracle

3,配置oralce用户的bash_profile文件

exportTMP=/tmp

exportTMPDIR=$TMP

exportORACLE_BASE=/opt/ora10g

exportORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

exportORACLE_SID=RACDB1

exportORACLE_TERM=xterm

exportPATH=/usr/sbin:$PATH

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

ulimit-u16384-n65536

umask022

2,创建/opt/ora10g目录,要注意该目录所有者或oracle用户的权限

[root@rac1~]#mkdir/opt/ora10g

由于该目录主要由oracle用户操作,因此我们将其所有者改为oracle

[root@rac1~]#chownoracle.oinstall/opt/ora10g

3,配置内核参数

[root@rac1~]#vi/etc/sysctl.conf

增加或修改下列内容

kernel.shmmni=4096

kernel.sem=25032000100128

fs.file-max=65536

net.ipv4.ip_local_port_range=102465000

net.core.rmem_default=1048576

net.core.rmem_max=1048576

net.core.wmem_default=262144

net.core.wmem_max=262144

[root@rac1~]#sysctl-p

让设置生效

4,提高Oracle用户的shell限制

设置oracle使用的文件数权限

vi/etc/security/limits.conf

增加下列内容

oraclesoftnproc2047

oraclehardnproc16384

oraclesoftnofile1024

oraclehardnofile65536

修改安全限制

vi/etc/pam.d/login

增加:

sessionrequired/lib/security/pam_limits.so

配置Hangcheck计时器

vi/etc/rc.local

增加:

modprobehangcheck-timerhangcheck-tick=30hangcheck_margin=180

?

磁盘分区

通过fdisk-l可以看看所有磁盘的状态,如果前期裸设备规划正确的话,在诸如/dev/sdb/dev/sdc/dev/sdd/dev/sde下面是看不到任何分区信息的,这也表明这些磁盘都是干净的磁盘,不像/dev/sda那样不干净(有了文件系统)。下面我们要对/dev/sdb/dev/sde的四块磁盘进行分区,分区过程如下图所示(这里以/dev/sdb为例,其他磁盘操作类似):

Fdisk/devv/sdb

n->p->1->->w

创建一个新的磁盘,设置为主分区。并且给予全部的空间

剩下的就是补丁包的安装了

?

http://oss.oracle.com/projects/compat-oracle/files/Enterprise_Linux/

经整理需要的除上面地址给对的

给出一个截图,一些是在oracle官网上下载的包,一些是系统文件中的包

Pcserver+oracle10g+rac

?

网络整理在打补丁这个环节,现将本实验打一些补丁包顺序罗列如下:

1compat-binutils215-2.15.92.0.2-24.i386

2compat-libcwait-2.1-1.i386

3compat-libstdc++-egcs-1.1.2-1.i386

4openmotif21-debuginfo-2.1.30-11.EL5.i386

5xorg-x11-libs-compat-6.8.2-1.EL.33.0.1.i386

6oracleasm-support-2.1.2-1.el5.i386

7oracleasm-2.6.18-53.el5-2.0.4-1.el5.i686

8oracleasm-2.6.18-53.el5xen-2.0.4-1.el5.i686

1kernel-debug-2.6.18-53.el5.i686

2oracleasm-2.6.18-53.el5debug-2.0.4-1.el5.i686

其中12相互关联

3kernel-PAE-2.6.18-53.el5.i686

4oracleasm-2.6.18-53.el5PAE-2.0.4-1.el5.i686

其中34相互关联

5libXp-1.0.0-8.1.el5.i386

6openmotif21-2.1.30-11.EL5.i386

7compat-oracle-el5-1.0-5.i386

其中567相互关联

8oracleasmlib-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"

重启服务以及验证

start_udev

ls/dev/rawl

Pcserver+oracle10g+rac

克隆rac2。

关闭rac1

Shutdownhy0

将rac1中的文件拷贝到rac2上,并修改vmx文件

改完之后我们退回到RAC2目录下,将RAC1.VMDK这个文件改为RAC2.VMDK

在vware中打开rac2,修改hostname

Hostnamerac2

Vi/etc/sysconfig/network

修改网络配置器

cd/etc/sysconfig/network-scripts/

ifconfiga查看所有网卡信息,记录mac地址

cd/etc/sysconfig/network-scripts/

mvifcfg-eth0.bakifcfg-eth0–f

mvifcfg-eth1.bakifcfg-eth1–f

mvifcfg-eth2.bakifcfg-eth2–f

将记录的mac信息对应的更新到ifcfg-eth*文件中。

重启网络服务

Servicenetworkrestart

除此之外,还要切换到oracle用户下修改ORACLE_SID这个环境变量。

同时修改/etc/hosts文件

至此,副节点的设置完毕,我们需要做的,就是重启系统,让新的主机名、IP地址等生效。

下面开始配置clusterware

四.配置Clusterware安装环境及安装

通信配置

在clusterware(CRS)和RacDatabase安装过程中,OracleUniversalInstaller(OUI)必须能够以oracle的身份自动将软件复制到所有RAC节点。这里我们通过配置ssh让oracle用户拥有不输入密码即可访问各节点的能力。

首先两个节点间互ping,要确保都是通的

要建立用户等效性,需要在两个节点上以oracle用户身份生成用户的公钥和私钥,首先在rac1执行:

[root@rac1opt]#su-oracle

[oracle@rac1~]$mkdir~/.ssh

[oracle@rac1~]$chmod700~/.ssh

[oracle@rac1~]$ssh-keygen-trsa

Generatingpublic/privatersakeypair.

Enterfileinwhichtosavethekey(/home/oracle/.ssh/id_rsa):

Enterpassphrase(emptyfornopassphrase):

Entersamepassphraseagain:

Youridentificationhasbeensavedin/home/oracle/.ssh/id_rsa.

Yourpublickeyhasbeensavedin/home/oracle/.ssh/id_rsa.pub.

Thekeyfingerprintis:

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):

Entersamepassphraseagain:

Youridentificationhasbeensavedin/home/oracle/.ssh/id_dsa.

Yourpublickeyhasbeensavedin/home/oracle/.ssh/id_dsa.pub.

Thekeyfingerprintis:

0a:9a:20:46:a2:28:ec:72:23:82:f2:9d:f8:62:9b:d1oracle@node1

接着在rac2中作同样的操作

切回rac1

[oracle@rac1~]$cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys

[oracle@rac1~]$cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys

  提示:下列命令会提示你输入rac2oracle密码,按照提示输入即可,如果失败可重新尝试执行命令。

[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@rac2¨spassword:

[oracle@rac1~]$sshrac2cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys

oracle@rac2¨spassword:

[oracle@rac1~]$scp~/.ssh/authorized_keys

rac2:~/.ssh/authorized_keys

oracle@rac2¨spassword:

authorized_keys100%19922.0KB/s00:00

  两机相互执行,看看是否还需要输入密码

[oracle@rac1~]$sshrac1date

[oracle@rac1~]$sshrac2date

[oracle@rac1~]$sshrac1-privdate

[oracle@rac1~]$sshrac2-privdate

  切换至rac2执行

[oracle@rac2~]$sshrac1date

[oracle@rac2~]$sshrac2date

[oracle@rac2~]$sshrac1-privdate

[oracle@rac2~]$sshrac2-privdate

  提示:

  注意命令的返回信息,由于rac对节点间时间较敏感,因此如果此处显示节点单时间不一至,建议同步(一般相隔超过20秒就需要同步时间了)。

配置asm

注意:必须以root身份进行

  首先在node1执行:

[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]

Loadingmodule"oracleasm":[OK]

MountingASMlibdriverfilesystem:[OK]

ScanningsystemforASMdisks:[OK]

  提示:如果本步执行出错(可能出错机率最高的是在ScanningsystemforASM),不妨将转换一下命令行的执行方式,改成:

[root@rac1~]#sh/etc/init.d/oracleasmconfigure

  有可能解决你的问题!

  然后切换至rac2执行

[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]

Loadingmodule"oracleasm":[OK]

MountingASMlibdriverfilesystem:[OK]

ScanningsystemforASMdisks:[OK]

再切换回rac1执行

[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

VOL1

VOL2

rac2上也查看一下当前磁盘组:

[root@rac2~]#/etc/init.d/oracleasmscandisks

ScanningsystemforASMdisks:[OK]

[root@rac2~]#/etc/init.d/oracleasmlistdisks

VOL1

VOL2

检查

/data/rhel5/clusterware/cluvfy/runcluvfy.shstage-precrsinst-nrac1,rac2verbose

存在部分报错如:CouldnotfindasuitablesetofinterfacesforVIPs.compat-*等等报错,但可以忽略掉

安装时时间必须同步,两台虚拟机时刻存在时间不同步问题

可用ntp协议同

*****/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

隔5秒执行一次同步

安装

Host+

Su oracle

建议在执行前先加载一下.bash_profile文件,加载oracle用户的环境变量

./runInstaller–ignoreSysPreReqs

Pcserver+oracle10g+rac

上图处需要手工增加rac2的节点。

Pcserver+oracle10g+rac

上图处需要将eth0设置为public其他不用的改为donotuseeth1为private

Pcserver+oracle10g+rac

上图分别选择ocr及vote磁盘位置

Pcserver+oracle10g+rac

?

在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;

/opt/ora10g/product/10.2.0/crs_1/jdk/jre//bin/java:errorwhileloadingsharedlibraries:libpthread.so.0:cannotopensharedobjectfile:Nosuchfileordirectory

可以按照如下方式解决:

===============================

修改vipca文件

[root@node2opt]#vi/opt/ora10g/product/10.2.0/crs_1/bin/vipca

找到如下内容:

Removethisworkaroundwhenthebug3937317isfixed

arch=`uname-m`

if["$arch"="i686"-o"$arch"="ia64"]

then

LD_ASSUME_KERNEL=2.4.19

exportLD_ASSUME_KERNEL

fi

#Endworkaround

在fi后新添加一行:

unsetLD_ASSUME_KERNEL

以及srvctl文件

[root@node2opt]#vi/opt/ora10g/product/10.2.0/crs_1/bin/srvctl

找到如下内容:

LD_ASSUME_KERNEL=2.4.19

exportLD_ASSUME_KERNEL

同样在其后新增加一行:

unsetLD_ASSUME_KERNEL

保存退出,然后在node2重新执行root.sh

当然,既然我们已经知道了有这个问题,建议最好在node2执行root.sh之前,首先修改vipca。

其实同时需要你改的还有$ORACLE_HOME/bin/srvctl文件,不然等装完数据库之后,srvctl命令也是会报这个错误地。要知道srvctl这么常用,如果它执行老报错,那可是相当致命啊。不过呢你现在才安装到crs,离createdb还远着呢,大可以等到创建完数据库,待到需要管理时再修改该文件。

B).如果你碰到了这个错误:

Thegiveninterface(s),"eth0"isnotpublic.PublicinterfacesshouldbeusedtoconfigurevirtualIPs.

解决方式如下:

==============================

图形界面上运行$CRS_HOME/bin/vipca,手工重新配置rac1-vip和rac2-vip。

[root@node2opt]#xhost+

[root@node2opt]#/opt/ora10g/product/10.2.0/crs_1/bin/vipca

Pcserver+oracle10g+rac

留意该图ip配置

C).如果你碰到了这个错误:

Error0(Native:listNetInterfaces:[3])

[Error0(Native:listNetInterfaces:[3])]

解决方式如下:

===============================

[root@node2bin]#./oifcfgiflist

eth1 192.168.200.0

virbr0192.168.122.0

eth0192.168.100.0

[root@node2bin]#./oifcfgsetif-globaleth0/192.168.100.0:public

[root@node2bin]#./oifcfgsetif-globaleth1/192.168.200.0:cluster_interconnect

[root@node2bin]#./oifcfggetif

eth0 192.168.100.0 globalpublic

eth1 192.168.200.0 globalcluster_interconnect

然后在视窗界面重新执行vipca即可,如上b例中所示。

13、然后返回node1中,执行脚本的窗口,点击ok结束该窗口。

14、执行最后的环境配置

如果前面配置环境检查出错

以root身份执行$ORA_CRS_HOME/cfgtoollogs/configToolFailedCommands.sh

然后执行:

[root@rac1~]#/opt/ora10g/product/10.2.0/crs_1/bin/./crs_stat -t

至此clusterware集群软件安装完成。。

五.oracle软件安装及实例安装

软件安装

Host+

Su oracle

建议在执行前先加载一下.bash_profile文件,加载oracle用户的环境变量

./runInstaller–ignoreSysPreReqs

Pcserver+oracle10g+rac

此处需要将两个两个节点都选上

且只安装软件不安装数据库

创建实例数据库

./dbca

Pcserver+oracle10g+rac

?

选择安装数据库的类型

Pcserver+oracle10g+rac

将两个节点都勾选

Pcserver+oracle10g+rac

选择安装的数据库类型

Pcserver+oracle10g+rac

?

这里有两项需要你指定,一个是globalname,同时还有一个sid的前缀,注意是前缀哟。然后oracle会自动为各节点分配sid,比如这里的sid前缀是racdb,则node1的sid就会是racdb1,node2的将会是racdb2

选择是否启用EM

Pcserver+oracle10g+rac

选择存储

Pcserver+oracle10g+rac

  1. . 设置asm实例sys用户的密码,并选择初始化文件的方式????

选择asm可用的磁盘组

Pcserver+oracle10g+rac

当前为空,因此我们需要点击Create?New来创建一个

D) . 为新建的磁盘组指定冗余度和可用的设备并起个名

Pcserver+oracle10g+rac

这里不启用冗余,点击ok之后,asm将自动开始创建该磁盘组

指定数据库文件位置

Pcserver+oracle10g+rac

屏蔽掉了所有可选择的数据库组件

Pcserver+oracle10g+rac

这块有两个地方需要注意,一个是要选择正确的数据库字符集(对于中文字符推荐ZHS16GBK)和国家字符集(建议AL16UTF16),另外就是要点击AllnitiallzationParameters,屏蔽掉remote_listener初始化参数的值,不然在dbca执行建库第一步的过程中可能会引发下列错误

ORA-00119: invalid specification for system parameter LOCAL_LISTENER

ORA-00132: syntax error or unresolved network name ‘LISTENERS_RACDB‘

这是由于模板数据库中配置了该初始化参数造成的,解决方式有如下几种:

A) . 手工修改模版文件,注视掉该参数

B) . 选择自定义数据库,在执行安装之前修改该初始化参数为空

C) . 创建数据库时选择保存建库脚本而不创建数据库,然后手工修改建库脚本,再通过脚本创建

D) . 提前配置好监听和Net ServiceName

恭喜你,RAC已经成功安装了!整体来看比单机安装要复杂,但这还不算什么,只是环境搭建好还不算完,RAC的管理和部署才是最要命的,比如各节点启动和关闭,备份策略如何调整,添加修改节点如何处理,所谓路漫漫其修远矣,哥们继续努力吧:)

?

?

[root@r4o10n2 install]# ./rootdelete.sh
PRKH-1010 : Unable to communicate with CRS services.
[PRKH-1000 : Unable to load the SRVM HAS shared library
[PRKN-1008 : Unable to load the shared library "srvmhas10"
or a dependent library, from
LD_LIBRARY_PATH="/oracle/product/10.2.0/crs/jdk/jre/lib/i386/client:/oracle/product/10.2.0/crs/jdk/jre/lib/i386:/oracle/product/10.2.0/crs/jdk/jre/../

lib/i386:/oracle/product/10.2.0/crs/lib32:/oracle/product/10.2.0/crs/srvm/lib32:/oracle/product/10.2.0/crs/lib:/oracle/product/10.2.0/crs/srvm/lib:"
[java.lang.UnsatisfiedLinkError: /oracle/product/10.2.0/crs/lib32/libsrvmhas10.so: libclntsh.so.10.1: cannot open shared object file: No such file or directory]]]

解决办法:

在两2上节点安装32位的glibc-devel-2.3.4-2.43.i386.rpm,然后再重新安装CRS?
注意:必要是2个节点上都要安装这个包,而且需要重新安装CRS

解决过程:

[root@r4o10n2 RPMS]# rpm -qa|grep glibc
glibc-kernheaders-2.4-9.1.103.EL
glibc-2.3.4-2.43
glibc-headers-2.3.4-2.43
glibc-common-2.3.4-2.43
glibc-devel-2.3.4-2.43
glibc-2.3.4-2.43
[root@r4o10n2 RPMS]# rpm -ivh glibc-devel-2.3.4-2.43.i386.rpm?
warning: glibc-devel-2.3.4-2.43.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
error: failed to stat /media/cdrecorder: No such file or directory
Preparing... ########################################### [100%]
1:glibc-devel ########################################### [100%]
[root@r4o10n2 RPMS]# rpm -qa|grep glibc
glibc-kernheaders-2.4-9.1.103.EL
glibc-devel-2.3.4-2.43
glibc-2.3.4-2.43
glibc-headers-2.3.4-2.43
glibc-common-2.3.4-2.43
glibc-devel-2.3.4-2.43
glibc-2.3.4-2.43

? ?

删除CRS

rm /etc/oracle/*
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
rm -rf /home/oracle/oraInventory/
rm -rf /oracle/product/10.2.0/crs/*?
dd if=/dev/zero of=/dev/raw/raw1 bs=8192 count=2560
dd if=/dev/zero of=/dev/raw/raw2 bs=8192 count=2560
chown -R oracle:oinstall /oracle

重新安装,出现以下提示,说明已经解决该问题
The given interface(s), "eth0" is not public. Public interfaces should be used to configure virtual IPs.

?

?

?

?

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还远着呢,大可以等到创建完数据库,待到需要管理时再修改该文件。

Pcserver+oracle10g+rac

上一篇:SQL查询语句47题


下一篇:Linux下安装MySQL