CENTOS7.3 部署 oracle 12C RAC 集群
一.规划
1.1 RAC 网络拓扑结构图
1.2 主机操作系统
实验环境:
操作系统
主机名
内存
本地磁盘
共享磁盘 OCR_VOTE
共享磁盘 DATA
公共 IP
节点一
Centos 7.3
Db1
6G
50G
节点二
Centos 7.3
Db2
6G
50G
10.74.0.10
10.74.0.20
节点三(存储)
Centos7.3
Storage
512M
25G
10G
20G
虚拟 IP(自动生成)
私网 IP
Scan IP(自动生成)
数据库版本
1.3 存储规划
10.74.0.11
192.168.5.10
Oracle 12c r1
10.74.0.12
10.74.0.21
192.168.5.20
Oracle12c r1
192.168.5.30
磁盘名称
磁盘大小
磁盘用途
OCR_VOT
DATA
10G
20G
Ocr 磁盘,即集群注册磁盘,用于存储集群配置信息,
voting disk(表决磁盘)用于记录集群节点信息
存放 oracle 数据文件
二.Rac 节点准备步骤
2.1 系统环境准备
按照上面规划,安装 centos7.3 系统,节点一添加 1 块 50G 硬盘,2 网卡,分配内存 6G(rac 节点尽内存可能大);节
点二与节点一一样;存储节点添加一块 25G 硬盘作为安装系统,两块硬盘作为共享存储用。
节点一:
配置 hostname:
[root@localhost ~]# hostnamectl set-hostname db1
配置 ip------------------------只需配置公共 ip 和私网 ip
配置 hosts
关闭防火墙和 selinux
[root@db1 ~]# systemctl stop firewalld
[root@db1 ~]# systemctl disable firewalld
[root@db1 ~]# vi /etc/selinux/config
然后重启
节点二:
配置 hostname:
[root@localhost ~]# hostnamectl set-hostname db2
配置 ip:
配置 hosts:
关闭防火墙和 selinux
[root@db2 ~]# systemctl stop firewalld
[root@db2~]# systemctl disable firewalld
[root@db2~]# vi /etc/selinux/config
然后重启
2.2 nsloookup 配置
配置 nslookup 解析,否则在安装 grid 做最后校验时会报 scanip 解析问题
发现新装的系统并没有 nslookup,查找包并安装
[root@db1 ~]# yum provides
通过查看是 bind-utils 提供
安装 bind-utils
[root@db1 ~]# yum install bind-utils -y
节点二一样安装
然后配置 nslookup 解析
*/nslookup
节点 1
[root@db1 ~]# mv /usr/bin/nslookup /usr/bin/nslookup.bak
[root@db1 ~]# vi /usr/bin/nslookup
[root@db1 ~]# cat /usr/bin/nslookup
#!/bin/bash
HOSTNAME=${1}
if [[ $HOSTNAME = "dbscanip" ]]; then
10.74.0.10"
10.74.0.10 #53"
echo "Server:
echo "Address:
echo "Non-authoritative answer:"
echo "Name:
dbscanip"
echo "Address: 10.74.0.12 "
else
/usr/bin/nslookup.original $HOSTNAME
fi
#其中 server 为本机地址,hostname 为 hosts 文件的 scanip 名称,即 dbscanip ,地址为 scanip
[root@db1 ~]# chmod 755 /usr/bin/nslookup
[root@db1 ~]# nslookup dbscanip
节点 2
[root@db2 ~]# mv /usr/bin/nslookup /usr/bin/nslookup.bak
[root@db2 ~]# vi /usr/bin/nslookup
#!/bin/bash
HOSTNAME=${1}
if [[ $HOSTNAME = "dbscanip" ]]; then
10.74.0.20"
10.74.0.20 #53"
echo "Server:
echo "Address:
echo "Non-authoritative answer:"
echo "Name:
dbscanip"
echo "Address: 10.74.0.12 "
else
/usr/bin/nslookup.original $HOSTNAME
fi
权限及测试
[root@db2 ~]# chmod 755 /usr/bin/nslookup
[root@db2 ~]# nslookup scanip
2.3 软件环境准备:一键安装
节点一安装 yum 库
[root@db1 ~]# yum install wget -y
[root@db1 ~]# cd /etc/yum.repos.d/
[root@db1 yum.repos.d]# wget https://public-yum.oracle.com/public-yum-ol7.repo
[root@db1 yum.repos.d]# cd /etc/pki/rpm-gpg/
[root@db1 rpm-gpg]# wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7
[root@db1 rpm-gpg]# rpm --import ./RPM-GPG-KEY-oracle-ol7
[root@db1 ~]# yum install oracle-rdbms-server-12cR1-preinstall.x86_64 -y
oracle 用户和 dba,oinstall 组已经在上一步自动创建完毕
Rac 所有节点的 oracle 用户和 grid 用户的 uid 和 gid 必须一致,所以创建的时候最好制定 uid 和 gid,不同的话可用 usermod
和 groupmod 修改 uid ,gid
[root@db1 ~]# groupadd -g 54323 asmdba
[root@db1 ~]# groupadd -g 54324 asmoper
[root@db1 ~]# groupadd -g 54325 asmadmin
[root@db1 ~]# groupadd -g 54326 oper
[root@db1 ~]# useradd -u 54329 -g oinstall -G dba,asmoper,asmadmin,asmdba grid
[root@db1 ~]# usermod -u 54330
[root@db1 ~]# cat /etc/group
-g oinstall -G oper,dba,asmdba oracle
[root@db1 ~]# echo
[root@db1 ~]# echo
"grid:111111"|chpasswd
"oracle:111111"|chpasswd
创建安装目录:
[root@db1 ~]# mkdir -p /u01/app/grid
[root@db1 ~]# mkdir -p /u01/app/12.1.0/grid
[root@db1 ~]# chown -R grid:oinstall /u01/
[root@db1 ~]# mkdir -p /u01/app/oracle
[root@db1 ~]# chown oracle:oinstall /u01/app/oracle/
[root@db1 ~]# chmod -R 775 /u01/
节点二重复上述操作
2.4 用户环境变量设置:
节点一:
Grid 环境变量:
[root@db1 ~]# cat /home/grid/.bash_profile
export ORACLE_HOSTNAME=db1
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
export ORACLE_HOME=/u01/app/12.1.0/grid
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
ulimit -t unlimited
ulimit -f unlimited
ulimit -d unlimited
ulimit -v unlimited
Oracle 环境变量:
[root@db1 ~]# cat /home/oracle/.bash_profile
export ORACLE_HOSTNAME=db1
ORACLE_SID=rac1; export ORACLE_SID
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1; export ORACLE_HOME
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_UNQNAME=rac
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
节点二:
Grid 环境变量:
[root@db2 ~]# cat /home/grid/.bash_profile
export ORACLE_HOSTNAME=db2
ORACLE_SID=+ASM2
export ORACLE_SID
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/12.1.0/grid; export ORACLE_HOME
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
ulimit -t unlimited
ulimit -f unlimited
ulimit -d unlimited
ulimit -s unlimited
ulimit -v unlimited
Oracle 环境变量:
[root@db2 ~]# cat /home/oracle/.bash_profile
export ORACLE_HOSTNAME=db2
ORACLE_SID=rac2; export ORACLE_SID
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1; export ORACLE_HOME
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_UNQNAME=rac
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
2.5 内核参数设置:
[root@db1 ~]# vi /etc/sysctl.conf
前面 yum install oracle-rdbms-server-12cR1-preinstall.x86_64 这一步自动添加参数了,自己可根据具体情况更改
节点二一样
2.6 修改 ulimit 限制
[root@db1 ~]# vi /etc/security/limits.conf
添加:
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 10240
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
grid soft nproc 16384
grid hard nproc 16384
grid soft nofile 10240
grid hard nofile 65536
[root@db1 ~]# vi /etc/pam.d/login
添加:
session
修改/etc/profile 添加如下内容:
required
pam_limits.so
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
节点二同样的配置
2.7 关闭 ntp 服务:没装此服务就略过
时间同步服务 Cluster Time Synchronization Service(CTSS),要想使用该功能,需要先关闭 ntp 服务
两节点分别执行
systemctl status ntpd.service
systemctl disable ntpd.service
systemctl stop ntpd.service
2.8 grid 用户互信
两节点分别执行
su - grid
ssh-keygen -t rsa
ssh-keygen -t dsa
节点一执行: