目录
一、参考资料
- Requirements for Installing Oracle 11.2.0.4 RDBMS on OL7 or RHEL7 64-bit (x86-64) (Doc ID 1962100.1)
- Installation walk-through - Oracle Grid/RAC 11.2.0.4 on Oracle Linux 7 (Doc ID 1951613.1)
二、RAC环境配置清单
以下是在VMwareWorkstation 17 Pro中安装测试
1.主机环境
节点1 | 节点2 | |
hostname | rac11g_1 | rac11g_2 |
CPU | 2*2 | 2*2 |
内存 | 8G | 8G |
SWAP | 8G | 8G |
本地盘 | 100G | 100G |
2.共享存储
磁盘组 | 大小 | 冗余方式 | 用途 |
OCR | 2G*3 | Normal | OCR、Votedisk表决磁盘 |
DATA | 40G | External | 控制文件、数据文件、redo等 |
FRA | 15G | External | 归档、闪回文件等 |
3.IP地址
节点1 | 节点2 | |
Public IP | 192.168.23.101 | 192.168.23.102 |
VIP | 192.168.23.103 | 192.168.23.104 |
Private IP | 12.12.12.12 | 12.12.12.13 |
Scan IP | 192.168.23.105 | 192.168.23.105 |
4.虚拟机
- 每个虚拟机两块网卡,节点之间的网卡名称要一致,比如都为ens33、ens36
- 业务public ip网卡用NAT模式,私有网络Private IP网卡用HostOnly模式
- 本地硬盘可以不立即分配空间
- 主机名不要使用大写字母
- 系统为CentOS 7.9(CentOS-7-x86_64-DVD-2009.iso)
- 设置好一个节点,可把二节点直接克隆出来改IP
三、系统参数配置
安装前的准备工作,分别在两个节点操作
1. 配置网卡
1.1 配置NAT网卡
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vi ifcfg-ens33
#修改
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.23.101
#重启网卡
[root@localhost ~]# ifdown ens33 && ifup ens33
1.2 配置HostOnly网卡
由于是创建完虚拟机后新增的HostOnly网卡,没有配置文件,可以通过下面方式去新增配置文件
- 使用nmcli con show命令获取ens36网卡的uuid
[root@rac11g_1 ~]# nmcli con show
NAME UUID TYPE DEVICE
ens33 405f5126-93bf-472d-970a-f4e2a707c544 ethernet ens33
Wired connection 1 b98743f7-f514-3b5f-82c8-ef2ac042ef57 ethernet ens36
virbr0 83e51f05-6627-4910-8b85-b5c2e1b3f683 bridge virbr0
- 使用ip addr命令获取ens36网卡的mac地址
[root@rac11g_1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:69:93:11 brd ff:ff:ff:ff:ff:ff
inet 192.168.23.101/24 brd 192.168.23.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::98a6:6bd5:2267:8f06/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:69:93:1b brd ff:ff:ff:ff:ff:ff
inet 192.168.80.128/24 brd 192.168.80.255 scope global noprefixroute dynamic ens36
valid_lft 1543sec preferred_lft 1543sec
inet6 fe80::61e9:798:194b:1dc3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:ce:35:59 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:ce:35:59 brd ff:ff:ff:ff:ff:ff
- 复制ens33网卡的配置文件,下面是修改的内容
[root@rac11g_1 ~]# cd /etc/sysconfig/network-scripts/
[root@rac11g_1 network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@rac11g_1 network-scripts]# vi ifcfg-ens36
#修改后
NAME=ens36
UUID=b98743f7-f514-3b5f-82c8-ef2ac042ef57
DEVICE=ens36
IPADDR=12.12.12.13
#重启ens36网卡
[root@rac11g_1 network-scripts]# ifdown ens36 && ifup ens36
2. 修改主机名
[root@localhost ~]# hostnamectl set-hostname rac11g_1
[root@localhost ~]# hostname
rac11g_1
3. 配置/etc/hosts
[root@rac11g_1 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#Public IP
192.168.23.101 rac11g_1
192.168.23.102 rac11g_2
#VIP
192.168.23.103 rac11g_1-vip
192.168.23.104 rac11g_2-vip
#Private IP
12.12.12.12 rac11g_1-private
12.12.12.13 rac11g_2-private
#Scan IP
192.168.23.105 rac11g-scan
4. 关闭防火墙
[root@rac11g_1 ~]# systemctl stop firewalld.service
[root@rac11g_1 ~]# systemctl disable firewalld.service
[root@rac11g_1 ~]# systemctl status firewalld.service
5. 关闭Selinux
[root@rac11g_1 ~]# vi /etc/selinux/config
#修改为
SELINUX=disabled
#生效
[root@rac11g_1 ~]# setenforce 0
6. 配置内核参数
[root@rac11g_1 ~]# vi /etc/sysctl.conf
kernel.shmmax = 4294967296
kernel.shmall = 1048576
kernel.shmmni = 4096
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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
#使配置生效
[root@rac11g_1 ~]# sysctl -p
参数 | 说明 |
---|---|
kernel.shmmax | 单个共享内存段最大值,让数据库在一个共享段里容纳整个SGA。举例:假设有8G内存,数据库最大使用内存,不要超过物理内存的80%(SGA+PGA),所以8G内存情况下,SGA要小于4.8G,PGA要小于1.6G,计算shmmax值最大为4.8Gx1024x1024x1024=5153960755 |
kernel.shmall | 控制共享内存页数=shmmax/PAGESIZE;getconf PAGESIZE 查看PAGESIZE |
kernel.shmmni | 共享内存段的最大数量,默认 |
fs.aio-max-nr | 可以拥有的异步IO请求数,避免IO系统故障,默认 |
fs.file-max | 允许的文件句柄最大数目,默认 |
kernel.sem | 空格不能去掉,信号参数,默认 |
net.ipv4.ip_local_port_range | oracle本地ipv4端口范围 |
net.core.rmem_default | 默认 |
net.core.rmem_max | 默认 |
net.core.wmem_default | 默认 |
net.core.wmem_max | 默认 |
vm.nr_hugepages | 大内存页,默认4K/页,数据库建议用2M/页,该参数一定要大于SGA。计算方式:sga_max_size/2M+100~500M。8G内存情况下SGA最大4.8G,(4.8x1024)/2=2457.6,加一点得2600 |
注意:
- kernel.sem这个参数 四个数字:第1个数字应约大于Oracle进程数,第2个数字建议是第1和第4个数字的乘积。这个参数能够满足大部分使用,但对于连接数较高(比如单节点8000个连接)可以设置为: 10000 1280000 512 1024
- kernel.shmall = physical RAM size / pagesize For most systems, this will be the value 2097152. See Note 301830.1 for more information.前为官方文档说明,但是有些教程是shmmax/pagesize
- kernel.shmmax = 1/2 of physical RAM. This would be the value 2147483648 for a system with 4GB of physical RAM. See Note:567506.1 for more information.
- kernel.shmmax定义了单个共享内存段的最大值,要放下整个数据库SGA内存的大小。要大于sga_mas_size
- limits文件里配置的memlock要大于或等于kernel.shmmax
- vm.nr_hugepages一定要计算正确,错误的设置会导致虚拟机启动失败(这里我没用该参数)
7. 配置grid、oracle用户的shell限制
[root@rac11g_1 ~]# 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
oracle hard memlock unlimited
oracle soft memlock unlimited
说明:
soft代表软件限制,hard代表硬件限制
软件限制到了会报警,硬件限制到了会报错
nproc参数:操作系统级别对每个用户创建的进程数的限制
nofile参数:文件描述符(句柄)一个进程能够打开文件的次数,也就是一个进程能打开多少文件,影响应用的并发度
stack参数:堆大小
memlock参数:限制锁定内存的大小,单位KB,略低于物理内存
8. 配置/etc/pam.d/login文件
[root@rac11g_1 ~]# vi /etc/pam.d/login
#加入
session required pam_limits.so
9. 创建组和用户
[root@rac11g_1 ~]# groupadd -g 1001 oinstall
[root@rac11g_1 ~]# groupadd -g 1002 dba
[root@rac11g_1 ~]# groupadd -g 1003 oper
[root@rac11g_1 ~]# groupadd -g 1004 asmadmin
[root@rac11g_1 ~]# groupadd -g 1005 asmdba
[root@rac11g_1 ~]# groupadd -g 1006 asmoper
[root@rac11g_1 ~]# useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
[root@rac11g_1 ~]# useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle
#修改grid和oracle密码
[root@rac11g_1 ~]# passwd grid
[root@rac11g_1 ~]# passwd oracle
10. 创建目录并授权
[root@rac11g_1 ~]# mkdir -p /home/u01/app/11.2.0/grid
[root@rac11g_1 ~]# mkdir -p /home/u01/app/grid
[root@rac11g_1 ~]# mkdir -p /home/u01/app/oracle
[root@rac11g_1 ~]# chown -R grid:oinstall /home/u01
[root@rac11g_1 ~]# chown oracle:oinstall /home/u01/app/oracle
[root@rac11g_1 ~]# chmod -R 775 /home/u01/
11. 配置grid和oracle环境变量
grid:
[grid@rac11g_1 ~]$ vi .bash_profile
export ORACLE_BASE=/home/u01/app/grid
export ORACLE_HOME=/home/u01/app/11.2.0/grid
export ORACLE_SID=+ASM1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
umask 022
[grid@rac11g_1 ~]$ source .bash_profile
oracle:
[oracle@rac11g_1 ~]$ vi .bash_profile
export ORACLE_BASE=/home/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=rac1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TMP=/tmp
export TMPDIR=$TMP
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
umask 022
[oracle@rac11g_1 ~]$ source .bash_profile
12. 挂载镜像
[root@rac11g_1 ~]# cd /soft/
[root@rac11g_1 soft]# mount CentOS-7-x86_64-DVD-2009.iso /media/
13. 配置yum源
[root@rac11g_1 ~]# cd /etc/yum.repos.d/
[root@rac11g_1 yum.repos.d]# mkdir bak
[root@rac11g_1 yum.repos.d]# mv CentOS-* bak
[root@rac11g_1 yum.repos.d]# cd bak
[root@rac11g_1 bak]# cp CentOS-Media.repo ..
[root@rac11g_1 bak]# cd ..
[root@rac11g_1 yum.repos.d]# vi CentOS-Media.repo
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/
gpgcheck=0
enabled=1
[root@rac11g_1 yum.repos.d]# yum clean all
[root@rac11g_1 yum.repos.d]# yum makecache
14. 安装依赖包
[root@rac11g_1 yum.repos.d]# yum -y install binutils compat-libcap1 gcc gcc-c++ glibc glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat elfutils-libelf-devel unixODBC unixODBC-devel
[root@rac11g_1 soft]# rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
[root@rac11g_1 soft]# rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
说明:
- compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm包需要单独上传安装
- pdksh-5.2.14-37.el5_8.1.x86_64.rpm包需要单独上传安装
- cvuqdisk-1.0.9-1.rpm包在解压后的grid安装包grid/rpm下
- 如果安装pdksh包的时候有冲突,把冲突的那个包卸载了
四、配置共享存储
使用VM虚拟机本身添加共享存储,这种方式比较方便,平常自己搭建测试环境用这种就行
1. 配置虚拟机共享磁盘
- 关闭两台虚拟机
- 节点1:-【编辑虚拟机设置】-【添加】-【硬盘】-【SCSI】-【创建新的虚拟磁盘】-设置磁盘大小,立即分配所有磁盘空间,将虚拟磁盘存储为单个文件-下一步完成-创建完成-确定
- 再选中刚才创建的磁盘-【高级】-虚拟设备节点选择SCSI1:0(增加多块盘按顺序选择),勾选独立,永久
- 节点2:添加-硬盘-选择“使用现有虚拟磁盘”-下一步-选择节点1下的vmdk磁盘文件-完成-高级-选择SCSI1:0,勾选独立-确定;
- 两台编辑虚拟机vmx配置文件,加入下面配置
disk.locking="false"
scsi1.sharedBus="virtual"
scsi1:0.deviceType = "disk"(多个磁盘的就加多条)
scsi1:1.deviceType = "disk"(多个磁盘的就加多条)
scsi1:2.deviceType = "disk"(多个磁盘的就加多条)
scsi1:3.deviceType = "disk"(多个磁盘的就加多条)
diskLib.dataCacheMaxSize="0"
diskLib.dataCacheMaxReadAheadSize="0"
diskLib.DataCacheMinReadAheadSize="0"
diskLib.dataCachePageSize="4096"
diskLib.maxUnsyncedWrites="0"
- 如果【永久】选项是灰色的,再加入下面的参数,设为独立模式
scsi1:0.mode = "independent-persistent"
scsi1:1.mode = "independent-persistent"
scsi1:2.mode = "independent-persistent"
scsi1:3.mode = "independent-persistent"
- 启用磁盘UUID,编辑虚拟机vmx文件,两个节点都增加下面配置
disk.EnableUUID = "TRUE"
注意:
- 用UDEV方式需要用到UUID
- 创建磁盘要用单个文件和立即分配所有空间,否则安装的时候共享盘会报错
完成上述操作以后,开启虚拟机,使用fdisk -l命令分别在节点1、2查看,注意查询到磁盘盘符一定要相同
2. 配置udev
以下脚本通过scsi_id获取设备的块设备的唯一标识名wwid
2.1 CentOS 6生成脚本
for i in b c d e f;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\",NAME=\"asm-disk$i\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\""
done
#或者
for i in b c d e f;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d /dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id -g -u -d /dev/sd$i`\",NAME=\"asm-disk$i\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\""
done
注意未分区用 $name,分区用 $parent
2.2 CentOS 7 生成脚本
for i in b c d e f;
do
echo "KERNEL==\"sd*\",ENV{DEVTYPE}==\"disk\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d \$devnode\",RESULT==\"`/usr/lib/udev/scsi_id -g -u -d /dev/sd$i`\",SYMLINK=\"asm-disk$i\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\""
done
2.3 udev规则配置文件
- 编辑/etc/udev/rules.d/99-oracle-asmdevices.rules规则文件,加入上面生成的脚本
[root@rac11g_1 ~]# cd /etc/udev/rules.d
[root@rac11g_1 rules.d]# vi 99-oracle-asmdevices.rules
KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c29603092ba8de9e904d0bf7427d",SYMLINK="asm-ocr1",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c294d210d9cef0f80370939947cb",SYMLINK="asm-ocr2",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c294a6b42dcbe65b04f415586c39",SYMLINK="asm-ocr3",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c2984687d8b88fd8a907c80d3232",SYMLINK="asm-data",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c296e3fe7883081a894d6b840138",SYMLINK="asm-arch",OWNER="grid",GROUP="asmadmin",MODE="0660"
- 把该文件拷贝至节点2该目录下
[root@rac11g_1 rules.d]# scp 99-oracle-asmdevices.rules 192.168.23.102:/etc/udev/rules.d
- 重新加载规则文件
[root@rac11g_1 rules.d]# /sbin/udevadm trigger --type=devices --action=change
[root@rac11g_1 rules.d]# /sbin/udevadm control --reload
- 查看/dev/asm*
[root@rac11g_1 rules.d]# ll /dev/asm*
lrwxrwxrwx 1 root root 3 Jun 15 14:23 /dev/asm-arch -> sdf
lrwxrwxrwx 1 root root 3 Jun 15 14:23 /dev/asm-data -> sde
lrwxrwxrwx 1 root root 3 Jun 15 14:29 /dev/asm-ocr1 -> sdb
lrwxrwxrwx 1 root root 3 Jun 15 14:23 /dev/asm-ocr2 -> sdc
lrwxrwxrwx 1 root root 3 Jun 15 14:23 /dev/asm-ocr3 -> sdd
[root@rac11g_1 rules.d]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 Jun 15 14:19 /dev/sda
brw-rw---- 1 root disk 8, 1 Jun 15 14:19 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jun 15 14:19 /dev/sda2
brw-rw---- 1 grid asmadmin 8, 16 Jun 15 15:57 /dev/sdb
brw-rw---- 1 grid asmadmin 8, 32 Jun 15 15:57 /dev/sdc
brw-rw---- 1 grid asmadmin 8, 48 Jun 15 15:57 /dev/sdd
brw-rw---- 1 grid asmadmin 8, 64 Jun 15 15:57 /dev/sde
brw-rw---- 1 grid asmadmin 8, 80 Jun 15 15:57 /dev/sdf
五、grid安装
为解决grid安装BUG需要打两个补丁
1. 上传grid、oracle安装包和补丁包
#oracle安装包
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
#grid安装包
p13390677_112040_Linux-x86-64_3of7.zip
#第二个补丁包,第一个补丁在grid安装包rpm目录下
p18370031_112040_Linux-x86-64.zip
2. 修改包权限
把/soft权限改为775,grid安装包权限改为grid:oinstall,oracle安装包权限改为oracle:oinstall
[root@rac11g_1 ~]# chmod 775 /soft
[root@rac11g_1 soft]# chown oracle:oinstall p13390677_112040_Linux-x86-64_1of7.zip
[root@rac11g_1 soft]# chown oracle:oinstall p13390677_112040_Linux-x86-64_2of7.zip
[root@rac11g_1 soft]# chown grid:oinstall p13390677_112040_Linux-x86-64_3of7.zip
3. grid用户解压grid安装包
[grid@rac11g_1 soft]$ unzip p13390677_112040_Linux-x86-64_3of7.zip
4. 第一个补丁安装
进入解压后的安装包,安装cvuqdisk-1.0.9-1.rpm包
[root@rac11g_1 grid]# cd /soft/grid/rpm
[root@rac11g_1 rpm]# rpm -ivh cvuqdisk-1.0.9-1.rpm
5. 安装grid
[grid@rac11g_1 soft]$ cd grid
[grid@rac11g_1 grid]$ export DISPLAY=192.168.23.1:0.0
[grid@rac11g_1 grid]$ ./runInstaller
5.1 跳过更新
5.2 安装配置GI集群
5.3 高级安装
5.4 语言选择
多选了一个简体中文
5.5 集群名和scan名
与hosts文件保持一致,scan名称开头不能以数字开头否则监测不到