当前位置 博文首页 > LuciferLiu_DBA:实战篇:手把手教你Linux7安装Oracle 19C RAC,
- 作者:LuciferLiu,中国DBA联盟(ACDU)成员。
- 目前主要从事Oracle DBA工作,曾从事 Oracle 数据库开发工作,主要服务于生产制造,汽车金融等行业。
- 现拥有Oracle OCP,OceanBase OBCA认证,擅长Oracle数据库运维开发,备份恢复,安装迁移,Linux自动化运维脚本编写等。
之前发过一篇Oracle 11G RAC手把手教程,有朋友留言评论:19C都出了,为什么还在教11G? 既然如此,那就趁着周末边做边写,来一篇19C RAC手把手教程。
一步步教你Linux7安装Oracle RAC(11GR2版本):https://luciferliu.blog.csdn.net/article/details/117857145
注意:关于Oracle RAC在上一篇中已经讲的很清楚了,不了解的同学可以点过去看一下再继续读下去。
安装RAC前,当然要先做好规划。具体包含以下几方面:
节点 | 主机版本 | 主机名 | 实例名 | Grid/Oracle版本 | Public IP | Private IP | Virtual IP | Scan IP |
---|---|---|---|---|---|---|---|---|
1 | rhel7.9 | p19c01 | p19c01 | 19.11.0.0 | 10.211.55.100 | 1.1.1.1 | 10.211.55.102 | 10.211.55.105 |
2 | rhel7.9 | p19c02 | p19c02 | 19.11.0.0 | 10.211.55.101 | 1.1.1.2 | 10.211.55.103 | 10.211.55.105 |
裁决盘OCR:OCR+VOTING=10G、冗余模式:EXTERNAL
数据盘DATA:DATA=20G、冗余模式:EXTERNAL(数据文件,归档日志文件,spfile文件等)
满足条件:
1.c>=a
2.c+d>=a+b
例:
19.5.2–>19.8.0(5是a,2是b,8是c,0是d),满足升级需求;
19.6.2–>19.7.0(虽然7>6,但是7+0<6+2,所以不满足,如果是19.7.1,即可满足)
本次是从19.3.0升级到19.11.0,oracle官网下载的基础版是19.3.0。
10.211.55.100 p19c01
10.211.55.101 p19c02
1.1.1.1 p19c01-priv
1.1.1.2 p19c02-priv
10.211.55.102 p19c01-vip
10.211.55.103 p19c02-vip
10.211.55.105 p19c-scan
asm-ocr——OCR/Voting File——10G
asm-data——Data Files ——20G
废话不多说,直接开干。
注意:以下标题中(rac01&rac02)代表节点一和节点二都需要执行,(rac01)代表只需要节点一执行。
关于Linux的安装,之前已经讲过很多,碍于篇幅,这里不作演示,可参考:
- Windows主机如何玩转虚拟机Linux安装,看这一篇就够了:
https://luciferliu.blog.csdn.net/article/details/118558758- 教你三步在MacOS上安装Linux系统,看完就会了:
https://luciferliu.blog.csdn.net/article/details/118559254- 实战篇:一行命令安装Linux系统,超详细的 Vagrant 上手指南:https://luciferliu.blog.csdn.net/article/details/118852229
Linux远程连接工具:
- 本文将使用XShell和Xftp工具,安装包可以在官网下载,也可私信博主获取。
- 其他工具也可以,比如:putty,SecureCRT 等等工具。
注意:需要提前挂载系统镜像iso。
Parallels Desktop挂载Linux主机镜像:
VMware Workstation挂载Linux镜像:
手动挂载镜像源:
mount /dev/cdrom /mnt
df -Th
配置yum源:
cat <<EOF>>/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
EOF
yum repolist all
安装依赖包:
yum groupinstall -y "Server with GUI"
yum install -y bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
elfutils-libelf \
elfutils-libelf-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
make \
net-tools \
nfs-utils \
smartmontools \
sysstat \
e2fsprogs \
e2fsprogs-libs \
fontconfig-devel \
expect \
unzip \
openssh-clients \
readline* \
tigervnc* \
psmisc --skip-broken
手动上传并安装依赖包:
cd /soft
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
检查依赖包安装情况:
rpm -q bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline | grep "not installed"
注意:依赖一定要安装成功,否则可能导致安装失败。
rac01:
##配置Public IP
nmcli connection modify eth0 ipv4.addresses 10.211.55.100/24 ipv4.gateway 10.211.55.1 ipv4.method manual autoconnect yes
##配置Private IP
nmcli connection modify eth1 ipv4.addresses 1.1.1.1/24 ipv4.method manual autoconnect yes
##生效
nmcli connection up eth0
nmcli connection up eth1
nmcli connection show
rac02:
##配置Public IP
nmcli connection modify eth0 ipv4.addresses 10.211.55.101/24 ipv4.gateway 10.211.55.1 ipv4.method manual autoconnect yes
##配置Private IP
nmcli connection modify eth1 ipv4.addresses 1.1.1.2/24 ipv4.method manual autoconnect yes
##生效
nmcli connection up eth0
nmcli connection up eth1
nmcli connection show
注意:这里我使用的是nmcli命令配置网络,没用过的可以了解下,很方便。
ISCSI共享存储配置可参考:
一步步教你Windows配置ISCSI共享存储(StarWind)https://luciferliu.blog.csdn.net/article/details/118087577
iscsi连接共享存储并挂载:
##iscsi识别共享存储
yum install -y iscsi-initiator-utils*
##输出targetname,10.211.55.22为iscsi共享存储设备IP地址
iscsiadm -m discovery -t st -p 10.211.55.22
##连接共享存储
iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:10.211.55.22-lucifer -p 10.211.55.22 -l
lsblk
配置multipath多路径:
##安装multipath
yum install -y device-mapper*
mpathconf --enable --with_multipathd y
##查看共享盘的scsi_id
/usr/lib/udev/scsi_id -g -u /dev/sdb
/usr/lib/udev/scsi_id -g -u /dev/sdc
##配置multipath,wwid的值为上面获取的scsi_id,alias可自定义,这里配置1块OCR盘,1块DATA盘
cat <<EOF>/etc/multipath.conf
defaults {
user_friendly_names yes
}
blacklist {
devnode "^sda"
}
multipaths {
multipath {
wwid "27e2b3ddbb7fbeb41"
alias asm_ocr
}
multipath {
wwid "2852b96c12f460ade"
alias asm_data
}
}
EOF
激活multipath多路径:
multipath -F
multipath -v2
multipath -ll
配置UDEV绑盘:
rm -rf /dev/mapper/udev_info
rm -rf /etc/udev/rules.d/99-oracle-asmdevices.rules
cd /dev/mapper
for i in asm_*; do
printf "%s %s\n" "$i" "$(udevadm info --query=all --name=/dev/mapper/"$i" | grep -i dm_uuid)" >>/dev/mapper/udev_info
done
while read -r line; do
dm_uuid=$(echo "$line" | awk -F'=' '{print $2}')
disk_name=$(echo "$line" | awk '{print $1}')
echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${dm_uuid}\",SYMLINK+=\"${disk_name}\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\"" >>/etc/udev/rules.d/99-oracle-asmdevices.rules
done </dev/mapper/udev_info
##重载udev
udevadm control --reload-rules
udevadm trigger --type=devices
ll /dev/asm*
注意:这里由于没有创建grid用户,因此权限和组是root,等创建grid用户后,再次重载udev即可。
配置hostname:
hostnamectl set-hostname p19c01
hostnamectl set-hostname p19c02
配置hosts文件:
cat <<EOF>>/etc/hosts
#Public IP
10.211.55.100 p19c01
10.211.55.101 p19c02
#Private IP
1.1.1.1 p19c01-priv
1.1.1.2 p19c02-priv
#Vip IP
10.211.55.102 p19c01-vip
10.211.55.103 p19c02-vip
#Scan IP
10.211.55.105 p19c-scan
EOF
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
getenforce
注意:selinux修改完,需重启后生效。
禁用chronyd:
yum install -y chrony
timedatectl set-timezone Asia/Shanghai
systemctl stop chronyd.service
systemctl disable chronyd.service
配置ntpdate时间同步计划任务:
yum install -y ntpdate
##10.211.55.200为时间服务器IP,每天12点同步系统时间
cat <<EOF>>/var/spool/cron/root
00 12 * * * /usr/sbin/ntpdate -u 10.211.55.200 && /usr/sbin/hwclock -w
EOF
##查看计划任务
crontab -l
##手动执行
/usr/sbin/ntpdate -u 10.211.55.200 && /usr/sbin/hwclock -w
关闭透明大页和numa:
sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
重启后检查是否生效:
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /proc/cmdline
注意:修改完numa和透明大页,需要重启主机才能生效。
关闭avahi-daemon服务:
yum install -y avahi*
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
pgrep -f avahi-daemon | awk '{print "kill -9 "$2}'
systemctl disable avahi-daemon.socket
systemctl disable avahi-daemon.service
配置NOZEROCONF:
cat <<EOF>>/etc/sysconfig/network
NOZEROCONF=yes
EOF
配置参数文件:
memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
totalMemory=$((memTotal / 2048))
shmall=$((memTotal / 4))
if [ $shmall -lt 2097152 ]; then
shmall=2097152
fi
shmmax=$((memTotal * 1024 - 1))
if [ "$shmmax" -lt 4294967295 ]; then
shmmax=4294967295
fi
cat <<EOF>>/etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = $shmall
kernel.shmmax = $shmmax
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 = 1048576
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth1.rp_filter = 2
EOF
生效系统参数:
sysctl -p
配置limits.conf:
cat <<EOF>>/etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard memlock 134217728
oracle soft memlock 134217728
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
grid soft nproc 2047
grid hard nproc 16384
EOF
配置pam.d/login:
cat <<EOF>>/etc/pam.d/login
session required pam_limits.so
session required /lib64/security/pam_limits.so
EOF
用户组创建:
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g