搭建Oracle11g的RAC集群

一、前期准备

服务器信息
主机名 oracle01 oracle02
操作系统 Centos 7.4 Centos 7.4

Public IP

192.168.56.10

192.168.56.20

Virtual IP

192.168.56.11

192.168.56.21

Private IP

10.10.1.10 10.10.1.20

Scan IP

                          192.168.56.6

Public IP:服务器物理网卡IP,即对外提供服务的IP

Priviate IP:服务器内网、私网IP,主要用于数据库间同步及心跳

Virtual IP:虚拟IP,与Public IP处于同一个网段

Scan IP:11g后创建集群新增的功能,集群对外服务提供的VIP

注意:主机名不要含大写并且不超过15个字符,否则后续安装会有问题

          两台主机间需要挂载的磁盘是共享磁盘!!!(用于做ASM磁盘)

          安装过程中注意hostname主机名变化,也会导致执行部分脚本失败情况

二、下载软件

通过百度网盘下载

链接:https://pan.baidu.com/s/11l7PVodRKa5HVK7mqmMYVQ 
提取码:0szl

版本:Oracle 11.2.0.4.0

下载以下几个部署包:

1和2是数据库软件;

3是rac软件;

4是client客户端;

5是gateways;

6是example示例;

7是删除介质;

packages.tar.gz是oracle所需要的依赖包;

一般只需要下载1,2,3个包即可,其他按需下载

搭建Oracle11g的RAC集群_第1张图片

 三、修改host文件(root用户操作,两台主机均操作)

编辑/etc/hosts文件,两台主机保持一致:

192.168.56.10  oracle01

192.168.56.20  oracle02

192.168.56.11  oracle01-vip

192.168.56.21  oracle02-vip

10.10.1.10        oracle01-priv

10.10.1.20        oracle02-priv

192.168.56.6    cluster-scan

wq保存后。

修改Oracle01主机名:hostname oracle01

修改Oracle02主机名:hostname oracle02

测试是否修改成功:

在192.168.56.10主机上执行ping:

ping oracle01和ping oracle02查看是否成功,成功即说明host文件修改成功。

四、关闭Selinux和防火墙(root用户,两台主机均操作)

编辑/etc/selinux/config配置文件:

再使用命令:setenforce 0,临时关闭而无需重启

使用命令getenforce查看当前selinux状态

关闭防火墙:systemctl stop firewalld && systemctl disable firewalld

五、修改内核参数(root用户,两台主机均操作)

编辑/etc/sysctl.conf配置文件:

net.ipv4.ip_local_port_range= 9000 65500

fs.file-max = 6553600

# 按需修改,为shmmax/shmmin

kernel.shmall = 10523004

# 按需修改,为内存(单位byte)-1

kernel.shmmax = 6465333657

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=4194304

net.core.wmem_max=1048576

fs.aio-max-nr = 1048576

wq退出保存后使用命令 sysctl -p 使其生效

六、添加用户(root用户,两台主机均操作)

采用GI与DB分开安装和权限的策略

# 创建组

groupadd -g 1000 oinstall

groupadd -g 1300 asmadmin

groupadd -g 1200 asmdba

groupadd -g 1400 asmoper

groupadd -g 1100 dba

groupadd -g 1500 oper

# 添加用户grid和oracle

useradd -d /opt/grid -u 1011 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid

Useradd -d /opt/oracle -u 1010 -g oinstall -G dba,asmdba,oper oracle

# 创建目录

mkdir -p /u01/app/11.2.0/grid

mkdir -p /u01/app/grid

mkdir -p /u01/app/oracle

# 授权

chmod -R 755 /u01

chown -R grid:oinstall /u01

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

# 修改用户密码为Pass123456

echo "Pass123456" | passwd --stdin grid

echo "Pass123456" | passwd --stdin oracle

七、修改系统资源限制(root用户,两台主机均操作)

编辑/etc/security/limits.conf文件:

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

grid soft stack 10240

grid hard stack 32768

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

oracle hard stack 32768

wq保存修改。

八、配置用户验证(root用户,两台主机均操作)

编辑/etc/pam.d/login新增以下内容:

session    required     pam_limits.so

九、修改环境变量(root用户,两台主机均操作)

编辑/etc/profile文件添加以下内容:

if [ $USER = "oracle" ] || [ $USER = "grid" ]; then

  if [ $SHELL = "/bin/ksh" ]; then

    ulimit -p 16384

    ulimit -n 65536

  else

    ulimit -u 16384 -n 65536

  fi

  umask 022

fi

wq保存并source /etc/profile使其生效

修改grid用户环境变量,编辑/home/grid/.bash_profile文件:

su - grid,切换用户,编辑~/.bash_profile文件

export LANG=en,zh_CN

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"

# 如果是oracle01,则此项值为oracle01,是oracle02,则此项值为oracle02

# export ORACLE_HOSTNAME=oracle01

# 如果是oracle01,则此项值为+ASM1,是oracle02,则此项值为+ASM2

export ORACLE_SID=+ASM1

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export LC_ALL=C

umask 022

wq保存并source ~/.bash_profile使其生效

修改oracle用户环境变量,编辑/home/oracle/.bash_profile文件:

su - oracle,切换用户,编辑~/.bash_profile文件

export LANG=en,zh_CN

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"

# 如果是oracle01,则此项值为oracle01,是oracle02,则此项值为oracle02

# export ORACLE_HOSTNAME=oracle01

# 实例名,如果是Oracle01,则此项值为orcl1,是Oracle02,则此项值为orcl2

export ORACLE_SID=orcl1

# 数据库名两边保持一致

export ORACLE_UNQNAME=oracledbrac

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db

export TNS_ADMIN=$ORACLE_HOME/network/admin

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

umask 022

wq保存并source ~/.bash_profile使其生效

十、检查依赖包(root用户,两台主机均操作)

使用命令:

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \

compat-libstdc++-33 \

elfutils-libelf \

elfutils-libelf-devel \

gcc \

gcc-c++ \

glibc \

glibc-common \

glibc-devel \

glibc-headers \

libaio \

libaio-devel \

libgcc \

libstdc++ \

libstdc++-devel \

make \

sysstat \

unixODBC \

net-tools

回车执行。

如果没有安装会出现“not installed”提示,使用“yum -y install 缺失包名”进行安装

搭建Oracle11g的RAC集群_第2张图片

其中compat-libstdc++-33可以通过以下链接下载rpm并安装

http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

或者使用百度云盘中的package.tar.gz文件,上传并tar解压后:

执行install.sh脚本安装缺失的依赖。

 十一、配置ssh互信(两台机器都操作)

提供两种方法:

第一种:利用Oracle官方提供的P13390677_112040_Linux-x86-64_3of7.zip文件解压

执行sshUserSetup.sh脚本:

./sshUserSetup.sh -user grid -hosts 'oracle01 oracle02 oracle01-priv oracle02-priv' -advanced

./sshUserSetup.sh -user oracle -hosts 'oracle01 oracle02 oracle01-priv oracle02-priv' -advanced

此方法只需在任一节点上执行即可

搭建Oracle11g的RAC集群_第3张图片

 后续操作将要求你输入多次grid或者oracle的密码。

第二种(推荐):

所有节点执行以下操作

su - oracle,切换到oracle用户

rm -rf ~/.ssh

mkdir ~/.ssh

chmod 700 ~/.ssh

ssh-keygen -t rsa

ssh-keygen -t dsa

su - grid,切换到grid用户

rm -rf ~/.ssh

mkdir ~/.ssh

chmod 700 ~/.ssh

ssh-keygen -t rsa

ssh-keygen -t dsa

 直接回车,无密码模式

选择Oracle01节点执行:

su - oracle

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh oracle02 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh oracle02 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys oracle02:~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

su - grid

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh oracle02 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh oracle02 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys oracle02:~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

搭建Oracle11g的RAC集群_第4张图片

选择Oracle02节点执行:

su - oracle

chmod 600 ~/.ssh/authorized_keys

su - grid

chmod 600 ~/.ssh/authorized_keys

验证:

以下操作两个节点都进行操作

su - oracle

ssh oracle01 date && ssh oracle02 date && ssh oracle01-priv date && ssh oracle02-priv date

su - grid

ssh oracle01 date && ssh oracle02 date && ssh oracle01-priv date && ssh oracle02-priv date

查看是否能成功输出4次时间日期,执行两次,第一次可能会让输入密码,如果第二次不需要输入密码则成功。

十二、配置udev(root用户,两台主机均操作)

注意:磁盘必须为共享磁盘

使用命令lsblk查看挂载硬盘:

其中sdb为两台主机间的共享磁盘

搭建Oracle11g的RAC集群_第5张图片

使用fdisk命令进行分区操作,如果硬盘大于2T请使用gdisk进行分区操作:

搭建Oracle11g的RAC集群_第6张图片

创建/etc/udev/rules.d/60-raw.rules文件,添加以下内容(注意具体的分区名称):

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"

ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw5 %N"

KERNEL=="raw[1-5]*", OWNER="grid" GROUP="asmadmin", MODE="660"

wq保存后使用以下命令创建(linux7适用):

udevadm trigger --type=devices --action=change

使用命令 partprobe 将变化写入内核

十三、grid安装(只需一台机器安装即可)

执行安装前检查:

在oracle01和上oracle02解压P13390677_112040_Linux-x86-64_3of7.zip文件

以root用户安装软件rpm -ivh cvuqdisk-1.0.9-1.rpm

如果安装cvuqdisk服务提示ls: cannot access /usr/sbin/smartctl: No such file or directory:

解决方法:安装yum install -y smartmontools服务即可然后再重新安装cvuqdisk的rpm包。

切换用户:su - grid

执行脚本:./runcluvfy.sh stage -pre crsinst -n oracle01,oracle02 -verbose -fixup

如果出现以下unsuccessful则环境检查失败

 

否则按要求以root用户执行修复脚本:

在oracle01上面进行下列步骤

界面化安装(推荐):

前期准备:

Centos7已经不通过initd管理进程了,而是通过systemd进行管理:

创建服务文件:touch /usr/lib/systemd/system/ohas.service

授权:chmod 777 /usr/lib/systemd/system/ohas.service

添加以下内容:

[Unit]

Description=Oracle High Availability Services

After=syslog.target

[Service]

ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple

Restart=always

[Install]

WantedBy=multi-user.target

wq保存并启动服务:

systemctl daemon-reload

systemctl enable ohas.service

systemctl start ohas.service

systemctl status ohas.service

ohas服务启动成功前提是(/etc/init.d目录下有生产init.ohasd服务文件)。

在下列安装的第16步执行root.sh脚本的时候:

可通过(watch -n1 -d ls -l "ls -l /etc/init.d/"命令检测是否有文件产生,如果有立即执行"systemctl enable ohas.service && systemctl start ohas.service && systemctl status ohas.service"命令)

搭建Oracle11g的RAC集群_第7张图片

xmanager准备:

linux安装yum install -y xterm xorg-x11-xauth xorg-x11-server-utils

并且export DISPLAY=192.168.56.1:0.0,其中192.168.56.1是我电脑的IP

0.0为右下角xmanager服务监听的,如图所示:

搭建Oracle11g的RAC集群_第8张图片

 xmanager新建xstart会话:

搭建Oracle11g的RAC集群_第9张图片

 <1>选择跳过软件升级

搭建Oracle11g的RAC集群_第10张图片

<2>选择集群安装和环境配置

搭建Oracle11g的RAC集群_第11张图片

<3>选择高级安装

搭建Oracle11g的RAC集群_第12张图片

<4>选择语言,默认选择英语

搭建Oracle11g的RAC集群_第13张图片

<5>集群配置

 搭建Oracle11g的RAC集群_第14张图片

 搭建Oracle11g的RAC集群_第15张图片

<6>添加节点

搭建Oracle11g的RAC集群_第16张图片

<7>识别网卡

搭建Oracle11g的RAC集群_第17张图片

<8>存储选择,选择ASM

搭建Oracle11g的RAC集群_第18张图片

 <9>创建一个asm Disk Group Name 组

磁盘组对应级别:

High-5

Normal-3

External-1

搭建Oracle11g的RAC集群_第19张图片

出现以下问题主要是因为选错级别,比如只有一块磁盘你级别却选择了High的了

搭建Oracle11g的RAC集群_第20张图片

 <10>给ASM磁盘组设置密码

搭建Oracle11g的RAC集群_第21张图片

<11>选择不使用IPMI

搭建Oracle11g的RAC集群_第22张图片

 <12>指定不同的ASM组,选择默认设置

搭建Oracle11g的RAC集群_第23张图片

<13>安装设置

搭建Oracle11g的RAC集群_第24张图片

搭建Oracle11g的RAC集群_第25张图片

 <14>检查依赖

搭建Oracle11g的RAC集群_第26张图片

如果是以下提示,勾选右上角忽略所有,否则安装缺失依赖包

搭建Oracle11g的RAC集群_第27张图片

 <15>保存响应文件并开始安装

搭建Oracle11g的RAC集群_第28张图片

 <16>以root执行下列两个脚本(两个节点都执行)

(需要注意root.sh需要先在oracle01执行完毕后才能在oracle02节点执行)

搭建Oracle11g的RAC集群_第29张图片

执行root.sh结果

 搭建Oracle11g的RAC集群_第30张图片

两个脚本在两台主机上都成功安装后返回刚刚页面点击ok。

至此完成grid的安装。

如果安装过程中报错”libcap.so.1: cannot open shared object file: No such file or directory:

解决方法:首先进入lib64目录:cd /lib64

          执行以下命令即可:ln -s libcap.so.2.22 libcap.so.1

搭建Oracle11g的RAC集群_第31张图片

安装成功验证:

su - grid,切换用户

命令:

检查本地CRS状态:crsctl check crs

确保以下四个状态都是online

搭建Oracle11g的RAC集群_第32张图片

查看集群CRS状态:crsctl check cluster

 

查看本地clusterware资源:crs_stat -t -v

搭建Oracle11g的RAC集群_第33张图片

查看asm服务:srvctl status asm -a

查看crsd服务:crsctl stat res -t -init

 搭建Oracle11g的RAC集群_第34张图片

检查集群节点:olsnodes -n -i -s -t

查看集群SCAN VIP信息:srvctl config scan

查看监听服务是否启动:ps -ef|grep lsnr|grep -v 'grep'|grep -v 'ocfs'|awk '{print$9}'

 

 十四、ASM磁盘组

ASM磁盘说明

投票盘(表决盘vote):

集群同步服务会间隔实际向投票盘写入心跳信息,集群通过投票盘验证节点状态,如果集群中某个节点在指定最大时间内未向投票盘写入信息,集群则认为此节点失效进行故障切换。

数据盘(DATA):

用于存储数据库文件。

备份盘(BAK):

用于存储数据库开启归档后的文件。

切换用户:su - grid

启动界面:asmca

创建DATA盘

搭建Oracle11g的RAC集群_第35张图片

选择磁盘

 搭建Oracle11g的RAC集群_第36张图片

成功创建

 搭建Oracle11g的RAC集群_第37张图片

 十五、oracle安装

在oracle01主机上解压以下文件:

p13390677_112040_Linux-x86-64_1of7.zip

p13390677_112040_Linux-x86-64_2of7.zip

切换到oracle用户:su - oracle

启动安装程序:./runInstaller

如果运行runInstaller错误libXext.so.6: cannot open shared object file: No such file or directory:

解决方法:使用命令”yum install libXext”安装缺失文件后重新安装。

如果在安装oracle过程中出现错误”Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/db/sysman/lib/ins_emagent.mk'”:

解决方法:编辑/u01/app/oracle/product/11.2.0/db/sysman/lib/ins_emagent.mk文件:

将$(MK_EMAGENT_NMECTL)替换成$(MK_EMAGENT_NMECTL) -lnnz11

然后点击重试retry。

搭建Oracle11g的RAC集群_第38张图片

界面化安装:

<1>跳过软件更新

搭建Oracle11g的RAC集群_第39张图片

 搭建Oracle11g的RAC集群_第40张图片

 <2>选择”仅安装数据库服务”

搭建Oracle11g的RAC集群_第41张图片

<3>选择集群安装数据库

 搭建Oracle11g的RAC集群_第42张图片

 <4>选择语言

搭建Oracle11g的RAC集群_第43张图片

 <5>选择安装模式,EE

搭建Oracle11g的RAC集群_第44张图片

 <6>选择安装路径

搭建Oracle11g的RAC集群_第45张图片

 <7>用户及用户组权限,保持默认

搭建Oracle11g的RAC集群_第46张图片

 <8>安装前检测

搭建Oracle11g的RAC集群_第47张图片

搭建Oracle11g的RAC集群_第48张图片

 <9>安装,并以root用户执行相应脚本

 搭建Oracle11g的RAC集群_第49张图片

 脚本执行结果如下:

搭建Oracle11g的RAC集群_第50张图片

 <10>完成安装

搭建Oracle11g的RAC集群_第51张图片

 十六、数据库建库

切换用户:su - oracle

启动界面:dbca

<1>创建RAC数据库

搭建Oracle11g的RAC集群_第52张图片 搭建Oracle11g的RAC集群_第53张图片

<2>选择数据库模式:定制数据库

搭建Oracle11g的RAC集群_第54张图片

<3>填写定制信息

搭建Oracle11g的RAC集群_第55张图片

其中:dbname是oracle环境变量中UNQNAME的值

           Prefix是oracle环境变量中SID的前缀(即oracle01和oracle02的SID中一样的值即“orcl”)

搭建Oracle11g的RAC集群_第56张图片

<4>保持默认设置

搭建Oracle11g的RAC集群_第57张图片

<5>设置密码

搭建Oracle11g的RAC集群_第58张图片

<6>选择ASM磁盘存储数据

注意:ASM磁盘空间需要足够大才能成功安装

搭建Oracle11g的RAC集群_第59张图片 搭建Oracle11g的RAC集群_第60张图片

<7>指定快速恢复磁盘,并开启归档

搭建Oracle11g的RAC集群_第61张图片

<8>数据库组件,默认

搭建Oracle11g的RAC集群_第62张图片

<9>设置参数

内存设置:

搭建Oracle11g的RAC集群_第63张图片

最大进程数和数据块大小,保持默认:

搭建Oracle11g的RAC集群_第64张图片

语言设置:

搭建Oracle11g的RAC集群_第65张图片

<10>数据库存储说明,保持默认

搭建Oracle11g的RAC集群_第66张图片

<11>创建数据库

搭建Oracle11g的RAC集群_第67张图片

概要信息预览:

搭建Oracle11g的RAC集群_第68张图片

组件安装:

搭建Oracle11g的RAC集群_第69张图片

安装后验证:

查看数据库运行:srvctl status database -d oracledbrac

你可能感兴趣的:(oracle,数据库,database,oracle)