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

RAW+ASM 的RAC 安装文档

 
阅读更多

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

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

这次实验是RAW+ASM来实现的,在生产环境中还是raw+ASM比较多。也可以用OCFS2+ASM来做,ocfs2的安装方法参考我的Blog:

OCFS2+ASMRAC安装文档

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

实验平台: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.准备的RHEL4(x86)

3.搞清楚你的linux的kernelversion

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

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实例,取名raw1.内存700M,硬盘12GB。

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

3.在gsx里vdiskmanager创建ShareDisk。

rawforOCRandvotingdisk,ASMforOracleDATA.

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

vmware-vdiskmanager创建pre-allocated并且是lsicontoller的硬盘300m一个forrawforOCR+CRSvoting

vmware-vdiskmanager.exe-c-s300Mb-alsilogic-t2E:/VM/rawShare/raw_ocr_crs.vmdk

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

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

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

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

4.raw1的目录,打开raw1.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/rawShare/raw_ocr_crs.vmdk"

scsi1:1.deviceType="plainDisk"

scsi1:2.present="TRUE"

scsi1:2.mode="independent-persistent"

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

scsi1:2.deviceType="plainDisk"

scsi1:3.present="TRUE"

scsi1:3.mode="independent-persistent"

scsi1:3.filename="E:/VM/rawShare/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,安装的时候,为了方便,把包全部装上,省得以后麻烦。

将raw1结点复制到raw2,在虚拟机中用新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@raw1~]#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=raw1

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

查看DNS
cat/etc/resolv.conf

同步时间:

1.raw1上用root用户执行

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

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

[root@raw2~]#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.119raw1

10.85.10.121raw2

192.168.1.119raw1-priv

192.168.1.121raw2-priv

10.85.10.122raw1-vip

10.85.10.123raw2-vip

两个node都要一样.

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

8.建立用户等效性

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

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

#groupaddoinstall

#groupadddba

#useradd-goinstall-Gdbaoracle

#passwdoracle

建立等效用户

raw1:

[root@raw1opt]#su-oracle

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

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

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

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

raw2

[root@raw2opt]#su-oracle

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

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

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

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

切换回raw1,接着执行:

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

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

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

令。

Raw1节点:

[oracle@raw1~]$scp~/.ssh/authorized_keysraw2:~/.ssh/authorized_keys

Raw2节点:

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

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

[oracle@raw2~]$scp~/.ssh/authorized_keysraw1:~/.ssh/authorized_keys

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

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

[oracle@raw1~]$sshraw1date

[oracle@raraw1]$sshraw2date

[oracle@raraw1]$sshraraw1rivdate

[oracle@raraw1]$sshraw2-privdate

切换至raw2执行

[oracle@raw2~]$sshraraw1ate

[oracle@raw2~]$sshraw2date

[oracle@raw2~]$sshraraw1rivdate

[oracle@raw2~]$sshraw2-privdate

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

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

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

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

这个目录给oracle和clusterware系统的

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@raraw1]#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@raraw1]#modprobehangcheck-timer

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

modprobehangcheck-timer

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

[root@raraw1]#vi/etc/modprobe.conf

optionshangcheck-timerhangcheck_tick=30hangcheck_margin=180

12.4确认模块加载成功:

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

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

13.格式化分区fdisk/dev/sdb,/dev/sdc,/dev/sdd.

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

[root@raw1~]#fdisk/dev/sdb

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-300,default1):

Usingdefaultvalue1

Lastcylinderor+sizeor+sizeMor+sizeK(1-300,default300):+150M

Command(mforhelp):n

Commandaction

eextended

pprimarypartition(1-4)

p

Partitionnumber(1-4):2

Firstcylinder(145-300,default145):

Usingdefaultvalue145

Lastcylinderor+sizeor+sizeMor+sizeK(145-300,default300):+150M

Command(mforhelp):w

Thepartitiontablehasbeenaltered!

Callingioctl()tore-readpartitiontable.

Syncingdisks.

[root@raw1~]#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-522,default1):

Usingdefaultvalue1

Lastcylinderor+sizeor+sizeMor+sizeK(1-522,default522):

Usingdefaultvalue522

Command(mforhelp):w

Thepartitiontablehasbeenaltered!

Callingioctl()tore-readpartitiontable.

Syncingdisks.

[root@raw1~]#fdisk-l

/dev/sda1*1140211261533+83Linux

/dev/sda214031566131733082Linuxswap

/dev/sdb1114414744083Linux

/dev/sdb214528814745683Linux

/dev/sdc115224192933+83Linux

/dev/sdd11261209645183Linux

注:格式化时候,在另一个节点要重启一下系统,不然识别不了。

14.配置raw设备

所谓raw设备,就是通过字符方式访问的设备,也就是读写设备不需要缓冲区。在Linux下,对磁盘值提供了块方式的访问。要想通过字符方式访问,必须配置raw设备服务,并且Oracle用户对这些raw设备必须有访问的权限。

在2个节点上做如下操作:

14.1修改裸设备服务的配置文件:/etc/sysconfig/rawdevices.添加下面2行。

格式:裸设备名块设备名

/dev/raw/raw1/dev/sdb1

/dev/raw/raw2/dev/sdb2

14.2设置Oracle用户对裸设备的访问权限。

编辑UDEV的权限文件:/etc/udev/permissions.d/50-udev.permissions

找到rawdevice部分,修改成如下格式:

#rawdevices

raw*:oracle:dba:0660

raw/*:oracle:dba:0660

14.3确认裸设备服务自启动,2个节点都要执行

[root@raw1/]#chkconfig--listrawdevices

rawdevices0:off1:off2:off3:on4:on5:on6:off

14.4.启动rawdevices服务,确认裸设备创建成功,权限正确:

[root@raw1/]#servicerawdevicesrestart

Assigningdevices:

/dev/raw/raw1-->/dev/sdb1

/dev/raw/raw1:boundtomajor8,minor17

/dev/raw/raw1-->/dev/sdb2

/dev/raw/raw1:boundtomajor8,minor18

done

[oracle@raw2~]$cd/dev/raw

[oracle@raw2raw]$ls-lrt

total0

crw-rw----1oracledba162,1Feb2803:08raw1

crw-rw----1oracledba162,2Feb2803:08raw2

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

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

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

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

linux挂在windows共享的盘

1.启动nfs服务:servicenfsstart

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

16.创建ASM磁盘

在一个node上:

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

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

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

/etc/init.d/oracleasmcreatediskVOL1/dev/sdc1

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

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

17.在另外一个node上

/etc/init.d/oracleasmscandisks

/etc/init.d/oracleasmlistdisks查看

18.在每个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=raw1

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=raw2其他都一样

二.安装Oracle10gR2clusterware

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

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

3.增加相关结点信息

raw1raw1-privrar1-vip

raw2raw2-privraw2-vip

4.指定eth0的类型时public

5.指定OCR和VotingDisk

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

OCR最多只有一份冗余:

/dev/raw/raw1

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

/dev/raw/raw2

6.后就开始安装了,结束时会提示用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命令:

raw1#./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

raw2

/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中解析不了。就报这个错误!

7.clusterware就安装好了.

确认一下.

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

raraw1b1

raw2pub2

$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.输入密码。RAC的spfile必须放在共享目录下。参数文件我们选择第一个initializationparameter。也可以放在我们建的裸设备上。

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.输入数据库的全局名,比如raw

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@raraw1in]$./srvctlstatusdatabase-draw

Instanceraw1isrunningonnoderaw1

Instanceraw2isrunningonnoderaw2

2.[root@raw1bin]#./crs_stat-t

NameTypeTargetStateHost

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

ora.raw.dbapplicationONLINEONLINEraw1

ora.raw.raw.csapplicationONLINEONLINEraw1

ora....aw1.srvapplicationONLINEONLINEraw1

ora....aw2.srvapplicationONLINEONLINEraw2

ora....w1.instapplicationONLINEONLINEraw1

ora....w2.instapplicationONLINEONLINEraw2

ora....SM1.asmapplicationONLINEONLINEraw1

ora....W1.lsnrapplicationONLINEONLINEraw1

ora.raw1.gsdapplicationONLINEONLINEraw1

ora.raw1.onsapplicationONLINEONLINEraw1

ora.raw1.vipapplicationONLINEONLINEraw1

ora....SM2.asmapplicationONLINEONLINEraw2

ora....W2.lsnrapplicationONLINEONLINEraw2

ora.raw2.gsdapplicationONLINEONLINEraw2

ora.raw2.onsapplicationONLINEONLINEraw2

ora.raw2.vipapplicationONLINEONLINEraw2

3.客户端Failover测试

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

10.85.10.119raraw10.85.10.121raw2

10.85.10.122raraw1ip

10.85.10.123raw2-vip

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

RAC=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=raraw1ip)(PORT=1521))

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

(LOAD_BALANCE=YES)

(

CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=RAC)

(

FAILOVER_MODE=

(TYPE=session)

(METHOD=basic)

(RETRIES=180)

(DELAY=5)

)

)

)

3.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

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

raw2

3.4关闭raw2数据库

[oracle@raw2~]$exportORACLE_SID=raw2

[oracle@raw2~]$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

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

raw2

SQL>shutdownimmediate

Databaseclosed.

Databasedismounted.

ORACLEinstanceshutdown.

3.5在客户段再次查询,自动切换到了raw1

SQL>selectinstance_namefromV$instance;

INSTANCE_NAME

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

raw1

八.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@raraw1nstall]#./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@raraw1nstall]#./rootdelete.shlocalsharedvarsharedhome-downgrade

[root@raraw1nstall]#./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

问题三:CRS安装时,最后执行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