`
hunxiejun
  • 浏览: 1137472 次
文章分类
社区版块
存档分类
最新评论

OCFS2+ASM 的RAC安装文档

 
阅读更多

有关RAC的一些概念性和原理性的知识,请参考我的blog:

http://blog.csdn.net/tianlesoftware/archive/2010/02/27/5331067.aspx

这次实验是OCFS2+ASM来实现的,至于裸设备平台的搭建,以后在整理。在生产环境中还是raw+ASM比较多。

实验平台:Oracle10gR2RAC+RHEL4.0+VMWareGSX3.2.0

安装步骤:

1.安装前准备及OS安装配置

2.安装Oracle10gR2clusterware

3.安装Oracle10gR2database

4.配置netca

5.创建ASM实例

6.配置dbca创建数据库

7.检查RAC状态

8.RAC卸载

一.安装前准备及OS安装配置

HostOS准备

1.从OracleOTN下载oracle10gR2forx86linux,下2个zip,一个是clusterwarezip,一个是databasezip,compCD可选.

2.准备的RHEL5(x86)

3.搞清楚你的linux的kernelversion

4.从OracleOTN下载ocfs2,ocfs2tools,ocfs2console,ASMLib,ASMLibsupport,记住这些都是针对你的kernel的,不要下错

http://oss.oracle.com/projects/ocfs2/source.html

http://oss.oracle.com/projects/ocfs2/files/

http://oss.oracle.com/projects/ocfs2-tools/files/

注意,ocfs2tools和ocfs2console在一个页面下载。

http://www.oracle.com/technology/tech/linux/asmlib/index.html

该页面有下载地址,注意选择CPU类型。里面有asmlibsupport。在同一个页面。

5.VMWareGSX3.2.0forlinux

虚拟机Workstation,GSXServerESX之间的区别

http://blog.csdn.net/tianlesoftware/archive/2010/02/22/5316767.aspx

OS安装

1.在vmwareconsole中创建redhat4实例,取名rac1.内存600M,硬盘12GB。

2.创建好后vmwareOS之后,加上一块NIC网卡

3.在gsx里vdiskmanager创建ShareDisk。

ocfs2forOCRandvotingdisk,ASMforOracleDATA.

Dos下进入vmware的安装目录,运行一下命令

vmware-vdiskmanager创建pre-allocated并且是lsicontoller的硬盘1GB一个forocfs2forOCR+CRSvoting

vmware-vdiskmanager.exe-c-s500Mb-alsilogic-t2E:/VM/RACShare/ocfs2_ocr_crs.vmdk

vmware-vdiskmanager创建pre-allocated并且是lsicontoller的硬盘forOracledata&flashrecoveryarea

vmware-vdiskmanager.exe-c-s4096Mb-alsilogic-t2E:/VM/RACShare/asm_data.vmdk

vmware-vdiskmanager.exe-c-s2048Mb-alsilogic-t2E:/VM/RACShare/asm_recovery.vmdk

做好后,share目录就会产生你刚才创建的这些vmdk了.

4.rac1的目录,打开rac1.vmx,在最后空白处添加这几段内容(一定要最后)

scsi1.present="TRUE"

scsi1.virtualDev="lsilogic"

scsi1.sharedBus="virtual"

这段是打开scsi1上的使用,并且设置成virtual,controller设置成lsilogic

然后依次添加

scsi1:1.present="TRUE"

scsi1:1.mode="independent-persistent"

scsi1:1.filename="E:/VM/RACShare/ocfs2_ocr_crs.vmdk"

scsi1:1.deviceType="plainDisk"

scsi1:2.present="TRUE"

scsi1:2.mode="independent-persistent"

scsi1:2.filename="E:/VM/RACShare/asm_data.vmdk"

scsi1:2.deviceType="plainDisk"

scsi1:3.present="TRUE"

scsi1:3.mode="independent-persistent"

scsi1:3.filename="E:/VM/RACShare/asm_recovery.vmdk"

scsi1:3.deviceType="plainDisk"

最后添加这个

disk.locking="false"

diskLib.dataCacheMaxSize="0"

diskLib.dataCacheMaxReadAheadSize="0"

diskLib.DataCacheMinReadAheadSize="0"

diskLib.dataCachePageSize="4096"

diskLib.maxUnsyncedWrites="0"

这段是对vmware使用共享硬盘的方式进行定义

保存退出之后,重新打开你的vmware-console,你就可以看到2个vmwareguestOS的配置中,都有这些硬盘出现了.

5.然后就安装你的vmwareOS,安装的时候,为了方便,把包全部装上,省得以后麻烦。

将rac1结点复制到rac2,在虚拟机中用新ID打开,修改IP地址,hostname,节点2创建完成。采用复制就省的安装2次系统,比较方便。

6.配置你的2个网卡的固定IP,hostname,DNS,gateway,timeserver(NTP)

/etc/sysconfig/network-script/ifcfg-eth0

/etc/sysconfig/network-script/ifcfg-eth1

修改机器名,IP和网关--默认网关必须设置,不然vipca报错

[root@rac1~]#vi/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.85.10.119

NETMASK=255.255.255.0

GATEWAY=10.85.10.253

修改主机名
vi/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rac1

修改完之后重启生效:
/etc/rc.d/init.d/networkrestart重新启动

查看DNS
cat/etc/resolv.conf

同步时间:

1.rac1上用root用户执行

#chkconfigtimeon#在系统引导的时候自动启动

2.在rac2上添加任务,每一分钟和rac1进行一次时间同步。

[root@rac2~]#crontab-l

*/1****rdate-s10.85.10.119

rac对节点间时间较敏感,如果不同步在安装clusterware时后会报错,而且在安装vipca的时候也会报错。具体时间同步参考我的blog:

Linux时间同步配置

http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5315587.aspx

linux下修改日期和时间

http://blog.csdn.net/tianlesoftware/archive/2009/11/13/4808096.aspx

7.安装结束后,进入OS,修改解析文件:/etc/hosts

如下

注:机器名和public名要一样

127.0.0.1localhost(必须要这样)

10.85.10.119rac1

10.85.10.121rac2

192.168.1.119rac1-priv

192.168.1.121rac2-priv

10.85.10.122rac1-vip

10.85.10.123rac2-vip

两个node都要一样.

修改后要确认这个hosts都正确(ping)

8.建立用户等效性

建立等效用户之后,2个结点直接Oracle用户互相访问就不在需要密码了,这样就为RAC管理提供了可能性,如果等效性没有配好,RAC肯定是装不起来的。

groupadddbaoinstall组在两个node上,创建oracle用户,主组oinstall,附加组是dba和disk

#groupaddoinstall

#groupadddba

#useradd-goinstall-Gdbaoracle

#passwdoracle

建立等效用户

rac1:

[root@rac1opt]#su-oracle

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

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

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

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

rac2

[root@rac2opt]#su-oracle

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

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

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

[oracle@rac2~]$ssh-keygen-tdsa

切换回rac1,接着执行:

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

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

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

令。

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

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

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

[oracle@rac2~]$scp~/.ssh/authorized_keysrac1:~/.ssh/authorized_keys

确保2个node都有相互的结点信息。

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

[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

9.在每个结点上创建目录

[root@rac2~]#mkdir-p/u01/app/oracle

[root@rac2~]#chown-Roracle:oinstall/u01

[root@rac2~]#chmod-R777/u01

这个目录给oracle和clusterware系统的

[root@rac2~]#mkdir-p/u02/oradata/orcl

[root@rac2~]#chown-Roracle:oinstall/u02

[root@rac2~]#chmod-R777/u02

这个目录给ocfs2用来装OCR,CRSvoting的

10.修改你的/etc/sysctl.conf,添加这些kernel参数

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=262144

net.core.wmem_max=262144

kernel.shmall=78643200

kernel.shmmax=314572800

kernel.shmmni=4096

kernel.sem=25032000100128

fs.file-max=65536

net.ipv4.ip_local_port_range=102465000

#sysctl-p立刻生效

kernel.shmall为物理内存除以pagesize;

kernel.shmmax为物理内存的一半;

fs.file-max为512乘以processes(如128个process则为65536);

net.ipv4.ip_local_port_range/net.core.rmem_default/net.core.rmem_max三个参数设置和官方文档不一样,这是根据metalink343431.1最新要求更改的;

net.ipv4.tcp_rmem/net.ipv4.tcp_wmem两个参数一般情况下无需设置,除非是在Dataguard/Streams等需很多网络传输情况下;

其它参数根据官方文档要求设置即可.

具体内容参考我的blog:

Linux内核参数及Oracle相关参数调整

http://blog.csdn.net/tianlesoftware/archive/2009/10/15/4668741.aspx

11.设置用户资源限制

因为所有的进程都是以Oracle身份来运行的,因此需要定义Oracle用户能够使用的系统资源数量。

vi/etc/sysconfig/limits.conf

--使用HugePage内存技术,添加下面2行

Oraclesoftmemlock5242880

Oraclehardmemlock524280

--进程句柄数量

oraclesoftnproc2047

oraclehardnproc16384

--文件句柄

oraclesoftnofile65536

oraclehardnofile65536

将下面一行添加到/etc/pam.d/login文件中:
sessionrequired/lib/security/pam_limits.so

12.配置hangcheck-timer模块

Hangcheck-timer是Linux提供的一个内核级的IO-Fencing模块,这个模块会监控Linux内核运行状态,如果长时间挂起,这个模块会自动重启系统。这个模块在Linux内核空间运行,不会受系统负载的影响。这个模块会使用CPU的TimeStampCounter(TSC)寄存器,这个寄存器的值会在每个时钟周期自动增加,因此使用的是硬件时间,所以精度更高。

配置这个模块需要2个参数:hangcheck_tick和hangcheck_margin。

hangcheck_tick用于定义多长时间检查一次,缺省值是30秒。有可能内核本身很忙,导致这个检查被推迟,该模块还允许定义一个延迟上限,就是hangcheck_margin,它的缺省值是180秒。

Hangcheck-timer模块会根据hangcheck_tick的设置,定时检查内核。只要2次检查的时间间隔小于hangcheck_tick+hangchec_margin,都会认为内核运行正常,否则就意味着运行异常,这个模块会自动重启系统。

CRS本身还有一个MissCount参数,可以通过crsctlgetcssmiscount命令查看。

当RAC结点间的心跳信息丢失时,Clusterware必须确保在进行重构时,故障结点确实是Dead状态,否则结点仅是临时负载过高导致心跳丢失,然后其他结点开始重构,但是结点没有重启,这样会损坏数据库。因此MissCount必须大于hangcheck_tick+hangcheck_margin的和。

12.1查看模块位置:

[root@rac1~]#find/lib/modules-name"hangcheck-timer.ko"

/lib/modules/2.6.9-78.EL/kernel/drivers/char/hangcheck-timer.ko

/lib/modules/2.6.9-78.ELsmp/kernel/drivers/char/hangcheck-timer.ko

12.2配置系统启动时自动加载模块,在/etc/rc.d/rc.local中添加如下内容

[root@rac1~]#modprobehangcheck-timer

[root@rac1~]#vi/etc/rc.d/rc.local

modprobehangcheck-timer

12.3配置hangcheck-timer参数,在/etc/modprobe.conf中添加如下内容:

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

optionshangcheck-timerhangcheck_tick=30hangcheck_margin=180

12.4确认模块加载成功:

[root@rac1~]#grepHangcheck/var/log/messages|tail-2

Feb2322:08:44rac1kernel:Hangcheck:startinghangchecktimer0.9.0(tickis30seconds,marginis180seconds).

13.安装ocfs2,ocfs2的console的rpm,

#rpm-ivh*.rpm

linux挂在windows共享的盘

1.启动nfs服务:servicenfsstart

2.mount-ousername=share,password=share//10.85.10.80/RAC/mnt

14.在每个node上这样操作

/etc/init.d/o2cbenable

然后编辑/etc/init.d/o2cb,删除掉靠近配置开头的那些带#的配置行

进入X,然后运行ocfs2console,把你的2个node都添加进去

添加后会生成/etc/ocfs2/cluster.conf文件

若不能apply,把/etc/ocfs2/cluster.Conf文件删了在运行即可。

node:

ip_port=7777

ip_address=10.85.10.119

number=0

name=rac1----注意:name是机器名

cluster=ocfs2

node:

ip_port=7777

ip_address=10.85.10.121

number=1

name=rac2

cluster=ocfs2

cluster:

node_count=2

name=ocfs2

15.先格式化分区fdisk/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde,/dev/sdf.

在一个结点执行格式化就可以了,因为他们是共享的。

[root@rac1init.d]#fdisk/dev/sdc

DevicecontainsneitheravalidDOSpartitiontable,norSun,SGIorOSFdisklabel

BuildinganewDOSdisklabel.Changeswillremaininmemoryonly,

untilyoudecidetowritethem.Afterthat,ofcourse,theprevious

contentwon'tberecoverable.

Warning:invalidflag0x0000ofpartitiontable4willbecorrectedbyw(rite)

Command(mforhelp):n

Commandaction

eextended

pprimarypartition(1-4)

p

Partitionnumber(1-4):1

Firstcylinder(1-130,default1):

Usingdefaultvalue1

Lastcylinderor+sizeor+sizeMor+sizeK(1-130,default130):

Usingdefaultvalue130

Command(mforhelp):w

Thepartitiontablehasbeenaltered!

Callingioctl()tore-readpartitiontable.

Syncingdisks.

在用fdisk-l就会看到新的分区sdb1,sdc1,sdd1,sde1,sdf1

格式化分区:

在一个node上mkfs.ocfs2-b4k-C32k-Loradatafiles/dev/sdb1(就是前面创建的第一个vmdk)

16.在每个node上

mount-tocfs2-odatavolume/dev/sdb1/u02/oradata/orcl

若在第二个结点挂不上,把系统重启一下就可以了

在挂载之前,/etc/init.d/o2cbstatus显示为CheckingO2CBheartbeat:Notactive。

在格式化和挂载文件系统之前,应验证O2CB在两个节点上均联机;O2CB心跳当前没有

活动,因为文件系统还没有挂载。挂载之后就会变成active

问题1若出现这样的错误,注意检查下防火墙是否关闭,关闭防火墙在看看。

o2net_connect_expired:1664ERROR:noconnectionestablishedwithnode0after30.0seconds,givingupandreturningerrors.

关闭防火墙命令:

1)永久性生效,重启后不会复原
开启:chkconfigiptableson
关闭:chkconfigiptablesoff

2)即时生效,重启后复原
开启:serviceiptablesstart
关闭:serviceiptablesstop

参考:BuildYourOwnOracleRAC10gRelease2ClusteronLinuxandFireWire

http://blog.csdn.net/tianlesoftware/archive/2009/11/13/4805700.aspx

修改参数,让ocfs2在系统启动时自动挂共享盘

ConfigureOCFStoMountAutomaticallyatStartup

修改你的/etc/fstab,添加类似这样的行

/dev/sdb1/u02/oradata/orclocfs2_netdev,datavolume00

到这里,我们的ocfs2forOCR,CRSvoting就OK了

RACOcfs2文件系统常见问题解决方法

http://blog.csdn.net/tianlesoftware/archive/2009/11/13/4805727.aspx

17.修改/etc/sysconfig/o2cb

把threshhold的值设置成600

[隔离时间(秒)]=(O2CB_HEARTBEAT_THRESHOLD-1)*2
(301-1)*2=600

为什么设成600,如果时间过短,会造成ocfs不能正常挂载。

具体参考我的blog:

解决OCFS2不能自动挂载提示o2net_connect_expired

http://blog.csdn.net/tianlesoftware/archive/2009/11/14/4806813.aspx

18.在每个node上安装ASMLibs,tools,support三个rpm文件

#rpm-ivh*.rpm--nodeps--force

然后运行/etc/init.d/oracleasmconfigure

回答oracle,dba,y,y就可以了

19.创建ASM

在一个node上:

通过以root用户身份运行以下命令来标记由ASMLib使用的磁盘:/etc/init.d/oracleasmcreatediskDISK_NAMEdevice_name

(提示:DISK_NAME应由大写字母组成。当前版本有一个错误,即假如使用小写字母,ASM实例将无法识别磁盘。)

记住,ASM在linux下面处理的对象是partition,不是disk,所以你那些vmdk要linux下面partition好才能用,所以先fdisk一下在创建.

/etc/init.d/oracleasmcreatediskVOL3/dev/sdc1

/etc/init.d/oracleasmcreatediskVOL2/dev/sdd1

创建好后,在这个node上运行/etc/init.d/oracleasmlistdisks查看

20.在另外一个node上

/etc/init.d/oracleasmscandisks

/etc/init.d/oracleasmlistdisks查看

21.在每个node上

Su-oracle

Cd/home/oracle

修改oracle用户家目录下的.bash_profile

注意ORACLE_SID,和后面建库要一致。

#.bash_profile

#Getthealiasesandfunctions

if[-f~/.bashrc];then

.~/.bashrc

fi

#Userspecificenvironmentandstartupprograms

PATH=$PATH:$HOME/bin

exportORACLE_BASE=/u01/app/oracle

exportORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

exportORA_CRS_HOME=$ORACLE_BASE/product/crs

exportORACLE_SID=rac1

exportPATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin

exportPATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

exportPATH=${PATH}:$ORACLE_BASE/common/oracle/bin

exportORACLE_TERM=xterm

exportTNS_ADMIN=$ORACLE_HOME/network/admin

exportORA_NLS10=$ORACLE_HOME/nls/data

exportLD_LIBRARY_PATH=$ORACLE_HOME/lib

exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

exportCLASSPATH=$ORACLE_HOME/JRE

exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

exportTHREADS_FLAG=native

exportTEMP=/tmp

exportTMPDIR=/tmp

第二个节点的ORACLE_SID=rac2其他都一样

二.安装Oracle10gR2clusterware

1.用Xmanager软件连上虚拟机之后运行clusterware的安装软件,Xmanager支持图形界面,所以能省很多事。

注:若出现这样:libXp.so.6:cannotopensharedobjectfile错误,安装下libXp包就可以了

2.确认你的安装目录是/u01/app/oracle/product/crs

3.增加相关结点信息

rac1rac1-privrac1-vip

rac2rac2-privrac2-vip

4.指定eth0的类型时public

5.指定OCR和VotingDisk

一般而言,如果采用存储来存放OCR和VotingDisk.存储本身就提供了redundancy策略,此时我们可以选择ExternalRedundancy选项,此时Oracle就不在考虑软件冗余了。如果没有使用存储设备或者存储为RAID0,那么就可以使用Oracle自己提供的软件冗余机制NormalRedundancy选项,此时就会激活MirrorLocation选项.用来指定镜像文件位置,Oracle的Clusterware在运行时会维护这个Mirror文件的内容同步。

OCR最多只有一份冗余:

/u02/oradata/orcl/OCRFile

/u02/oradata/orcl/OCRFile_mirror

VotingDisk最多可以定义2份冗余:

/u02/oradata/orcl/VotingFile

/u02/oradata/orcl/VotingFile_mirror1

/u02/oradata/orcl/VotingFile_mirror2

7.然后就开始安装了,结束时会提示用root在每个节点上运行orainstRoot.Sh和root.Sh脚本,在第二个结点上运行root.Sh后自动调用vipca这个命令,在第二个结点运行root.Sh之前要修改一下vipca命令,不然可能会报错。

RAC安装时需要执行4个脚本及意义

http://blog.csdn.net/tianlesoftware/archive/2010/02/22/5317034.aspx

注意:VIPCA命令也是用ROOT用户来运行的,只需要在一个结点运行就可以了。

进入$CRS_HOME/bin/目录,用vi来修改vipca和srvctl2个命令。

问题1:vipca报错,是redhat的bug

Runningvipca(silent)forconfiguringnodeapps

/home/oracle/crs/oracle/product/10/crs/jdk/jre//bin/java:errorwhileloading

sharedlibraries:libpthread.so.0:cannotopensharedobjectfile:

Nosuchfileordirectory

解决方法:

Remembertore-editthesefilesonallnodes:

<CRS_HOME>/bin/vipca

<CRS_HOME>/bin/srvctl

<RDBMS_HOME>/bin/srvctl

<ASM_HOME>/bin/srvctl

afterapplyingthe10.2.0.2or10.2.0.3patchsets,asthesepatchsetwillstillincludethosesettingsunnecessaryforOEL5orRHEL5orSLES10.Thisissuewasraisedwithdevelopmentandisfixedinthe10.2.0.4patchsets.

NotethatweareexplicitlyunsettingLD_ASSUME_KERNELandnotmerelycommentingoutitssettingtohandleacasewheretheuserhasitsetintheirenvironment(loginshell).

$vivipca

......

Linux)LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH

exportLD_LIBRARY_PATH

echo$LD_LIBRARY_PATH

echo$CLASSPATH

#Removethisworkaroundwhenthebug3937317isfixed

arch=`uname-m`

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

then

#LD_ASSUME_KERNEL=2.4.19

#exportLD_ASSUME_KERNEL

echo

fi

#Endworkaround

问题2如果遇到这个错误:

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

解决方法:

CRS_HOME下运行oifcfg命令:

rac1

#./oifcfgsetif-globaleth0/10.85.10.119:public
#./oifcfgsetif-globaleth1/192.168.1.119:cluster_interconnect
#./oifcfggetif
eth010.85.10.119globalpublic
eth1192.168.1.119globalcluster_interconnect

rac2

/bin#./oifcfgsetif-globaleth0/10.85.10.121:public
/bin#./oifcfgsetif-globaleth1/192.168.1.121:cluster_interconnect
/bin#./oifcfggetif
eth010.85.10.121globalpublic
eth1192.168.1.121globalcluster_interconnect

然后在手工运行vipca添加nodeappsresource即可。

问题3AnunexpectedexceptionhasbeendetectedinnativecodeoutsidetheVM.
UnexpectedSignal:11occurredatPC=0xB7503E29
Function=__libc_free+0x49
Library=/lib/tls/libc.so.6

修改主机名不正确导致的。
RHEL
/etc/sysconfig/network主机名,如果在/etc/hosts中解析不了。就报这个错误!

8.clusterware就安装好了.

确认一下.

$/u01/app/oracle/product/crs/bin/olsnodes-n

rac1pub1

rac2pub2

$ls-l/etc/init.d/init.*

-r-xr-xr-x1rootroot1951Oct414:21/etc/init.d/init.crs*

-r-xr-xr-x1rootroot4714Oct414:21/etc/init.d/init.crsd*

-r-xr-xr-x1rootroot35394Oct414:21/etc/init.d/init.cssd*

-r-xr-xr-x1rootroot3190Oct414:21/etc/init.d/init.evmd*

检查CRS安装启动情况:用Root用户执行:

$CRS_HOME/bin/crsctlcheckcrs

CSSappearshealthy

CRSappearshealthy

EVMappearshealthy

表明CRS安装完成,并且启动成功

#./crs_stat-t-v

注:如果clusterware安装失败,再次运行安装程序,里面可以把之前的安装删除掉,删除之后在进行安装。

三.安装Oracle10gR2database

1.检查Oracle的相关包。Oracle10g需要如下包

binutils-2.15.92.0.2-10.EL4

compat-db-4.1.25-9

control-center-2.8.0-12

gcc-3.4.3-9.EL4

gcc-c++-3.4.3-9.EL4

glibc-2.3.4-2

glibc-common-2.3.4-2

gnome-libs-1.4.1.2.90-44.1

libstdc++-3.4.3-9.EL4

libstdc++-devel-3.4.3-9.EL4

make-3.80-5

pdksh-5.2.14-30

sysstat-5.0.5-1

xscreensaver-4.18-5.rhel4.2

libaio-0.3.96

Toseewhichversionsofthesepackagesareinstalledonyoursystem,runthefollowingcommand:

rpm-qbinutilscompat-dbcontrol-centergccgcc-c++glibcglibc-common/
gnome-libslibstdc++libstdc++-develmakepdkshsysstatxscreensaverlibaioopenmotif21

2.在Xmanager中用oracle用户,运行database的runInstaller

3.ORACLE安装目录指定到/u01/app/oracle/product/10.2.0/db_1

4.把2个node选择上

5.选择InstalldatabaseSoftwareonly

6.会要求你用完全的root权限运行root.sh,分别在2个node上一一运行

7.安装完毕

四.netca创建监听

注:创建数据库过程应该遵循这个顺序:先配置监听,再配置ASM实例,最后创建数据库实例,这样可以减少出错的概率。

1.oracle用户在一个node上运行netca

2.选择所有node

3.选择Listenerconfiguration

4.添加一个LISTEN,1521port

然后结束配置

监听配置成功后,2个结点上的Listener都会坐位ApplicationResource注册到CRS中,这样CRS就可以监控Listener的运行状态。我们可以通过crs_stat-t-v查看Listener状态。

五.创建ASM实例

1.运行DBCA命令

2.选择configureAutomaticStorageManagement,来创建ASM实例

3.选择所有结点

4.输入密码和参数文件位置

如:/u02/oradata/orcl/dbs/spfile+ASM.ora

5.修改asm参数:asm_diskstring=ORCL:VOL*,这样能让Oracle自动发现这些硬盘

6.ASM实例创建完后,用CreateNew来创建ASM磁盘组。我们用VOL1来创建一个DATA组,VOL2创建FLASH_RECOVERY_AREA组。

注:Redundancy一般选external就是也就是不考虑冗余,假如选normal则是mirror,至少要一个FailGroupHigh就是triplemirror,3倍镜像,需要三个FailGroup

7.创建完成后,能看到组的状态是Mount,ASM组必须mount之后才能使用。

ASM的相关信息参考blog:

OracleASM详解

http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5314541.aspx

.配置dbca创建数据库

1.用oracle用户运行dbca

2.选择customdatabase

3.输入数据库的全局名,比如rac

4.输入系统的角色建立密码

5.选择ASM来存储,分别选择我们刚创建的DATAFLASH_RECOVERY_AREA

6.DatabaseServices这里,你选择Add你一个新的service,随便叫名字,比如oltp

然后选择TAFPolicy,是Basic。这个服务在RAC的Failover中会用到,如果在这里没有配置,也可以通过dbca命令,选择ServicesManagement来进行配置。具体参考Blog:

Oracle RAC Failover 详解

http://blog.csdn.net/tianlesoftware/archive/2010/03/03/5340788.aspx

7.开始创建数据库

七.检查RAC运行状态

1.用oracle用户login,运行

[oracle@rac1bin]$./srvctlstatusdatabase-drac

Instancerac1isrunningonnoderac1

Instancerac2isrunningonnoderac2

2.$srvctlstatusservice-drac-srac

Serviceorcltestisrunningoninstance(s)orcl2,orcl1

3.[oracle@rac1bin]$./srvctlstatusnodeapps-nrac1

VIPisrunningonnode:rac1

GSDisrunningonnode:rac1

Listenerisrunningonnode:rac1

ONSdaemonisrunningonnode:rac1

4.[oracle@rac1bin]$./srvctlstatusasm-nrac1

ASMinstance+ASM1isrunningonnoderac1.

5.[root@rac2bin]#./crs_stat-t

NameTypeTargetStateHost

------------------------------------------------------------

ora.rac.dbapplicationONLINEONLINErac1

ora....orcl.csapplicationONLINEONLINErac1

ora....ac1.srvapplicationONLINEONLINErac1

ora....ac2.srvapplicationONLINEONLINErac2

ora....c1.instapplicationONLINEONLINErac1

ora....c2.instapplicationONLINEONLINErac2

ora....SM1.asmapplicationONLINEONLINErac1

ora....C1.lsnrapplicationONLINEONLINErac1

ora.rac1.gsdapplicationONLINEONLINErac1

ora.rac1.onsapplicationONLINEONLINErac1

ora.rac1.vipapplicationONLINEONLINErac1

ora....SM2.asmapplicationONLINEONLINErac2

ora....C2.lsnrapplicationONLINEONLINErac2

ora.rac2.gsdapplicationONLINEONLINErac2

ora.rac2.onsapplicationONLINEONLINErac2

ora.rac2.vipapplicationONLINEONLINErac2

6.运行sqlplus/nolog

SQL>connect/assysdba

SQL>SELECTinst_id,instance_numberinst_no,instance_nameinst_name

,parallel,status,database_statusdb_status,active_statestate

,host_namehostFROMgv$instanceORDERBYinst_id;

INST_IDINST_NOINST_NAMEPARSTATUSDB_STATUSSTATEHOST

----------------------------------------------------------

11rac1YESOPENACTIVENORMALrac1

22rac2YESOPENACTIVENORMALrac2

7.客户端Failover测试

7.1修改C:/windows/system32/drivers/etc/hosts文件,添加如下内容

10.85.10.119rac1

10.85.10.121rac2

10.85.10.122rac1-vip

10.85.10.123rac2-vip

7.2修改tnsnames.Ora文件,增加一下内容:

RAC=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521))

(ADDRESS=(PROTOCOL=TCP)(HOST=rac2-vip)(PORT=1521))

(LOAD_BALANCE=YES)

(

CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=RAC)

(

FAILOVER_MODE=

(TYPE=session)

(METHOD=basic)

(RETRIES=180)

(DELAY=5)

)

)

)

)

7.3客户端用sqlplus连接数据库

C:/DocumentsandSettings/Administrator>sqlplussystem/admin@rac

SQL*Plus:Release10.2.0.1.0-Productionon星期六2月2702:06:402010

Copyright(c)1982,2005,Oracle.Allrightsreserved.

连接到:

OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production

WiththePartitioning,RealApplicationClusters,OLAPandDataMiningoptions

SQL>selectinstance_namefromV$instance;

INSTANCE_NAME

--------------------------------

rac2

7.4关闭rac2数据库

[oracle@rac2~]$exportORACLE_SID=rac2

[oracle@rac2~]$sqlplus/assysdba

SQL*Plus:Release10.2.0.1.0-ProductiononSatFeb2702:58:482010

Copyright(c)1982,2005,Oracle.Allrightsreserved.

Connectedto:

OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production

WiththePartitioning,RealApplicationClusters,OLAPandDataMiningoptions

SQL>selectinstance_namefromv$instance;

INSTANCE_NAME

----------------

rac2

SQL>shutdownimmediate

Databaseclosed.

Databasedismounted.

ORACLEinstanceshutdown.

7.5在客户段再次查询,自动切换到了rac1

SQL>selectinstance_namefromV$instance;

INSTANCE_NAME

--------------------------------

rac1

八.RAC的卸载

卸载分为几个部分:database的卸载和clusterware(10.2版本说法)的卸载(10.1版本称为CRS:clusterreadyservice)。

oracledatabase的卸载可以利用很多方法-粗野的和温柔的,我这里利用dbca去卸载即可。

database的卸载会把所有节点的instance删除掉,并把唯一的database删除。

卸载database的第二步骤是把所有节点的listener卸载,可以利用netca卸载即可。

最后卸载clusterware,可以用Clusterware的安装程序来卸载,也可以利用脚本进行:

$ORA_CRS_HOME/install/rootdelete.sh-help

对本地节点和远程节点使用不用的命令,详细参考帮助。

[root@rac1install]#./rootdelete.sh--help

Usage:rootdelete[-help][local|remote][nosharedvar|sharedvar][sharedhome|nosharedhome][-downgrade[-version<version>]]

/-help:printthismessage

local:ifthisnodeisthenodewhereOUIistoberuntodeinstall,otherwiseuse'remote'

sharedvar:OCRisonasharedpath,otherwiseuse'nosharedvar'

sharedhome:CRShomeisonasharedpath,otherwuseuse'nosharedhome'

/-downgrade:OracleclusterwareandOCRwillberesetfordowngrade

/-version<version>:OCRlocationfilewillresetfordowngradetospecifiedversion,default:10.1

[root@rac1install]#./rootdelete.shlocalsharedvarsharedhome-downgrade

[root@rac1install]#./rootdelete.shremotesharedvarsharedhome-downgrade

最后在本地节点执行

$ORA_CRS_HOME/install/rootdeinstall.sh

即可。

脚本执行是比较安全的方式,完成之后把相关目录删除即可完成clusterware的卸载。

补充:RAC安装的相关问题解决方法:

问题一:

安装好RAC后,在用DBCA建库时选择ASM做为存储方案时,有时候会报错说ASM是单实例环境,不是RAC环境,这样就无法继续建库下来,出错信息如下:

TheASMinstanceconfiguredonthelocalnodeisasingle-instanceASM.Tocreateasingle-instancedatabaseusingthisASMinstance,restartDBCAandselectthesingle-instancedatabaseoption,tocreateaRACdatabaseusingthisASMinstance,convertittoRACASMfirst.

这个错误一般是发生在重装clusterware和database后,这样无论怎么样重启DBCA运行都会报同样的错。具体的解决办法便是在/etc/oratab里面的关于ASM的记录:+ASM1:/u01/app/oracle/product/10.2.0/db_1:N这么一行删除掉,再接着建库就可以了。

问题二:

创建ASM时报:ORA-12547:TNS:lostcontact

解决方法:

$cd$ORACLE_HOME/rdbms/lib

$make-fins_rdbms.mkioracle

问题三

1.counldnotstartclusterstack.ThismustberesolvedbeforeanyOCFS2filesystemcanbemounted

Thisproblemcanbecausedbydifferentversionofocfs2libandredhatkernel.selinuxisallowedisanotherpossiblereason.

tail-n100/var/log/messages:

May1812:10:27rac1kernel:SELinux:initialized(devconfigfs,typeconfigfs),notconfiguredforlabeling

May1812:10:27rac1kernel:audit(1211083827.759:7):avc:denied{mount}forpid=12346comm="mount"name="/"dev=configfsino=44504scontext=root:system_r:initrc_ttcontext=system_u:object_r:unlabeled_ttclass=filesystem

May1812:10:30rac1dbus:Can'tsendtoauditsystem:USER_AVCpid=2642uid=81loginuid=-1message=avc:denied{send_msg}forscontext=root:system_r:unconfined_ttcontext=user_u:system_r:initrc_ttclass=dbus

May1812:11:05rac1lastmessagerepeated7times

May1812:12:10rac1lastmessagerepeated13times

[root@rac1/]#vi/etc/selinux/config

#SELINUX=enforcing

SELINUX=disabled

[root@rac1/]#setenforce0

setenforce:SELinuxisdisabled

问题四

2.Theclusterstackhasbeenstarted.Itneedstoberunningforanyclusteringfunctionalitytohappen.

Pleaserun"/etc/init.d/o2cbenable"tohaveitstarteduponbootup.

o2cb_ctl:UnabletoaccessclusterservicewhilecreatingnodeCouldnotaddnoderac1

[root@rac1init.d]#./o2cbenable

WritingO2CBconfiguration:OK

StartingO2CBclusterocfs2:Failed

Clusterocfs2created

o2cb_ctl:Configurationerrordiscoveredwhilepopulatingclusterocfs2.Noneofitsnodeswereconsideredlocal.

Anodeisconsideredlocalwhenitsnodenameintheconfigurationmatchesthismachine'shostname.

StoppingO2CBclusterocfs2:OK

[root@rac1ocfs2]#pwd

/etc/ocfs2

[root@rac1ocfs2]#ls

cluster.conf

[root@rac1ocfs2]#mvcluster.confcluster.conf.Bak

问题5CRS安装时,最后执行root.sh,后执行的节点上无法成功,提示:
#./root.sh
WARNING:directory'/u01/app/oracle/product/10.2.0'isnotownedbyroot
WARNING:directory'/u01/app/oracle/product'isnotownedbyroot
WARNING:directory'/u01/app/oracle'isnotownedbyroot
WARNING:directory'/u01/app'isnotownedbyroot
WARNING:directory'/u01'isnotownedbyroot
CheckingtoseeifOracleCRSstackisalreadyconfigured
SettingthepermissionsonOCRbackupdirectory
SettingupNSdirectories
FailedtoupgradeOracleClusterRegistryconfiguration
另外有一种提示为:PRIF-10:failedtoinitializetheclusterregistry
解决方法:关闭共享磁盘的锁定属性
SSA或者FASTT系列盘阵关闭磁盘锁定用:/usr/sbin/chdev-lhdiskn-areserve_lock=no
ESS,EMC,HDS,CLARIION系列盘阵关闭磁盘锁定用:/usr/sbin/chdev-lhdiskn-areserve_policy=no_reserve

在虚拟机上就是添加参数.disk.locking="false"

<!--EndFragment-->
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics