CentOS7.7 Oracle19c RAC

Oracle版本策略为18c等同于12.2.0.2 

19c则等同于12.2.0.3 ,19c将是12c的最终版本,2020年Oracle数据库将发布20c


环境

Virtualization:Windows Server 2019 Hyper-V

OS : CentOS 7.7 1918

Grid : LINUX.X64_193000_grid_home.zip

Database : LINUX.X64_193000_db_home.zip

NAS : OMV 4.1.22


【拓扑图】

CentOS7.7 Oracle19c RAC


【地址规划】

主机名  Public-IP(eth0)         VIP Private(eth1)     Scan-IP   Stroage (eth2)
rac1192.168.1.10192.168.1.5 2.2.2.100192.168.1.7 172.16.1.100
rac2192.168.1.11192.168.1.6 2.2.2.200192.168.1.8 172.16.1.200
NAS172.16.1.10

192.168.1.9


【共享存储规划】

系统磁盘名ASM磁盘名磁盘组容量用途
sdb1asm1OCR4GOCR+投票盘
sdc1asm2DATA20G数据
sdd1asm3FRA10G闪回
sde1asm4MGMT20G集群管理数据库


【系统分区】

共200G磁盘

分区容量逻辑卷用途
/boot2G
引导分区
/bios-boot2G
efi引导分区
swap8Grac-swap交换分区
/u0150Grac-u01软件安装目录
/u0250Grac-u02数据库文件
/50Grac-root根分区
/home20Grac-home所有用户家目录
/tmp20Grac-tmp临时空间

建议SWAP容量:内存2.5G到16G之间,SWAP容量设置为和内存容量一样大小。内存大于16G时,SWAP设置为16G


CentOS7.7 Oracle19c RAC


【系统组件】

CentOS7.7 Oracle19c RAC


系统环境配置

两个节点使用nmtui工具配置IP和DNS


节点1执行

setenforce 0 
sed 's/SELINUX=.*/SELINUX=permissive/g' -i /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
hostnamectl --static set-hostname rac1 && su
yum install -y wget unzip vim
reboot

节点2执行

setenforce 0 
sed 's/SELINUX=.*/SELINUX=permissive/g' -i /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
hostnamectl --static set-hostname rac2 && su
yum install -y wget unzip vim
reboot


搭建DNS(两个节点)

yum install -y dnsmasq
systemctl start dnsmasq
systemctl enable dnsmasq

vim /etc/hosts
添加
# Public IP
192.168.1.10 rac1.localdomain rac1
192.168.1.11 rac2.localdomain rac2
# PRIVATE IP
2.2.2.100 rac1-priv.localdomain rac1-priv
2.2.2.200 rac2-priv.localdomain rac2-priv
# Virtual IP
192.168.1.5 rac1-vip.localdomain rac1-vip
192.168.1.6 rac2-vip.localdomain rac2-vip
# SCAN
192.168.1.7 rac-scan.localdomain rac-scan
192.168.1.8 rac-scan.localdomain rac-scan
192.168.1.9 rac-scan.localdomain rac-scan
# NAS
172.16.1.10 omv

==================================
vim /etc/resolv.conf
添加
search localdomain
nameserver 127.0.0.1
nameserver 8.8.8.8

vim /etc/dnsmasq.conf
改为第74行
local=/localdomain/

chattr +i /etc/resolv.conf
systemctl restart dnsmasq


配置预安装环境(两个节点)

wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
rm -f oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
#自动生成文件路径cat /etc/sysctl.d/99-sysctl.conf
/sbin/sysctl -p

yum -y install -y libXrender-devel python-configshell python-rtslib targetcli rlwrap gcc-c++*
yum -y groupinstall "Server with GUI"
systemctl disable avahi-daemon.socket
systemctl disable avahi-daemon.service
reboot


同步时间后启用OCTSS(两个节点)

yum -y install ntpdate
ntpdate 120.25.108.11
hwclock -w
systemctl stop chronyd
systemctl disable chronyd
rm -rf /var/run/ntpd.pid
rm -rf /etc/chrony.conf


检测包安装

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libXrender-devel \
libXrender \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
nfs-utils \
net-tools \
python \
python-configshell \
python-rtslib \
python-six \
smartmontools \
sysstat \
targetcli


创建组和用户(两个节点)

groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
usermod -a -G asmdba oracle
useradd -u 54322 -g oinstall -G asmoper,asmadmin,asmdba,racdba grid

id grid
#uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),54330(racdba),54327(asmdba),54328(asmoper),54329(asmadmin)
id oracle
#uid=54321(oracle) gid=54321(oinstall) #groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba),54327(asmdba)

echo "vM0sTecH" | passwd --stdin grid
echo "vM0sTecH" | passwd --stdin oracle


创建目录(两个节点)

mkdir -p /u01/app/grid
mkdir -p /u01/app/19.3.0/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
mkdir -p /u01/oradata
chown -R grid:oinstall /u01 
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory


设置grid环境变量

节点1

su - grid
vim .bash_profile
添加
ORACLE_SID=+ASM1;export ORACLE_SID  
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/19.3.0/grid; 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
export NLS_LANG=AMERICAN_AMERICA.UTF8
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
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
export DISPLAY=192.168.1.2:0.0
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

执行source .bash_profile

节点2

su - grid
vim .bash_profile
添加
ORACLE_SID=+ASM2;export ORACLE_SID  
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/19.3.0/grid; 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
export NLS_LANG=AMERICAN_AMERICA.UTF8
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
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
export DISPLAY=192.168.1.2:0.0
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

执行source .bash_profile


设置oracle环境变量

节点1

su - oracle
vim .bash_profile
添加
ORACLE_SID=ora19rac1;export ORACLE_SID
ORACLE_UNQNAME=ora19c;export ORACLE_UNQNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_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
export NLS_LANG=AMERICAN_AMERICA.UTF8
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
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
export DATA_DIR=/u01/oradata
umask 022
export DISPLAY=192.168.1.2:0.0
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

执行source .bash_profile

节点2

su - oracle
vim .bash_profile
添加
ORACLE_SID=ora19rac2;export ORACLE_SID  
ORACLE_UNQNAME=ora19c;export ORACLE_UNQNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_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
export NLS_LANG=AMERICAN_AMERICA.UTF8
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
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
export DATA_DIR=/u01/oradata
umask 022
export DISPLAY=192.168.1.2:0.0
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

执行source .bash_profile


配置资源限制(两个节点)

#可参照自动生成资源限制文件路径/etc/security/limits.d/oracle-database-preinstall-19c.conf
vi /etc/security/limits.conf
添加
grid   soft   nofile    1024
grid   hard   nofile    65536
grid   soft   nproc    16384
grid   hard   nproc    16384
grid   soft   stack    10240
grid   hard   stack    32768
grid   hard   memlock    unlimited
grid   soft   memlock    unlimited

oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock    unlimited
oracle   soft   memlock    unlimited

vi /etc/pam.d/login
添加
#install oracle
session    required     /lib64/security/pam_limits.so
session    required     pam_limits.so


配置系统用户环境(两个节点)

vim /etc/profile
添加
#oracle
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

执行source /etc/profile


挂载/dev/shm (两个节点)

vi /etc/fstab
添加
tmpfs           /dev/shm        tmpfs   size=4g         0 0


删除桥接网卡

ifconfig virbr0 down
brctl delbr virbr0  
systemctl disable libvirtd.service


下载grid并解压缩并配置互信(节点1)

su - grid
cd $ORACLE_HOME
wget http://192.168.1.3/tools/sql/oracle/19c/LINUX.X64_193000_grid_home.zip
time unzip -q LINUX.X64_193000_grid_home.zip
./oui/prov/resources/scripts/sshUserSetup.sh -user grid -hosts "rac1 rac2" -advanced -confirm -noPromptPassphrase
exit


安装群集验证程序(两个节点)

节点1

cp -p /u01/app/19.3.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm /tmp/
scp -p /u01/app/19.3.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm rac2:/tmp/
rpm -Uvh /tmp/cvuqdisk-1.0.10-1.rpm

节点2

rpm -Uvh /tmp/cvuqdisk-1.0.10-1.rpm


挂载共享存储(两个节点)

yum -y install iscsi-initiator-utils  
systemctl restart iscsid 
systemctl enable iscsid        

iscsiadm -m discovery -t sendtargets -p 172.16.1.10
iscsiadm -m node -T iqn.2019-04.cn.vmos.ctl:asm1 -p 172.16.1.10 -l
iscsiadm -m node -T iqn.2019-04.cn.vmos.ctl:asm2 -p 172.16.1.10 -l
iscsiadm -m node -T iqn.2019-04.cn.vmos.ctl:asm3 -p 172.16.1.10 -l
iscsiadm -m node -T iqn.2019-04.cn.vmos.ctl:asm4 -p 172.16.1.10 -l

iscsiadm -m node -T iqn.2019-04.cn.vmos.ctl:asm1 -p 172.16.1.10 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2019-04.cn.vmos.ctl:asm2 -p 172.16.1.10 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2019-04.cn.vmos.ctl:asm3 -p 172.16.1.10 --op update -n node.startup -v automatic
iscsiadm -m node -T iqn.2019-04.cn.vmos.ctl:asm4 -p 172.16.1.10 --op update -n node.startup -v automatic


绑定udev

获取挂载LUN的UUID(节点1)

#CentOS6之前版本的-g -u -s参数已不支持,只能使用以下命令
echo "options=--whitelisted --replace-whitespace" > /etc/scsi_id.config
more /etc/scsi_id.config

#生成规则文件(因为未对挂载磁盘进行分区,使用参数$name)
for i in b c d e;
do
 echo "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""      
done
==============================================================
#如果需要对挂载磁盘进行分区,格式化共享磁盘(节点1)
ls -lh /dev/sd*
fdisk -l | grep "Disk /dev/sd[b-z]"

fdisk /dev/sdb   #n --> p --> 1 --> 回车 --> 回车 --> w
fdisk /dev/sdc   #n --> p --> 1 --> 回车 --> 回车 --> w
fdisk /dev/sdd   #n --> p --> 1 --> 回车 --> 回车 --> w
fdisk /dev/sde   #n --> p --> 1 --> 回车 --> 回车 --> w
cat /proc/partitions

partx /dev/sdb 
partx /dev/sdc 
partx /dev/sdd 
partx /dev/sde

#脚本使用参数$parent
for i in b1 c1 d1 e1
do
 echo "KERNEL==\"sd$i\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$parent\", RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd${i:0:1}`\", SYMLINK+=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""      
done;

写入规则(节点1)

vim /etc/udev/rules.d/99-oracle-asmdevices.rules
添加
KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36589cfc000000e451b50a065c60e984a", RUN+="/bin/sh -c 'mknod /dev/asm1 b $major $minor; chown grid:asmadmin /dev/asm1; chmod 0660 /dev/asm1'"
KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36589cfc00000018daecff702954ddcc8", RUN+="/bin/sh -c 'mknod /dev/asm2 b $major $minor; chown grid:asmadmin /dev/asm2; chmod 0660 /dev/asm2'"
KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36589cfc0000009df0b42831244b15f63", RUN+="/bin/sh -c 'mknod /dev/asm3 b $major $minor; chown grid:asmadmin /dev/asm3; chmod 0660 /dev/asm3'"
KERNEL=="sd*[!0-9]", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36589cfc000000269afd9f97120a5e634", RUN+="/bin/sh -c 'mknod /dev/asm4 b $major $minor; chown grid:asmadmin /dev/asm4; chmod 0660 /dev/asm4'"

scp /etc/udev/rules.d/99-oracle-asmdevices.rules rac2:/etc/udev/rules.d/

刷新规则(两个节点)

udevadm control --reload-rules
udevadm trigger --type=devices --action=change
systemctl enable systemd-udevd.service
systemctl restart systemd-udevd.service
systemctl status systemd-udevd.service


安装GI

su - grid
cd $ORACLE_HOME
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
./gridSetup.sh



更新日期: 2019年04月08日
文章标签: LinuxOracle
文章链接: https://www.vos.cn/db/299.html  
版权说明:如非注明,本站文章均为vOS原创,转载请注明出处和附带本文链接。