VMware Workstation 15 在 RHEL7 上搭建 19c RAC


1,環境規划

Hostname OS DB Role CPU RAM
ryan3 RHEL 7.7 19.3.0.0 node 1 1*2 4G
ryan4 RHEL 7.7 19.3.0.0 node 2 1*2 4G

2,IP規划

IPADDR NAME
192.168.157.201 ryan3
192.168.157.202 ryan4
192.168.157.203 ryan3-vip
192.168.157.204 ryan4-vip
10.1.1.203 ryan3-prv
10.1.1.204 ryan4-prv
192.168.157.210 ryan-std-scan

在兩個虛擬機添加一個橋接網卡作為私有IP使用

登錄服務器,進行配置

cat /etc/hosts|grep prv
ip link
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens39
vi ifcfg-ens39
##
NAME=ens39
DEVICE=ens39
ONBOOT=yes
IPADDR=10.1.1.204
##

service network restart

3,存儲規划

從19C開始,GIMR不再是必須配置的要求

如果選擇GIMR,則磁盤組至少要有35GB的空余空間:

我們這里選擇不配置GIMR:

考慮到我們要把FRA放在DATA磁盤組里,所以這里先設置成2個7G的磁盤:

磁盤組名 SIZE
CRS 1G*3
DATA 7G*2

 

4,創建共享磁盤

進入到要共享磁盤存放的路徑:

#打開CMD:
E: cd E:\VMware\share
-disks

運行以下命令創建3個1GB和2個7GB的磁盤:

vmware-vdiskmanager -c -s 1GB -a lsilogic -t 4 shared-asm01.vmdk
vmware-vdiskmanager -c -s 1GB -a lsilogic -t 4 shared-asm02.vmdk
vmware-vdiskmanager -c -s 1GB -a lsilogic -t 4 shared-asm03.vmdk
vmware-vdiskmanager -c -s 7GB -a lsilogic -t 4 shared-asm04.vmdk
vmware-vdiskmanager -c -s 7GB -a lsilogic -t 4 shared-asm05.vmdk

#如果說命令不存在,把vmware所在的安裝路徑加到環境變量中

添加到虛擬機中:

SCSI number選擇一段連續的,沒有被其他設備使用的,我們這里選擇從1:10開始

重復以上操作,將所有的共享磁盤添加到兩台虛擬機中

修改虛擬機的vmx配置文件

在每台虛擬機的配置文件里添加:

disk.locking = "FALSE"
scsi1.sharedbus = "VIRTUAL"

5,主機配置

5.1,設置主機名

#node1
hostnamectl set-hostname ryan3
#node2 hostnamectl set
-hostname ryan4

5.2, 關閉防火牆

#關閉防火牆
systemctl stop firewalld
systemctl disable firewalld

#關閉selinux
vi /etc/selinux/config
##
SELINUX
=disabled
##

#執行命令 setenforce
0

5.3,修改/etc/hosts文件

vi /etc/hosts
192.168.157.201    ryan3
192.168.157.202    ryan4
192.168.157.203    ryan3-vip
192.168.157.204    ryan4-vip
10.1.1.203       ryan3-prv
10.1.1.204       ryan4-prv
192.168.157.210    ryan-std-scan

5.4,關閉時間同步ntpd服務

#檢查兩節點時間,時區是否相同,並禁止chronyd

 systemctl stop chronyd
 systemctl disable chronyd

 mv /etc/chrony.conf /etc/chrony.conf.bak

如果有需要的話,可以設置下時區:

timedatectl list-timezones |grep Shanghai #查找中國時區的完整名稱
#Asia/Shanghai
timedatectl set-timezone Asia/Shanghai 

5.5,創建相關用戶組

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
groupadd -g 54330 racdba
useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,racdba grid
useradd -u 54321 -g oinstall -G dba,backupdba,dgdba,kmdba,asmdba,racdba,asmoper,oper oracle

設置密碼

passwd oracle
passwd grid

5.6,創建相應目錄

 
         

mkdir -p /u01/app/19.0.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/19.0.0/db_1
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/

5.7,安裝相關依賴包

簡單配置本地yum源(這里用的是虛擬機,所以CDROM已經連接了安裝的鏡像)

mount /dev/sr0 /mnt
cp /etc/yum.repos.d/redhat.repo /etc/yum.repos.d/local.repo vi /etc/yum.repos.d/local.repo ## [local] name=local baseurl=file:///mnt enabled=1 gpgcheck=0 ## yum clean all yum list

安裝相關依賴包

yum install -y bc binutils compat-libcap1 compat-libstdc++ elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make net-tools nfs-utils python python-configshell python-rtslib python-six targetcli smartmontools sysstat

#后面會用到oracleasm,所以這里順便安裝

yum install -y kmod-oracleasm

#本地yum源不包含以下安裝包,需要自行下載, 如果是win10虛擬機無法連接網絡,可以參考另一篇文章:https://www.cnblogs.com/ryanw/articles/12539569.html
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm #實在太慢的話,直接把鏈接貼到瀏覽器地址欄開始下載
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

5.8,修改Kernel參數值

vi /etc/sysctl.d/97-oracledatabase-sysctl.conf
## fs.aio
-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4294967295 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
##

5.9,停止avahi-daemon服務

Avahi is a system which enables programs to publish and discover services and hosts running on a local network.

Avahi用於在本地網絡發布和發現運行的服務和主機,也是一種零配置網絡服務,對於我們平常的網絡設置沒有多大作用。

但是可能會影響Oracle RAC的多播心跳,也建議disable掉

systemctl disable avahi-daemon.socket
systemctl disable avahi-daemon.service
ps -ef|grep avahi-daemon
kill -9 $pid avahi-daemon

5.10,添加NOZEROCONF=yes參數

當使用Oracle集群的時候,Zero Configuration Network一樣可能會導致節點間的通信問題,所以也應該停掉

Without zeroconf, a network administrator must set up network services, such as Dynamic Host Configuration Protocol (DHCP) and Domain Name System (DNS), or configure each computer's network settings manually.

在使用平常的網絡設置方式的情況下是可以停掉Zero Conf的

vi /etc/sysconfig/network
NOZEROCONF=yes

5.11,關閉Transparent HugePages

transparent_hugepage=never加到GRUB_CMDLINE_LINUX的末尾

vi /etc/default/grub
#
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off transparent_hugepage=never"
#

#Then
grub2-mkconfig -o /boot/grub2/grub.cfg

#OR
#不重啟
echo never > /sys/kernel/mm/transparent_hugepage/enabled

5.12,修改limits文件

vi /etc/security/limits.d/20-nproc.conf
* - nproc 16384

vi /etc/security/limits.conf grid soft nproc 16384 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 grid soft stack 10240 grid hard stack 32768 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768 oracle hard memlock 3145728 oracle soft memlock 3145728

5.13,修改Pam login

Pluggable Authentication Modules (PAM) is a system of libraries that handle user authentication tasks for applications.
On Linux, external scheduler jobs require PAM. Oracle strongly recommends that you install the latest Linux-PAM library for your Linux distribution.

Linux下外部schedule job需要用到PAM,oracle強烈建議你安裝最新的Linux-PAM庫,在5.12的相關依賴包中就有PAM,通過以下啟用它。

vi /etc/pam.d/login
#ORACLE SETTING
session    required     pam_limits.so

5.14,修改grid用戶的profile

在每個節點執行,節點1的ORACLE_SID=+ASM1,節點2的ORACLE_SID=+ASM2

vi ~/.bash_profile
##
PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
umask 022

export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
ORACLE_SID=+ASM1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/19.0.0/grid; export ORACLE_HOME
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin; export PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
THREADS_FLAG=native; export THREADS_FLAG
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
            ulimit -p 16384
              ulimit -n 65536
  else
   ulimit -u 16384 -n 65536
      fi
    umask 022
fi
##

5.15,修改oracle的profile

在每個節點修改,節點1的ORACLE_SID=ryan3,節點2的ORACLE_SID=ryan4

vi ~/.bash_profile

##
PS1="[`whoami`@`hostname`:"'$PWD]$'

export PS1
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1; export ORACLE_HOME
ORACLE_SID=ryan3; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
PATH=.:$PATH:$HOME/bin:$ORACLE_BASE/product/19.0.0/db_1/bin:$ORACLE_HOME/bin; export PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
THREADS_FLAG=native; export THREADS_FLAG
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
            ulimit -p 16384
              ulimit -n 65536
  else
   ulimit -u 16384 -n 65536
      fi
    umask 022
fi
##

5.16,修改root的profile

vi ~/.bash_profile

##
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
export ORACLE_HOME=
/u01/app/19.0.0/grid
PATH=$PATH:/u01/app/19.0.0/grid/bin:$HOME/bin export PATH ##

5.17,使用oracleasm配置共享存儲

在這個頁面下載RHEL7的oracleasmlib以及oracleasm-support,所有節點都要安裝跟配置

https://www.oracle.com/linux/downloads/linux-asmlib-rhel7-downloads.html

yum install kmod-oracleasm
yum localinstall oracleasmlib-2.0.12-1.el7.x86_64.rpm
yum localinstall oracleasm-support-2.1.11-2.el7.x86_64.rpm

#初始化
oracleasm init

#修改配置
oracleasm configure -e -u grid -g asmadmin

確定我們之前創建的共享磁盤,並且進行分區,在一個節點執行:

#查看有哪些磁盤:
lsscsi
fdisk -l

#進行分區 fdisk
/dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
fdisk /dev/sdf

#n表示創建分區,接下來全部回車,默認創建主分區

使用oracleasm創建磁盤,在一個節點執行,根據實際你的盤符名:

oracleasm createdisk asmdisk1 /dev/sdb1
oracleasm createdisk asmdisk2 /dev/sdc1
oracleasm createdisk asmdisk3 /dev/sdd1
oracleasm createdisk asmdisk4 /dev/sde1
oracleasm createdisk asmdisk5 /dev/sdf1

#在所有節點執行 oracleasm scandisks oracleasm listdisks

6,安裝GRID

6.1,將下載好的安裝包上傳到$GRID_HOME,並使用GRID解壓,在一個節點執行

6.2,執行安裝文件

[grid@ryan3:/u01/app/19.0.0/grid]$./gridSetup.sh

需要注意,如果你是遠程登陸,必須直接以grid用戶登錄,才可以遠程調用圖形化窗口,不可以使用root切換到grid

SCAN NAME使用/etc/hosts文件中的SCAN NAME

添加2節點

配置SSH

直接選擇install, 一直運行到出現以下窗口:

用root執行,每個腳本先執行當前節點,再執行其他節點

全部完成后,點擊OK

最后會顯示verification失敗,這個沒有什么問題,直接下一步:

完成后驗證一下:

crsctl status res -t
crsctl check crs

7,創建用於DB的磁盤組

使用GRID用戶,運行asmca:

8,安裝ORACLE

8.1,安裝軟件

解壓壓縮包到oracle用戶的$ORACLE_HOME目錄

然后運行runInstaller

注意提示,對於RAC,先安裝軟件,再運行DBCA創建數據庫:

剩余的warning忽略掉:

8.2,安裝數據庫

使用ORACLE用戶,運行dbca:

這里開啟FRA跟歸檔,使用+DATA01作為路徑:

9,驗證:

crsctl status res -t
ps -ef|grep pmon

 

可能遇見的問題:

1,The Oracle Home "/u01/app/19.0.0/grid" is not found in Oracle Inventory as an Oracle Grid Infrastructure Home.

需要將GRID HOME加入到inventory中:

cat /u01/app/oraInventory/ContentsXML/inventory.xml

<HOME NAME="OraGI19Home1" LOC="/u01/app/19.0.0/grid" TYPE="O" IDX="1" CRS="true"/>
<HOME NAME="OraDB19Home1" LOC="/u01/app/oracle/product/19.0.0/db_1" TYPE="O" IDX="2"/>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM