当前位置 博文首页 > LuciferLiu_DBA:实战篇:手把手教你Linux7安装Oracle 19C RAC,

    LuciferLiu_DBA:实战篇:手把手教你Linux7安装Oracle 19C RAC,

    作者:[db:作者] 时间:2021-08-06 16:00

    作者简介

    • 作者: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 IPPrivate IPVirtual IPScan IP
    1rhel7.9p19c01p19c0119.11.0.010.211.55.1001.1.1.110.211.55.10210.211.55.105
    2rhel7.9p19c02p19c0219.11.0.010.211.55.1011.1.1.210.211.55.10310.211.55.105

    1 系统规划

    • 主机名: 需要英文字母开头,建议小写,p19c01/p19c02
    • 集群名称: 长度不超过15位,p19c-cluster
    • Linux系统版本: RedHat 7.9
    • 磁盘: 本地磁盘100G,用于安装OS,存放grid和oracle安装软件,用于oracle和grid安装目录
    • ASM共享盘:

    裁决盘OCR:OCR+VOTING=10G、冗余模式:EXTERNAL
    数据盘DATA:DATA=20G、冗余模式:EXTERNAL(数据文件,归档日志文件,spfile文件等)

    • RU升级路径: 19C 的补丁已经不叫PSU,改为RU

    满足条件:
    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。

    2 网络规划

    • 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

    • Virtual IP(提供客户端访问,漂移)

    10.211.55.102 p19c01-vip
    10.211.55.103 p19c02-vip

    • SCAN IP(提供客户端访问,均衡)

    10.211.55.105 p19c-scan

    3 存储规划

    asm-ocr——OCR/Voting File——10G
    asm-data——Data Files ——20G

    二、主机配置

    废话不多说,直接开干。

    注意:以下标题中(rac01&rac02)代表节点一和节点二都需要执行,(rac01)代表只需要节点一执行。

    1 操作系统安装(rac01&rac02)

    在这里插入图片描述
    关于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

    2 配置yum源并安装依赖包(rac01&rac02)

    Linux远程连接工具:

    • 本文将使用XShell和Xftp工具,安装包可以在官网下载,也可私信博主获取。
    • 其他工具也可以,比如:putty,SecureCRT 等等工具。

    注意:需要提前挂载系统镜像iso。

    Parallels Desktop挂载Linux主机镜像:
    Parallels Desktop
    VMware Workstation挂载Linux镜像:
    VMware Workstation
    手动挂载镜像源:

    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"
    

    在这里插入图片描述
    注意:依赖一定要安装成功,否则可能导致安装失败。

    3 网络配置

    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命令配置网络,没用过的可以了解下,很方便。

    4 存储配置(rac01&rac02)

    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即可。

    5 hosts文件配置(rac01&rac02)

    配置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
    

    在这里插入图片描述

    6 防火墙配置(rac01&rac02)

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    systemctl status firewalld.service
    

    在这里插入图片描述

    7 SELinux配置(rac01&rac02)

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    setenforce 0
    getenforce
    

    在这里插入图片描述
    注意:selinux修改完,需重启后生效。

    8 时间同步配置(rac01&rac02)

    禁用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
    

    在这里插入图片描述

    9 关闭透明大页和NUMA(rac01&rac02)

    关闭透明大页和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和透明大页,需要重启主机才能生效。

    10 avahi-daemon配置(rac01&rac02)

    关闭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
    

    在这里插入图片描述

    11 系统参数配置(rac01&rac02)

    配置参数文件:

    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
    

    在这里插入图片描述

    12 系统资源限制配置(rac01&rac02)

    配置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
    

    在这里插入图片描述

    13 用户及组、目录创建(rac01&rac02)

    用户组创建:

    /usr/sbin/groupadd -g 54321 oinstall
    /usr/sbin/groupadd -g 54322 dba
    /usr/sbin/groupadd -g 54323 oper
    /usr/sbin/groupadd -g