本篇内容介绍了“Oracle 11G RAC集群安装方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本次Oracle 11G RAC集群的安装使用工具:

数据库版本:Oracle 11g

grid版本:grid 11g

系统版本:Centos 6.5

准备工作如下:一、确定作为节点的主机的网络配置,主要是检查是否是两张网卡,节点的两张生效的网卡的设备名字是否一致。

如果网卡的设备名两个节点的名称不一致,在安装时不会出现错误,但在安装oracle数据库软件时会报错,CRS运行不正常。
因此在安装grid前发现网卡名称不一致要进行更改,方法为:
例如两个节点的的第二张网卡名称不一致,节点rac1的为eth2,节点rac2的为eth3
现在将rac2的网卡名eth3更改为eth2:
1.将节点rac2的第二张网卡的停掉:ifdown eth3
2.将rac2的第二张网卡的配置文件 ifcfg-eth3 名字改为 ifcfg-eth2,vim打开后将 DEVICE=eth3 改为 DEVICE=eth2.
3.将/etc/udev/rules.d/70-persistent-net.rules 中的NAME=“eth3” 修改为NAME=“eth2”
例如:

[root@rac1network-scripts]#cat/etc/udev/rules.d/70-persistent-net.rules#Thisfilewasautomaticallygeneratedbythe/lib/udev/write_net_rules#program,runbythepersistent-net-generator.rulesrulesfile.##Youcanmodifyit,aslongasyoukeepeachruleonasingle#line,andchangeonlythevalueoftheNAME=key.#PCIdevice0x8086:0x100f(e1000)SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="00:0c:29:34:5b:13",ATTR{type}=="1",KERNEL=="eth*",NAME="eth0"#PCIdevice0x8086:0x100f(e1000)SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="00:0c:29:52:b8:54",ATTR{type}=="1",KERNEL=="eth*",NAME="eth2"

4.将rac2主机重启后设备名就改为eth2,与节点rac1网卡名称一样了。

二、将两台节点机的主机名修改为rac1、rac2,并在/etc/hosts里设置IP地址:

[root@rac1~]#cat/etc/hosts#public-ip公网ip172.16.140.146rac1172.16.140.247rac2#priv-ip私网ip186.18.6.222rac1-priv186.18.6.186rac2-priv#vip172.16.140.99rac1-vip172.16.140.98rac2-vip#scan-ip172.16.140.97rac-scan

PS: Oracle
RAC集群安装需要配置网络包含了公网IP,VIP,私网IP与scan-ip,其中公网IP,VIP,私网IP在两个节点上都需要,而scan-ip只需要一个。
其中公网IP和vip都是可以正常对外访问,私网IP是为了集群各个节点之间联系使用,私网IP顾名思义就是自己用的,因此网段设置并没有特别要求,不冲突即可。
scan-ip网段也是可以正常对外访问的。集群安装后或自动配置到主节点的网卡上显示。具体ip功能以后另做介绍。
现在概括的说,两节点的Oracle
RAC集群需要跟网络工程师申请5个正常访问网段的IP地址,自己再配置私网IP地址,安装前公网IP地址和私网IP地址都可以在系统看到,VIP和scan-ip是在集群安装完成后自动配置到网卡上的。

三、

(1)再节点主机上添加用户和组(每个节点都需要创建):

[root@rac1~]#groupadd-g1000oinstall[root@rac1~]#groupadd-g1200asmadmin[root@rac1~]#groupadd-g1201asmdba[root@rac1~]#groupadd-g1202asmoper[root@rac1~]#groupadd-g1300dba[root@rac1~]#groupadd-g1301oper[root@rac1~]#useradd-m-u1100-goinstall-Gasmadmin,asmdba,asmoper,dba-d/home/grid-s/bin/bashgrid[root@rac1~]#useradd-m-u1101-goinstall-Gdba,oper,asmdba-d/home/oracle-s/bin/bashoracle

(2)将用户grid添加到dba组:

[root@rac1app]#gpasswd-agriddbaAddingusergridtogroupdba

(3)修改用户grid和oracle的密码(所有节点):

[root@rac1~]passwdoracle[root@rac1~]passwdgrid

(4)确定nobody用户的信息:

[root@rac1~]#idnobodyuid=99(nobody)gid=99(nobody)groups=99(nobody)

PS: 此用户无需创建,如果不存在,进行手工创建:

[root@rac1 ~]# /usr/sbin/useradd nobody

(5)禁用防火墙和SELNUX (所有节点)

[root@rac1~]serviceiptablesstatus[root@rac1~]serviceiptablesstop[root@rac1~]chkconfigiptablesoff[root@rac1~]chkconfigiptables--list

(6)设置/etc/selinux/config 文件,将SELINUX 设置为disabled。


[root@rac1 ~]# cat /etc/selinux/config

#ThisfilecontrolsthestateofSELinuxonthesystem.#SELINUX=cantakeoneofthesethreevalues:#enforcing-SELinuxsecuritypolicyisenforced.#permissive-SELinuxprintswarningsinsteadofenforcing.#disabled-NoSELinuxpolicyisloaded.SELINUX=disabled#SELINUXTYPE=cantakeoneofthesetwovalues:#targeted-Targetedprocessesareprotected,#mls-MultiLevelSecurityprotection.SELINUXTYPE=targeted四、集群的时间同步

PS: 我处理的环境都是内网,并不连接互联网,因此时间同步使用的是集群自身的时间同步方式。

在 11gR2 中,RAC 在安装的时候,时间同步可以用两种方式来实现:

NTP --Linux系统的时间同步服务器

CTSS --集群自身的时间同步

当安装程序发现 NTP协议处于非活动状态时,安装集群时间同步服务将以活动模式自动进行安装并通过所有节点的时间。
如果发现配置了 NTP ,则以观察者模式启动集群时间同步服务,Oracle Clusterware 不会在集群中进行活动的时间同步。

Oracle 集群时间同步服务 (ctssd) 旨在为那些 Oracle RAC 数据库无法访问 NTP服务的组 织提供服务。

这里我们使用CTSS.oracle也建议使用集群内部时间同步的方式:

–配置CTSS

使用集群时间同步服务在集群中提供同步服务,需要卸载网络时间协议 (NTP) 及其配置。

要停用 NTP服务,必须停止当前的 ntpd服务,从初始化序列中禁用该服务,并删 除 ntp.conf 文件。

要在Linux上完成这些步骤,以 root用户身份在所有 Oracle RAC节点上运行以下命令:

/sbin/servicentpdstopShuttingdownntpd:[OK]

既有可能会关闭失败,不过无所谓

chkconfigntpdoffmv/etc/ntp.conf/etc/ntp.conf.originalchkconfigntpd--listntpd0:off1:off2:off3:off4:off5:off6:off

还要删除以下文件:

rm/var/run/ntpd.pid五、共享磁盘配置

(1)集群使用ASM存储方式,如节点挂载的是裸设备,通过fdisk -l查看设备:

PS:以下输出是我安装的实际用的机器中的磁盘配置,这种磁盘路径操作起来是很方便的,但是这种磁盘挂载路径大多出现在虚拟云服务器上,如果是实体机,则由于存储做了多链路优化,挂载路径就不一样了,udev的配置文件处理则无法使用如下方法来生成,至于实体机多链路存储挂载的共享存储如何做UDEV,我会额外写一个来做介绍。

[root@rac1~]#fdisk-lDisk/dev/sda:53.7GB,53687091200bytes255heads,63sectors/track,6527cylindersUnits=cylindersof16065*512=8225280bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x0004d5d5DeviceBootStartEndBlocksIdSystem/dev/sda1*12620480083LinuxPartition1doesnotendoncylinderboundary./dev/sda226548419430482Linuxswap/SolarisPartition2doesnotendoncylinderboundary./dev/sda354865284802867283LinuxDisk/dev/sdb:1073MB,1073741824bytes34heads,61sectors/track,1011cylindersUnits=cylindersof2074*512=1061888bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000Disk/dev/sdc:1073MB,1073741824bytes34heads,61sectors/track,1011cylindersUnits=cylindersof2074*512=1061888bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000Disk/dev/sdd:1073MB,1073741824bytes34heads,61sectors/track,1011cylindersUnits=cylindersof2074*512=1061888bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000Disk/dev/sde:1073MB,1073741824bytes34heads,61sectors/track,1011cylindersUnits=cylindersof2074*512=1061888bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000Disk/dev/sdg:6308MB,6308233216bytes195heads,62sectors/track,1019cylindersUnits=cylindersof12090*512=6190080bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000Disk/dev/sdf:6308MB,6308233216bytes195heads,62sectors/track,1019cylindersUnits=cylindersof12090*512=6190080bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000Disk/dev/sdh:6308MB,6308233216bytes195heads,62sectors/track,1019cylindersUnits=cylindersof12090*512=6190080bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000Disk/dev/sdi:6308MB,6308233216bytes195heads,62sectors/track,1019cylindersUnits=cylindersof12090*512=6190080bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000Disk/dev/sdj:6308MB,6308233216bytes195heads,62sectors/track,1019cylindersUnits=cylindersof12090*512=6190080bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000

PS:
磁盘挂载这里啰嗦几句:在挂载共享磁盘前跟系统工程师沟通,提前划分磁盘大小,主要是用于安装grid的vote盘,我在安装时选择划分三块30G左右的磁盘来安装grid(vote磁盘组使用normal冗余,三块即可),然后其他磁盘考虑以后磁盘io避免热点,尽量不是一整块磁盘挂载。
另外12c的rac要求vote磁盘组大小要比11g要求大,如果后续会考虑升级12C的RAC,可以将用于vote磁盘组的三快盘容量加大,每个50-100G即可。

(2)检查所有节点的挂载磁盘的scsi开头的盘号是否一致,命令是:

[root@rac1~]#ll/dev/disk/by-id[root@rac2~]#ll/dev/disk/by-id

在此只要使用udev 映射成grid可以识别的磁盘

(3)在使用fdisk -l中查看的设备名字母的编号(除了用于安装系统的盘,一般是sda),执行下列脚本:

[root@rac1~]#foriinbcdefghij;>do>echo"KERNEL==\"sd*\",BUS==\"scsi\",PROGRAM==\"/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/\$name\",RESULT==\"`/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/sd$i`\",NAME=\"asm-disk$i\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\"">doneKERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/$name",RESULT=="14f504e46494c45525936676145692d66374e542d476c666e",NAME="asm-diskb",OWNER="grid",GROUP="asmadmin",MODE="0660"KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/$name",RESULT=="14f504e46494c45526a6d47665a522d6f7a39642d65674f47",NAME="asm-diskc",OWNER="grid",GROUP="asmadmin",MODE="0660"KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/$name",RESULT=="14f504e46494c45525a574f6573662d6a4c59642d63375933",NAME="asm-diskd",OWNER="grid",GROUP="asmadmin",MODE="0660"KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/$name",RESULT=="14f504e46494c4552324f6d38394d2d525835432d56415337",NAME="asm-diske",OWNER="grid",GROUP="asmadmin",MODE="0660"KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/$name",RESULT=="14f504e46494c45526d7636645a542d577636452d62375874",NAME="asm-diskf",OWNER="grid",GROUP="asmadmin",MODE="0660"KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/$name",RESULT=="14f504e46494c45527269467344372d644635642d32527033",NAME="asm-diskg",OWNER="grid",GROUP="asmadmin",MODE="0660"KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/$name",RESULT=="14f504e46494c4552735232776e502d674542432d75787338",NAME="asm-diskh",OWNER="grid",GROUP="asmadmin",MODE="0660"KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/$name",RESULT=="14f504e46494c455250456471356e2d534170302d65656262",NAME="asm-diski",OWNER="grid",GROUP="asmadmin",MODE="0660"KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id--whitelisted--replace-whitespace--device=/dev/$name",RESULT=="14f504e46494c4552386f6a4e56632d4f6661442d32765a54",NAME="asm-diskj",OWNER="grid",GROUP="asmadmin",MODE="0660"

(4)进入到udev目录中

[root@rac1~]]#cd/etc/udev/rules.d/[root@rac1~]#vim99-oracle.rules

将输出的内容全部拷贝到99-oracle.rules中,拷贝时一定要确认拷贝完全与命令输出一致。此文件一般是不存在的,手动创建即可。

执行命令:

[root@rac1~]#start_udev正在启动udev:[确定]

执行命令成功后查看:

[root@rac1~]#ll/dev/asm*brw-rw----1gridasmadmin8,161月510:47/dev/asm-diskbbrw-rw----1gridasmadmin8,321月510:47/dev/asm-diskcbrw-rw----1gridasmadmin8,481月510:47/dev/asm-diskdbrw-rw----1gridasmadmin8,641月510:47/dev/asm-diskebrw-rw----1gridasmadmin8,801月510:47/dev/asm-diskfbrw-rw----1gridasmadmin8,961月510:47/dev/asm-diskgbrw-rw----1gridasmadmin8,1121月510:47/dev/asm-diskhbrw-rw----1gridasmadmin8,1281月510:47/dev/asm-diskibrw-rw----1gridasmadmin8,1441月510:47/dev/asm-diskj

PS:
集群之所以在共享磁盘挂在后无法识别,主要是挂在的磁盘的属主和属组是root,grid用户无权限访问,因此要想让grid和oracle识别这些挂载的磁盘必须将磁盘修改权限,但是共享磁盘的挂载方式会在主机重启后重新去映射,因此,如果手动去直接修改共享磁盘的权限,在主机重启后权限又会变成root管理员权限,udev的方式是直接将磁盘重新修改权限后映射的方式写到规则中(rules)。

另一种处理方式可以通过将修改权限的命令写到主机重启后访问的最后一个文件中去,让系统自动每次如果主机系统重启都会执行。已实现共享磁盘的访问。也就是裸设备使用raw方式处理共享磁盘。
使用的是Linux的 raw 命令

例如:

[root@rac1~]cat/etc/rc.loca#OracleClusterOCRDG#####chowngrid:asmadmin/dev/mapper/mpathbchowngrid:asmadmin/dev/mapper/mpathcchowngrid:asmadmin/dev/mapper/mpathdchowngrid:asmadmin/dev/mapper/mpathechowngrid:asmadmin/dev/mapper/mpathfchmod660/dev/mapper/mpathbchmod660/dev/mapper/mpathcchmod660/dev/mapper/mpathdchmod660/dev/mapper/mpathechmod660/dev/mapper/mpathfraw/dev/raw/raw1/dev/mapper/mpathbraw/dev/raw/raw2/dev/mapper/mpathcraw/dev/raw/raw3/dev/mapper/mpathdraw/dev/raw/raw4/dev/mapper/mpatheraw/dev/raw/raw5/dev/mapper/mpathfsleep2chowngrid:asmadmin/dev/raw/raw1chowngrid:asmadmin/dev/raw/raw2chowngrid:asmadmin/dev/raw/raw3chowngrid:asmadmin/dev/raw/raw4chowngrid:asmadmin/dev/raw/raw5chmod660/dev/raw/raw1chmod660/dev/raw/raw2chmod660/dev/raw/raw3chmod660/dev/raw/raw4chmod660/dev/raw/raw5

这是以前使用的老的方式处理共享磁盘,不过只能在11g以以前旧的版本中,12c版本只支持udev的方式处理共享磁盘。不在支持裸设备raw方式处理。

(5)在上述操作节点1上执行完毕后,将创建的99-oracle.rules 传给节点2,然后节点2执行 start_udev ,开启后查询ll /dev/asm* 得到和节点1同样的结果

六、创建目录结构(所有节点)

1.在节点1和节点2上分别执行:

[root@rac1~]mkdir-p/oracle/app/grid/11.2.0.4[root@rac1~]mkdir-p/oracle/grid[root@rac1~]chown-Rgrid:oinstall/oracle[root@rac1~]mkdir-p/oracle/app/oracle/11.2.0.4/db_1[root@rac1~]chown-Roracle:oinstall/oracle/app/oracle[root@rac1~]chmod-R775/oracle[root@rac2~]mkdir-p/oracle/app/grid/11.2.0.4[root@rac2~]mkdir-p/oracle/grid[root@rac2~]chown-Rgrid:oinstall/oracle[root@rac2~]mkdir-p/oracle/app/oracle/11.2.0.4/db_1[root@rac2~]chown-Roracle:oinstall/oracle/app/oracle[root@rac2~]chmod-R775/oracle

2.配置环境变量

Grid 用户

修改grid 用户的.bash_profile. 注意每个节点的不同内容:

节点1:

[root@rac1~]#su-grid[grid@rac1~]$vim.bash_profileexportORACLE_SID=+ASM1exportORACLE_BASE=/oracle/gridexportORACLE_HOME=/oracle/app/grid/11.2.0.4exportPATH=$ORACLE_HOME/bin:$PATH

节点2:

[root@rac2~]#su-grid[grid@rac2~]$vim.bash_profileexportORACLE_SID=+ASM2exportORACLE_BASE=/oracle/gridexportORACLE_HOME=/oracle/app/grid/11.2.0.4exportPATH=$ORACLE_HOME/bin:$PATH

(PATH的配置信息要在grid用户下在命令行上输入 echo $PATH 得到的输出结果)

Oracle 用户

节点1:

[root@rac1~]#su-oracle[grid@rac1~]$vim.bash_profileexportORACLE_SID=student1exportORACLE_BASE=/oracle/app/oracleexportORACLE_HOME=$ORACLE_BASE/11.2.0.4/db_1exportPATH=$ORACLE_HOME/bin:$PATH

节点2:

[root@rac2~]#su-oracle[grid@rac2~]$vim.bash_profileexportORACLE_SID=student2exportORACLE_BASE=/oracle/app/oracleexportORACLE_HOME=$ORACLE_BASE/11.2.0.4/db_1exportPATH=$ORACLE_HOME/bin:$PATH七、为安装用户设置资源限制,两个节点都做

要改善 Linux 系统上的软件性能,必须对 Oracle软件所有者用户(grid、oracle)增加以下资源限制:

Shell 限制 limits.conf 中的条目 硬限制

打开文件描述符的最大数 nofile 65536

可用于单个用户的最大进程数 nproc 16384

进程堆栈段的最大大小 stack 10240

以 root 用户身份,在每个 Oracle RAC 节点上,在 /etc/security/limits.conf 文件中添加

如下内容,或者执行执行如下命令:(整个复制到命令行)

cat>>/etc/security/limits.conf<<EOFgridsoftnproc2047gridhardnproc16384gridsoftnofile1024gridhardnofile65536oraclesoftnproc2047oraclehardnproc16384oraclesoftnofile1024oraclehardnofile65536EOF八、 修改/etc/pam.d/login

在每个 Oracle RAC 节点上,在 /etc/pam.d/login 文件中添加或编辑下面一行内容:(整个复制到命令行)

cat>>/etc/pam.d/login<<EOFsessionrequiredpam_limits.soEOF

shell 的限制

对默认的 shell 启动文件进行以下更改,以便更改所有 Oracle安装所有者的 ulimit设置:

九、

在每个 Oracle RAC 节点上,对于 Bourne、Bash 或 Korn shell,通过运行以下命令将以下行添加到 /etc/profile文件:(整个复制到命令行)

cat>>/etc/profile<<EOFif[/$USER="oracle"]||[/$USER="grid"];thenif[/$SHELL="/bin/ksh"];thenulimit-p16384ulimit-n65536elseulimit-u16384-n65536fiumask022fiEOF十、在每个 Oracle RAC 节点上,写关于内核参数的配置文件:

vim/etc/sysctl.confkernel.shmmax=4294967295kernel.shmall=2097152kernel.shmmni=4096kernel.sem=25032000100128fs.file-max=6815744net.ipv4.ip_local_port_range=900065500net.core.rmem_default=262144net.core.rmem_max=4194304net.core.wmem_default=262144net.core.wmem_max=1048576fs.aio-max-nr=1048576

以上操作完成后在每个 Oracle RAC 节点上执行:

sysctl-p

在每个 Oracle RAC 节点上,安装相关的依赖包:

yum-yinstallautoconfautomakebinutils-develbisoncppdos2unixftpgccgcc-c++lrzszpython-devecompat-dbcompat-db42compat-db43compat-gcc-34compat-gcc-34-c++compat-libstdc++-33glibc-*glibc-*.i686libXpm-*.i686libXp.so.6libXt.so.6libXtst.so.6libgcc_s.so.1kshlibXplibaio-develnumactlnumactl-develunixODBCunixODBC-develcompat-libcap*elfutils-libelf*

PS: 如果使用到了oracleasm相关的包需要从官方网站下载并进行安装:

rpm-ivhoracleasmlib-2.0.4-1.el6.x86_64.rpmrpm-ivhoracleasm-support-2.1.8-1.el6.x86_64.rpm

yum源的配置使用的是本地yum源,配置方法可参考:Linux配置本地yum源

在安装之前运行grid安装检测,使用的是grid安装包解压包中runcluvfy.sh,命令为:

[grid@rac1 ~]$ ./runcluvfh.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose

从输出的文本中检测那些检查项没有通过,做针对性处理。

PS:
一般检测都是通过的,只有在用户等同性检测中会出现用户等同性失败导致不通过,可以通过手动配置节点间的SSH免密访问来解决。处理检测不通过的项后再次检测没有问题后就可以正式进入grid与Oracle软件的安装阶段了

“Oracle 11G RAC集群安装方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!