Oracle 12CR2 RAC安装过程记录

时间:2021-02-17 08:44:48

 Oracle 12CR2 RAC安装过程记录

 

环境:

  服务器(vbox虚拟机)

    操作系统: CentOS 7.2

    内存:    8G

    本地磁盘: 50G

  IP规划

  主机   IP            priv-ip           vip
  rac1   10.19.100.5   192.168.220.5     10.19.100.15
  rac2   10.19.100.6   192.168.220.6     10.19.100.16
  scan
-IP 10.19.100.19

 

  其中“IP”和“priv-ip”各占用一个网卡或者bind网卡,“vip”和“scan-IP”为rac节点启动后配置的虚拟IP和scanIP。

  共享存储规划

  本演示不做冗余,采用最低配置。12CR2 voting disk至少需要40G有效空余空间。Data disk预留60G有效磁盘空间。

 

一、  安装前准备工作

此步骤需要在两台服务器上都执行

关闭selinux、防火墙等操作不赘述。

创建用户

# groupadd -g 501 oinstall
# groupadd -g 502 dba
# groupadd -g 504 asmadmin
# groupadd -g 506 asmdba
# groupadd -g 507 asmoper
# useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper grid
# useradd -u 502 -g oinstall -G dba,asmdba oracle

# passwd oracle
# passwd grid

  文件目录准备

# mkdir -p /u01/app/oraInventory
# mkdir -p /u01/app/grid
# mkdir -p /u01/app/12.2.0/grid
# mkdir -p /u01/app/oracle/product/12.2.0/db_1
# chown -R grid:oinstall /u01/app/oraInventory
# chown -R grid:oinstall /u01/app/grid
# chown -R grid:oinstall /u01/app/12.2.0/grid
# chown -R oracle:oinstall /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle/product/12.2.0/db_1

# chmod -R 775 /u01

  检查依赖包

# 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 \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libXext \
libXtst \
libX11 \
libXau \
libxcb \
libXi \
make \
sysstat \
compat-libcap1 \
unixODBC \
unixODBC-devel

根据输出结果补全缺失的依赖包。

修改内核参数设置

# vi /etc/sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1934714880
kernel.shmmni = 4096
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 = 1048586
kernel.panic_on_oops = 1

# sysctl -p

其他操作系统参数修改

# vi /etc/pam.d/login
#添加以下内容
session    required     pam_limits.so

 
# vi /etc/security/limits.conf
#添加以下内容
oracle         soft    nproc   2047
oracle         hard    nproc   16384
oracle         soft    nofile  1024
oracle         hard    nofile  65536
grid           soft    nproc   2047
grid           hard    nproc   32768
grid           soft    nofile  1024
grid           hard    nofile  65536

# vi /etc/profile
#添加以下内容
if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    ulimit -s 10240
  else
    ulimit -u 16384 -n 65536  -s 10240
  fi
fi

  挂载共享磁盘,每个物理磁盘一个主分区,无文件系统。

# fdisk /dev/sdb
# fdisk /dev/sdc

  使用udev挂载。

# cd /etc/udev/rules.d

# vi 99-ASM.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
KERNEL=="raw[1-2]*", OWNER="grid", GROUP="asmadmin", MODE="660"

# systemctl restart systemd-udev-trigger.service

  挂载结果

# ll /dev/raw*
total 0
crwxrwxr-x 1 grid asmdba 162, 1 Mar 14 11:03 raw1
crwxrwxr-x 1 grid asmdba 162, 2 Mar 14 11:03 raw2
crw-rw---- 1 root disk   162, 0 Mar 14 11:03 rawctl

  不使用DNS服务器,采用host文件寻址

# vi /etc/host

# public
10.19.100.5   rac1
10.19.100.6   rac2

# private
192.168.220.5 rac1-pvt
192.168.220.6 rac2-pvt

# virtual
10.19.100.11    rac1-vip
10.19.100.12    rac2-vip
10.19.100.13    rac-scan

  配置环境变量

  节点rac1

Oracle用户

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1

export ORACLE_SID=aegisrac1

export ORACLE_UNQNAME=aegisrac

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch

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

grid用户

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/12.2.0/grid

export ORACLE_SID=+ASM1

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch

  节点rac2

  Oracle用户

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1

export ORACLE_SID=aegisrac2

export ORACLE_UNQNAME=aegisrac

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch

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

  grid用户

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/12.2.0/grid

export ORACLE_SID=+ASM2

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch

二、  安装grid软件

  此步骤仅需要在一个节点上执行

  12cr2的grid和之前版本不同,压缩包本身就是软件的一部分,安装时要直接解压到grid home下。

# su - grid
$ cd /u01/app/12.2.0/grid
$ unzip -q /opt/linuxx64_12201_grid_home.zip

  进行ssh互信配置

# su - grid
$ cd /u01/app/12.2.0/grid/deinstall
./sshUserSetup.sh -user grid -hosts "rac1 rac2 rac1-pvt rac2-pvt" -advanced -noPromptPassphrase

# su - oracle
$ cd /u01/app/12.2.0/grid/deinstall
./sshUserSetup.sh -user oracle -hosts "rac1 rac2 rac1-pvt rac2-pvt" -advanced -noPromptPassphrase

  完成后在所有节点分别以oracle用户和grid用户测试,以下命令均应不需要密码就可以输出结果

$ ssh rac1 date
$ ssh rac1-pvt date
$ ssh rac2 date
$ ssh rac2-pvt date

  安装cvuqdisk(需要分别在2个节点上执行),该步骤理论上可以在grid软件安装时自动处理,但是我这里没有实测。

# cd /u01/app/12.2.0/grid/cv/rpm
# export CVUQDISK_GRP=asmadmin
# rpm -ivh cvuqdisk-1.0.10-1.rpm

  图形界面安装grid软件,远程图形化工具有很多,我这里用的是Xmanager

$ ./gridSetup.sh

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

ScanName填写host文件中的scan ip名称

Oracle 12CR2 RAC安装过程记录

点击add添加所有节点及其虚拟主机名,我这里只有rac1 rac2两个节点

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

创建OCR and Voting Disk,注意无论采用哪一种冗余格式,有效空间至少要有40G

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

上图用图错误,注意software location应该为你的grid用户的ORACLE_HOME目录,懒得再做一次了,特此说明

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

我这里3个failed是由于没有配置DNS,时间同步服务器导致,可以选择右上角的忽略后继续,如果还有其他错误,则需要具体分析,不可忽略。

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

此间需要分别在2台服务器上执行提示需要执行的脚本。先在安装grid软件的服务器上执行成功后,再去其他服务器节点上执行

Oracle 12CR2 RAC安装过程记录

安装完成后可以通过crsctl命令查看节点状态。

  这里列3个常用命令

#检查集群状态
crsctl check cluster -all

#检查节点详细资源情况
crsctl stat res -t

#启停crs(必须root)
crsctl start crs和crsctl stop crs

三、  使用ASMCA创建asm磁盘

此步骤仅需要在一个节点上执行

# su – grid
$ asmca

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

四、  使用安装Oracle RAC

 Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

Oracle 12CR2 RAC安装过程记录

  其中几项fixable标记为no的是由于我没有配置时间服务器和DNS服务器导致的,可以忽略。若出现其他错误则需要具体问题具体分析,不可直接忽略。

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  分别在rac1节点和rac2节点执行脚本

  Oracle 12CR2 RAC安装过程记录

五、  创建数据库

   使用dbca创建数据库实例

# dbca

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

  Oracle 12CR2 RAC安装过程记录

 

   最后说一句,12CR2 RAC的磁盘和内存要求比之前的版本提高了非常多,我16G内存的笔记本的虚拟机在原来12CR1 RAC能做4个节点(会有点卡),现在只能勉强做2个节点,在最吃内存的安装grid软件时执行脚本的那一步还可能会报错。对服务器的要求越来越高了。