一、 规划 2

1. 网络规划 2

2. 磁盘规划 2

3. 主机硬件配置 3

二、 思路清晰 3

三、 准备工作 3

1. 网卡准备(rac1&rac2) 3

2. 关闭防火墙和SElinux(rac1&rac2) 5

3. 软件包准备 5

4. 共享磁盘准备 5

四、 搭建RAC 17

1. 修改系统参数(rac1&rac2) 17

2. 修改limits文件(rac1&rac2) 18

3. 修改/etc/hosts文件(rac1&rac2) 18

4. 创建用户和组(rac1&rac2) 18

5. 创建软件安装目录(rac1&rac2) 19

6. 修改环境变量(rac1&rac2) 19

7. 配置本地YUM(rac1&rac2) 20

8. UDEV方式绑定磁盘(rac1&rac2) 21

9. 安装grid软件(rac1) 22

10. 配置ASM磁盘(rac1) 34

11. 创建数据库(rac1) 36

12. DBCA建库(rac1) 43

五、 验证 52

1. 验证集群状态 52

2. 验证实例信息 53

3. 验证数据文件、日志文件、控制文件信息 53

一、规划1.网络规划

虚拟IP:虚拟IP是集群搭建完成后,产生的IP。这个IP需要与物理IP在同一个网段。虚拟IP最大的特点:当这个节点服务器或集群宕机的时候,虚拟IP会无缝衔接到另外节点,以保证事务的连续性和查询的连续性。所以建议在业务分离的情况下,业务连接该节点虚拟IP。在双节点的RAC集群中,每个操作系统都有他本身的物理IP,集群各节点还会需要一个虚拟IP(VIP),这两个IP需要在同一个网段。

SCAN-IP:浮动IP。这个IP会随机的浮动与两个节点之间。如果业务没有分离,建议业务连接SCAN-IP,以达到负载均衡的作用

2.磁盘规划

磁盘规划需要考虑两个层面:一是集群需要的磁盘,二是数据库需要的磁盘。

1)集群需要的磁盘

为了满足集群的功能,需要提供两种作用的磁盘,OCR和Vote盘。OCR盘记录着集群的一些相关信息,Vote盘在集群单节点出现故障,剔除该节点的时候决定性的作用。

OCR盘和Votefile盘可以在同一个磁盘组,大小要求如下:

- Externel Redundancy

1 OCR(1 x 400M)=0.4G

1 voting files(1 x 300M)=0.3G

- Normal Redundancy

2 OCRs(2 x 400M)=0.8G

3 voting files(3 x 300M)=0.9G

- High Redundancy

3 OCRs(3 x 400M)=1.2G

5 Voting files(5 x 300M)=1.5G

2)数据库需要的磁盘

数据库至少需要两个磁盘组,一个是用于存放数据文件,另一个是用于存放归档日志文件。大小无最低要求,需要根据业务数据量情况分配大小。

3.主机硬件配置

(这里是我的测试环境)

二、思路清晰

step1: 网卡配置(rac1&rac2)

step2: 关闭防火墙和Selinux(rac1&rac2)

step3: 共享磁盘准备

(自己的测试环境用Openfile作为共享存储就行,如果是生产环境,则需要一 台存储服务器用做共享存储)

step4: 修改内核参数文件

step5: 修改用户限制文件

step6: 修改Hosts文件

step7: 创建用户、组

step8: 创建目录并赋予权限

step9: 配置环境变量(grid和oracle)

step10: 配置本地YUM源,安装必需软件包

step11: udev方式绑定共享磁盘

step12: 安装集群软件(GI)

step13: 配置ASM磁盘

step14: 安装数据库软件

step15: DBCA建库

step16: 结束验证

三、准备工作1.网卡准备(rac1&rac2)

解释:在RAC集群中,每台服务器需要两块网卡,一块用做外网服务,一块用于私网通信。

添加私有网卡

2.关闭防火墙和SElinux(rac1&rac2)

#systemctl stop firewall

#systemctl disable firewall

关闭selinux

# vi /etc/selinux/config

SELINUX=disabled

3.软件包准备

(rac1)

GI目录:# mkdir -p /u01/setup/grid

DB目录:# mkdir -p /u01/setup/db

OS目录:# mkdir -p /u01/setup/os

(rac2)

OS目录:# mkdir -p /u01/setup/os

4.共享磁盘准备

Openfile iso文件下载地址

http://www.openfiler.com/community/download

1)创建一个虚拟机,配置如下

磁盘说明:

磁盘1是用于安装openfile系统,30G;

磁盘2用于ocr和vote盘,5G;

磁盘3/4用于DATA磁盘组,每个100G;

磁盘5用于ARCH磁盘组,50G。

2)打开虚拟机,安装openfile

点击Enter,自动安装

3)访问openfile的管理界面(上面的地址)

username: openfiler

password: password

4)进入services标签,启动iscsi服务

5)进入system标签页

添加一个允许访问的IP网段

6) 进入volumes 创建物理卷

此时,物理卷已经创建完成

6)创建一个卷组

7)创建逻辑卷

同理,将上面规划的物理磁盘都创建为逻辑卷

8)添加IQN

4)做磁盘映射

此时逻辑卷添加完成,要使用的话,需要对逻辑卷进行扫描

9)客户端对openfile服务器进行扫描

# iscsiadm -m discovery -t sendtargets -p 172.16.70.176-l

如果iscsiadm命令不可用,则需要安装iscsi-initiatorrpm包

# iscsiadm -m discovery -t st -p 192.168.0.10

-bash: iscsiadm: command not found

# mount /dev/cdrom /media --加载光盘,安装iscsi-initiator rpm包mount: block device /dev/cdrom is write-protected, mounting read-only# cd /media/

# cd Server/# ls -l *iscsi*-r--r--r-- 55 root root 579386 Dec 17 2008 iscsi-initiator-utils-6.2.0.868-0.18.el5.i386.rpm# rpm -ivh iscsi-initiator-utils-6.2.0.868-0.18.el5.i386.rpm

四、搭建RAC1.修改系统参数(rac1&rac2)

# vi /etc/sysctl.conf

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmmax = 8589934591

kernel.shmmni = 4096

kernel.shmall = 2097152

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

使参数生效

# sysctl -p

2.修改limits文件(rac1&rac2)

# vi /etc/security/limits.conf

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

3.修改/etc/hosts文件(rac1&rac2)

172.16.70.170 rac1

172.16.70.171 rac2

10.0.0.100 rac1-priv

10.0.0.101 rac2-priv

172.16.70.173 rac1-vip

172.16.70.174 rac2-vip

172.16.70.175 cluster-scan-ip

4.创建用户和组(rac1&rac2)

(1)创建组

# groupadd -g 501 dba

# groupadd -g 502oinstall

(2)创建用户

# useradd -u 501-g oinstall -G dba -d /home/oracle oracle

# useradd -u 600 -g oinstall -G dba -d /home/grid grid(3)给oracle和grid用户设置密码

# passwd oracle

# passwd grid

(4)检查

# id oracle

# id grid

5.创建软件安装目录(rac1&rac2)

# mkdir -p /u01/app/oracle

# mkdir -p /u01/app/oracle/product/11.2.0/db_1

# mkdir -p /u01/app/grid

# mkdir -p /u01/app/11.2.0/grid

# chown -R oracle:oinstall /u01

# chown -R grid:oinstall /u01/app/grid

# chown -R grid:oinstall /u01/app/11.2.0/grid

# chown -R oracle:oinstall /u01/app/oracle

# chmod -R 775 /u01

(rac1执行)

# chown -R grid:oinstall /u01/setup/grid

# chown -R oracle:oinstall /u01/setup/db

6.修改环境变量(rac1&rac2)

-----切换到grid用户下-----

rac1

$ vi .bash_profile

export ORACLE_SID=+ASM1

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export PATH=$ORACLE_HOME/bin:$PATH

rac2

$ vim .bash_profile

export ORACLE_SID=+ASM2

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export PATH=$ORACLE_HOME/bin:$PATH

----切换到Oracle用户下------

rac1

# su - oracle

$ vi /home/oracle/.bash_profile

export ORACLE_SID=ORCL1

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export PATH=$PATH:$ORACLE_HOME/bin

rac2

# su - oracle

$ vi /home/oracle/.bash_profile

export ORACLE_SID=ORCL2

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export PATH=$PATH:$ORACLE_HOME/bin

使上述环境变量生效

$ source .bash_porofile

7.配置本地YUM(rac1&rac2)

(root用户)

# mount -o loop /u01/setup/os/rhel-server-7.2-x86_64-dvd.iso/mnt

# vi /etc/yum.repos.d/mnt.repo

[mnt]

name=Yum Source

baseurl=file:///mnt

enabled=1

gpgcheck=0

# yum makecache

安装如下包:

#yum install-y binutils compat* elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC-devel libaio-devel ksh

8.UDEV方式绑定磁盘(rac1&rac2)

# vi /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="14f504e46494c45524932494157712d763771782d30694f30", RUN+="/bin/sh -c 'mknod /dev/asm_ocrb $major $minor; chown grid:oinstall /dev/asm_ocr; chmod 0660 /dev/asm_ocr'"

KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="14f504e46494c45526d70325177442d616f33572d35686452", RUN+="/bin/sh -c 'mknod /dev/asm_data1b $major $minor; chown grid:oinstall /dev/asm_data1; chmod 0660 /dev/asm_data1'"

KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="14f504e46494c455251726b30676d2d337842312d55375278", RUN+="/bin/sh -c 'mknod /dev/asm_data2b $major $minor; chown grid:oinstall /dev/asm_data2; chmod 0660 /dev/asm_data2'"

KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="14f504e46494c45527650634d78742d4a7664622d3276506e", RUN+="/bin/sh -c 'mknod /dev/asm_archb $major $minor; chown grid:oinstall /dev/asm_arch; chmod 0660 /dev/asm_arch'"

注:RESULT参数应对应裸设备的wwid号;每个小版本的udev配置略有不同,当前这个配置只适用于RHEL 7.2版本

启动udev

# /sbin/udevadm trigger --type=devices --action=change

查看asm磁盘

# ll /dev/asm*

9.安装grid软件(rac1)

(1)解压grid软件

# su - grid

$ cd /u01/setup/grid

$ unzip p*.zip

(2)安装 cvuqdisk

# cd rpm/

# rpm -ivh cvuqdisk-1.0.9-1.rpm

将这个rpm包传输到2节点上安装

(3)运行图形界面

$ unzip /u01/setup/grid/p*

$ cd /u01/setup/grid/grid

运行 ./runInstaller

注:

1)远程运行图形界面需要

打开Xmanager,双机Xmanager-Passive

$ export DISPLAY=本机IP:0.0

2)检查是否可以运行图形

$ xhost +

access control disabled, clients can connect from any hosts

出现以上字样,代表可运行图形界面

3)出现”口口口口口”乱码,执行

$ export Lang=en_US

跳过软件更新

选择高级安装

SCAN name名字要写/etc/hosts文件中scan-ip的名字

这里的rac1/rac1-vip/rac2/rac2-vip名字要和/etc/hosts文件中名字对应

输入密码grid,点击setup配置互信

通用密码写oracle

执行如下两个脚本

执行顺序:

A机执行脚本1 → B机执行脚本1 → A机执行脚本2 → B机执行脚本2

执行脚本必须一个一个来,最好不要一起执行。

rac1:

rac2

脚本执行完成,点击OK

注:

1)如果这里root.sh脚本执行失败,可以回退,如下:

# /u01/app/11.2.0/grid/crs/install/roothas.pl -deconfig -force -verbose

2)如果一直卡在Adding daemon to inittab或者Adding Clusterware entries to inittab或者ohasd进程启动失败,则此时需要新开一个窗口执行下面脚本,等ohasd进行启动成功后再取消执行脚本即可

# /bin/dd if=/var/tmp/.oracle/npohasd of=/dev/nullbs=1024 count=1

忽略报错,不影响

10.配置ASM磁盘(rac1)

Grid用户

$ asmca

这里需要注意一下,对于普通磁盘组(非OCR),正常冗余模式至少需要2块盘;高冗余模式至少需要3块盘;不冗余模式至少需要2块盘。

最后结果如下:

11.创建数据库(rac1)

(Oracle用户)

# su - oracle

$ cd /u01/setup/db/

$ unzip p13390677_112040_Linux-x86-64_1of7.zip

$ unzip p13390677_112040_Linux-x86-64_2of7.zip

将两个zip包解压会生成一个database目录

$ cd database/

$ pwd

/u01/setup/db/database

$ ./runInstaller

Oracle的密码是oracle,选择setup建立互信

12.DBCA建库(rac1)

(Oracle用户)

$ dbca

密码oracle

五、验证1.验证集群状态

2.验证实例信息

3.验证数据文件、日志文件、控制文件信息

----------- end -------------