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"/>