CNDBA 社区 https://www.cndba.cn
1. 准备工作
硬件最低配置要求
序号
1
组件
Oracle Grid Infrastructure installations
2
Oracle Database installations
内存
8GB 以上
最小 1GB,建议 2GB 以上
1.1. RAC 规划
服务器主机名
公共 IP 地址(enp0s3)
虚拟 IP 地址(enp0s3)
私有 IP 地址(enp0s8)
ORACLE RAC SID
集群实例名称
SCAN IP
操作系统
Oracle 版本
1.2. 磁盘划分
rac1
192.168.1.100
192.168.1.102
192.168.56.100
cndba1
rac2
192.168.1.101
192.168.1.103
192.168.56.101
cndba2
cndba
192.168.1.104
Red Hat 7.5
18.3.0
仅仅为了安装测试。从 Oracle 12c 开始对磁盘组空间要求更大。OCR 外部冗余最少 30G,NORMAL 最少 60G。空间
这块具体的说明,可以参考官网:
https://docs.oracle.com/en/database/oracle/oracle-database/18/cwwin/oracle-clusterware-storage-
requirements.html#GUID-F011F2EC-595E-4806-9B8B-15DB32A91180
磁盘
data01
data02
OCRVOTING01
OCRVOTING02
OCRVOTING03
MIGR
大小
30G
30G
2G
2G
2G
40G
冗余策略
NORMAL
NORMAL
EXTERNAL
磁盘组名称
DATAFILE
OCR
MIGR
1.3. 配置 host
cat /etc/hosts
127.0.0.1 localhost
192.168.1.100 rac1
172.168.56.100 rac1-priv
192.168.1.102 rac1-vip
192.168.1.101 rac2
CNDBA 社区 https://www.cndba.cn
172.168.56.101 rac2-priv
192.168.1.103 rac2-vip
192.168.1.104 rac-scan
1.4. 添加用户和组
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54329 asmadmin
/usr/sbin/groupadd -g 54330 racdba
/usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,oper oracle
/usr/sbin/useradd -u 54322 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,asmoper,asmadmin,racdba grid
确认用户:
id oracle
id grid
passwd grid
passwd oracle
1.5. 禁用透明大页和 NUMA
关于透明大页和 NUMA 的详细说明可以参考:
Linux 7.4 中关闭透明大页(Transparent Huge Pages)
https://www.cndba.cn/cndba/dave/article/2673
Linux NUMA 技术说明
https://www.cndba.cn/dave/article/149
默认是启用的,如下:
[root@18cRac2 software]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@18cRac2 software]#
[root@18cRac1 software]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet transparent_hugepage=never numa=off"
GRUB_DISABLE_RECOVERY="true"
[root@18cRac1 software]# grub2-mkconfig -o /boot/grub2/grub.cfg
CNDBA 社区 https://www.cndba.cn
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-4c7b16d0887748f883ee1a722ec96352
Found initrd image: /boot/initramfs-0-rescue-4c7b16d0887748f883ee1a722ec96352.img
done
[root@18cRac1 software]#
#已经关闭:
[root@18cRac1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@18cRac1 ~]#
1.6. 关闭防火墙和 selinux
防火墙:
[root@18cRac1 ~]# systemctl stop firewalld.service
[root@18cRac1 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
关闭 SELINUX:
[root@18cRac1 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
1.7. 禁用 chronyd
关于 Linux 7 中 chronyd 的配置,可以参考我的博客:
Linux 7 chrony 时间同步服务配置
https://www.cndba.cn/dave/article/1820
这里我们直接关闭 chronyd:
[root@18cRac1 ~]# systemctl stop chronyd
[root@18cRac1 ~]# systemctl disable chronyd
Removed symlink /etc/systemd/system/multi-user.target.wants/chronyd.service.
CNDBA 社区 https://www.cndba.cn
1.8. 关闭 avahi-daemon
Avahi-daemon 可能会带来网络问题和 bug,尤其是对于 RAC 系统,Oracle 建议直接关闭。
[root@18cRac2 ~]# systemctl stop avahi-daemon
Warning: Stopping avahi-daemon.service, but it can still be activated by:
avahi-daemon.socket
[root@18cRac2 ~]# systemctl disable avahi-daemon
Removed symlink /etc/systemd/system/multi-user.target.wants/avahi-daemon.service.
Removed symlink /etc/systemd/system/sockets.target.wants/avahi-daemon.socket.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.Avahi.service.
[root@18cRac2 ~]#
1.9. 创建目录
mkdir -p /u01/app/18.3.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/18.3.0/db_1
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
1.10. 配置用户环境变量·
1.10.1. ORACLE 用户
. ~/.bashrc
cat /home/oracle/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
fi
# User specific environment and startup programs
ORACLE_SID=cndba1;export ORACLE_SID
ORACLE_UNQNAME=cndba;export ORACLE_UNQNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/18.3.0/db_1; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="YYYY:MM:DDHH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=american_america.ZHS16GBK; export NLS_LANG
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
CNDBA 社区 https://www.cndba.cn
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
1.10.2. GRID 用户
. ~/.bashrc
cat /home/grid/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
#另一个节点是 ASM2
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/18.3.0/grid
export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin/:.
export TEMP=/tmp
export TMP=/tmp
export TMPDIR=/tmp
umask 022
export PATH
1.11. 修改资源限制
1.11.1. 修改/etc/security/limits.conf
[root@18cRac1 ~]#cat >> /etc/security/limits.conf <
CNDBA 社区 https://www.cndba.cn
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
oracle soft memlock 3145728
oracle hard memlock 3145728
EOF
1.12. 配置 NOZEROCONF
vi /etc/sysconfig/network 增加以下内容
NOZEROCONF=yes
1.13. 修改内核参数
在 Linux 7 之前,内核参数文件是修改/etc/sysctl.conf 文件,但在 Linux 7.x 之后发生了变化:
Linux 7 中 /etc/sysctl.conf 的位置变化
https://www.cndba.cn/dave/article/2966
但仍然可以修改这个文件,Oracle 做了个 link 指向了该文件。我们这里创建了一个新文件:
[root@18cRac2 sysctl.d]# cat /etc/sysctl.d/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
[root@18cRac2 sysctl.d]#sysctl -p
CNDBA 社区 https://www.cndba.cn
1.14. 安装必要的包
compat-libstdc++-33
yum install binutils
libstdc++-devel
libX11
unixODBC-devel zlib-devel zlib-devel.i686 compat-libcap1 -y
gcc-c++
libxcb
gcc
libaio-devel
libXau
libXau.i686
libX11.i686
libaio.i686
libaio
libaio-devel.i686
libxcb.i686
glibc
libXi
libXi.i686
glibc.i686
libXext
glibc-devel
libXext.i686
make
ksh
libXtst
sysstat
libgcc.i686
libXtst.i686
unixODBC
1.15. 安装 cvuqdisk
cvuqdisk 存于 oracle GI 安装介质的 cv/rpm 目录下
export CVUQDISK_GRP=asmadmin
rpm –ivh cvuqdisk-1.0.10-1.rpm
1.16. 配置共享磁盘
-c
-g
-u
-d
'mknod /dev/asmdiskb b
用脚本生成 udev 配置:
for i in b c d e f g h;
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 /dev/sd$i`\", RUN+=\"/bin/sh -c 'mknod /dev/asmdisk$i b \$major
\$minor; chown grid:asmadmin /dev/asmdisk$i; chmod 0660 /dev/asmdisk$i'\""
done
[root@18cRac1 ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id
$devnode",RESULT=="1ATA_VBOX_HARDDISK_VBcc63158d-4355604f", RUN+="/bin/sh
$major $minor; chown grid:asmadmin /dev/asmdiskb; chmod 0660 /dev/asmdiskb'"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id
$devnode",RESULT=="1ATA_VBOX_HARDDISK_VBec0489cc-838e8269", RUN+="/bin/sh
$major $minor; chown grid:asmadmin /dev/asmdiskc; chmod 0660 /dev/asmdiskc'"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id
$devnode",RESULT=="1ATA_VBOX_HARDDISK_VBe202db97-bb460b14", RUN+="/bin/sh -c
$major $minor; chown grid:asmadmin /dev/asmdiskd; chmod 0660 /dev/asmdiskd'"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id
$devnode",RESULT=="1ATA_VBOX_HARDDISK_VB15946091-75f9c0f4", RUN+="/bin/sh
$major $minor; chown grid:asmadmin /dev/asmdiske; chmod 0660 /dev/asmdiske'"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id
$devnode",RESULT=="1ATA_VBOX_HARDDISK_VB90ea2842-3d5cfe18", RUN+="/bin/sh
$major $minor; chown grid:asmadmin /dev/asmdiskf; chmod 0660 /dev/asmdiskf'"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id
$devnode",RESULT=="1ATA_VBOX_HARDDISK_VB0c31ed82-ca3c7a2f", RUN+="/bin/sh
$major $minor; chown grid:asmadmin /dev/asmdiskg; chmod 0660 /dev/asmdiskg'"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id
$devnode",RESULT=="1ATA_VBOX_HARDDISK_VBd2eba70f-9707444e", RUN+="/bin/sh
$major $minor; chown grid:asmadmin /dev/asmdiskh; chmod 0660 /dev/asmdiskh'"
让 UDEV 生效:
-d
'mknod /dev/asmdiskf b
-d
'mknod /dev/asmdiskg b
-d
'mknod /dev/asmdiske b
-d
'mknod /dev/asmdiskh b
-d
'mknod /dev/asmdiskc b
-d
'mknod /dev/asmdiskd b
-u
-u
-u
-u
-u
-u
-g
-g
-g
-g
-g
-g
-c
-c
-c
-c
-c
CNDBA 社区 https://www.cndba.cn
[root@18cRac1 ~]# /sbin/udevadm trigger --type=devices --action=change
如果权限没有变,尝试重启。
[root@18cRac1 ~]# ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Sep 4 22:37 /dev/asmdiskb
brw-rw---- 1 grid asmadmin 8, 32 Sep 4 22:37 /dev/asmdiskc
brw-rw---- 1 grid asmadmin 8, 48 Sep 4 22:37 /dev/asmdiskd
brw-rw---- 1 grid asmadmin 8, 64 Sep 4 22:37 /dev/asmdiske
brw-rw---- 1 grid asmadmin 8, 80 Sep 4 22:37 /dev/asmdiskf
[root@18cRac1 ~]#
2. 安装 GRID
2.1. 上传解压介质
[grid@18cRac1 software]$ ll
total 9714016
-rwxrwxr-x. 1 grid oinstall 232774 Aug 8 10:11 compat-libstdc++-33-3.2.3-61.x86_64.rpm
-rwxrwxr-x. 1 grid oinstall 4564649047 Sep 4 20:00 LINUX.X64_180000_db_home.zip
-rwxrwxr-x. 1 grid oinstall 5382265496 Sep 4 20:01 LINUX.X64_180000_grid_home.zip
[grid@18cRac1 software]$ unzip -d /u01/app/18.3.0/grid/ LINUX.X64_180000_grid_home.zip
从 Oracle 12cR2 开始,软件直接解压缩到 GRID_HOME 或者 ORACLE_HOME,而不是在安装时复制过去。 该操作只需
要在节点 1 上完成解压缩即可。
2.2. 运行安装脚本 gridSetup.sh
[grid@18cRac1 grid]$ pwd
/u01/app/18.3.0/grid
[grid@18cRac1 grid]$ ./gridSetup.sh