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
【拓扑图】
【地址规划】
主机名 | Public-IP(eth0) | VIP | Private(eth1) | Scan-IP | Stroage (eth2) |
rac1 | 192.168.1.10 | 192.168.1.5 | 2.2.2.100 | 192.168.1.7 | 172.16.1.100 |
rac2 | 192.168.1.11 | 192.168.1.6 | 2.2.2.200 | 192.168.1.8 | 172.16.1.200 |
NAS | 172.16.1.10 | 192.168.1.9 |
【共享存储规划】
系统磁盘名 | ASM磁盘名 | 磁盘组 | 容量 | 用途 |
sdb1 | asm1 | OCR | 4G | OCR+投票盘 |
sdc1 | asm2 | DATA | 20G | 数据 |
sdd1 | asm3 | FRA | 10G | 闪回 |
sde1 | asm4 | MGMT | 20G | 集群管理数据库 |
【系统分区】
共200G磁盘
分区 | 容量 | 逻辑卷 | 用途 |
/boot | 2G | 引导分区 | |
/bios-boot | 2G | efi引导分区 | |
swap | 8G | rac-swap | 交换分区 |
/u01 | 50G | rac-u01 | 软件安装目录 |
/u02 | 50G | rac-u02 | 数据库文件 |
/ | 50G | rac-root | 根分区 |
/home | 20G | rac-home | 所有用户家目录 |
/tmp | 20G | rac-tmp | 临时空间 |
建议SWAP容量:内存2.5G到16G之间,SWAP容量设置为和内存容量一样大小。内存大于16G时,SWAP设置为16G
【系统组件】
系统环境配置
两个节点使用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
本站所有文章均可随意转载,转载时请保留原文链接及作者。