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
ScanName填写host文件中的scan ip名称
点击add添加所有节点及其虚拟主机名,我这里只有rac1 rac2两个节点
创建OCR and Voting Disk,注意无论采用哪一种冗余格式,有效空间至少要有40G
上图用图错误,注意software location应该为你的grid用户的ORACLE_HOME目录,懒得再做一次了,特此说明
我这里3个failed是由于没有配置DNS,时间同步服务器导致,可以选择右上角的忽略后继续,如果还有其他错误,则需要具体分析,不可忽略。
此间需要分别在2台服务器上执行提示需要执行的脚本。先在安装grid软件的服务器上执行成功后,再去其他服务器节点上执行
安装完成后可以通过crsctl命令查看节点状态。
这里列3个常用命令
#检查集群状态 crsctl check cluster -all #检查节点详细资源情况 crsctl stat res -t #启停crs(必须root) crsctl start crs和crsctl stop crs
三、 使用ASMCA创建asm磁盘
此步骤仅需要在一个节点上执行
# su – grid
$ asmca
四、 使用安装Oracle RAC
其中几项fixable标记为no的是由于我没有配置时间服务器和DNS服务器导致的,可以忽略。若出现其他错误则需要具体问题具体分析,不可直接忽略。
分别在rac1节点和rac2节点执行脚本
五、 创建数据库
使用dbca创建数据库实例
# dbca
最后说一句,12CR2 RAC的磁盘和内存要求比之前的版本提高了非常多,我16G内存的笔记本的虚拟机在原来12CR1 RAC能做4个节点(会有点卡),现在只能勉强做2个节点,在最吃内存的安装grid软件时执行脚本的那一步还可能会报错。对服务器的要求越来越高了。