Linux7.5 Oracle19c RAC 安装(快速版)
准备虚拟机:虚拟机2台,配置好磁盘和网卡x2。
虚拟机1:rac1。虚拟机2:rac2。
注:未说明的rac1,rac2同时配置。
准备安装包:
● (RPM): compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
● (Oracle) :LINUX.X64_193000_db_home.zip
● (Grid):LINUX.X64_193000_grid_home.zip
● (RU):p32545008_190000_Linux-x86-64.zip
● (Opatch): p6880880_190000_Linux-x86-64.zip
1. 配置IP
#修改配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 vim /etc/sysconfig/network-scripts/ifcfg-ens34 #主要修改以下内容 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.xxx.xxx GATEWAY=192.168.xxx.xxx #重启网络 systemctl restart network
2. 加快ssh登录
#--配置LoginGraceTime参数为0, 将timeout wait设置为无限制 cp /etc/ssh/sshd_config /etc/ssh/sshd_config_`date +"%Y%m%d_%H%M%S"` && sed -i '/#LoginGraceTime 2m/ s/#LoginGraceTime 2m/LoginGraceTime 0/' /etc/ssh/sshd_config && grep LoginGraceTime /etc/ssh/sshd_config #加快SSH登陆速度,禁用DNS cp /etc/ssh/sshd_config /etc/ssh/sshd_config_`date +"%Y%m%d_%H%M%S"` && sed -i '/#UseDNS yes/ s/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config && grep UseDNS /etc/ssh/sshd_config #重启sshd systemctl restart sshd
3. 修改hostsname
#rac1 hostnamectl set-hostname rac1 #rac2 hostnamectl set-hostname rac2
4. 修改/etc/hosts
echo '#public ip 192.168.126.141 rac1 192.168.126.142 rac2 #private 192.168.21.141 rac1-priv 192.168.21.142 rac2-priv #vip 192.168.126.143 rac1-vip 192.168.126.144 rac2-vip #scanip 192.168.126.145 rac-scan'>> /etc/hosts;
5. 禁用虚拟网卡(可选)
systemctl stop libvirtd systemctl disable libvirtd
6. 调整network
echo "NOZEROCONF=yes" >>/etc/sysconfig/network && cat /etc/sysconfig/network
7. 调整/dev/shm
echo "tmpfs /dev/shm tmpfs rw,exec,size=4G 0 0">>/etc/fstab mount -o remount /dev/shm df -h
8. 检查THP和numa是否关闭
cat /sys/kernel/mm/transparent_hugepage/enabled cat /sys/kernel/mm/transparent_hugepage/enabled
9. 关闭防火墙和SELinux
#关闭防火墙 systemctl stop firewalld systemctl disable firewalld #关闭SELINUX setenforce 0 vim /etc/selinux/config 修改SELINUX=disabled
10. 上传rpm安装包
mkdir /u01/sw 上传到rac1,在复制到rac2 scp /u01/sw/c* rac2:/u01/sw/
11. 配置软件yum源,下载安装包
#挂载并搭建仓库
mount /dev/cdrom /mnt cat >> /etc/yum.repos.d/oracle-linux-ol7.repo << "EOF" [base] name=base baseurl=file:///mnt enabled=1 gpgcheck=0 EOF
#yum安装
yum install -y bc* ntp* binutils* compat-libcap1* compat-libstdc++* dtrace-modules* dtrace-modules-headers* dtrace-modules-provider-headers* dtrace-utils* elfutils-libelf* elfutils-libelf-devel* fontconfig-devel* glibc* glibc-devel* ksh* libaio* libaio-devel* libdtrace-ctf-devel* libXrender* libXrender-devel* libX11* libXau* libXi* libXtst* libgcc* librdmacm-devel* libstdc++* libstdc++-devel* libxcb* make* net-tools* nfs-utils* python* python-configshell* python-rtslib* python-six* targetcli* smartmontools* sysstat* gcc* nscd* unixODBC* unzip readline tigervnc*
#rqm安装compat
rpm -ivh /u01/sw/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
12. 配置核心参数
cp /etc/sysctl.conf /etc/sysctl.conf_bak
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 = 16777216 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.wmem_default = 16777216 fs.aio-max-nr = 6194304 vm.dirty_ratio=20 vm.dirty_background_ratio=3 vm.dirty_writeback_centisecs=100 vm.dirty_expire_centisecs=500 vm.swappiness=10 vm.min_free_kbytes=524288 net.core.netdev_max_backlog = 30000 net.core.netdev_budget = 600 #vm.nr_hugepages = net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 net.ipv4.ipfrag_time = 60 net.ipv4.ipfrag_low_thresh=6291456 net.ipv4.ipfrag_high_thresh = 8388608 EOF
#生效 sysctl -p
13. 关闭其他服务
--停止服务 systemctl stop accounts-daemon.service systemctl stop atd.service systemctl stop avahi-daemon.service systemctl stop avahi-daemon.socket systemctl stop bluetooth.service systemctl stop brltty.service systemctl stop chronyd.service systemctl stop colord.service systemctl stop cups.service systemctl stop cups.socket systemctl stop cups.path systemctl stop debug-shell.service systemctl stop firewalld.service systemctl stop gdm.service systemctl stop ksmtuned.service systemctl stop ktune.service systemctl stop libstoragemgmt.service systemctl stop mcelog.service systemctl stop ModemManager.service --systemctl stop ntpd.service systemctl stop postfix.service systemctl stop postfix.service systemctl stop rhsmcertd.service systemctl stop rngd.service systemctl stop rpcbind.service systemctl stop rtkit-daemon.service systemctl stop rpcbind.socket systemctl stop tuned.service systemctl stop upower.service systemctl stop wpa_supplicant.service --禁用开机启动 systemctl disable accounts-daemon.service systemctl disable atd.service systemctl disable avahi-daemon.service systemctl disable avahi-daemon.socket systemctl disable bluetooth.service systemctl disable brltty.service --systemctl disable chronyd.service systemctl disable colord.service systemctl disable cups.service systemctl disable debug-shell.service systemctl disable firewalld.service systemctl disable gdm.service systemctl disable ksmtuned.service systemctl disable ktune.service systemctl disable libstoragemgmt.service systemctl disable mcelog.service systemctl disable ModemManager.service --systemctl disable ntpd.service systemctl disable postfix.service systemctl disable postfix.service systemctl disable rhsmcertd.service systemctl disable rngd.service systemctl disable rpcbind.service systemctl disable rtkit-daemon.service systemctl disable tuned.service systemctl disable upower.service systemctl disable wpa_supplicant.service
14. 修改login配置
cat >> /etc/pam.d/login <<EOF session required pam_limits.so EOF
15. 配置用户限制
cat >> /etc/security/limits.conf <<EOF grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 grid soft stack 10240 grid hard stack 32768 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768 oracle soft memlock 3145728 oracle hard memlock 3145728 EOF
17. 创建组和用户
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 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba -u 10000 oracle useradd -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba -u 10001 grid echo "oracle" | passwd --stdin oracle echo "grid" | passwd --stdin grid
18. 创建目录
mkdir -p /u01/app/19.3.0/grid mkdir -p /u01/app/grid mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 chown -R grid:oinstall /u01/ chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u01/
19. 配置grid和oracle用户环境变量
#grid
cat >> /home/grid/.bash_profile << "EOF" ################add######################### umask 022 export TMP=/tmp export TMPDIR=$TMP export ORACLE_BASE=/u01/app/grid export ORACLE_HOME=/u01/app/19.3.0/grid export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export ORACLE_SID=+ASM1 export PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH alias sas='sqlplus / as sysasm' export PS1="[\`whoami\`@\`hostname\`:"'$PWD]\$ ' EOF
#oracle
cat >> /home/oracle/.bash_profile << "EOF" ################ add######################### umask 022 export TMP=/tmp export TMPDIR=$TMP export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1 export ORACLE_HOSTNAME=oracle19c-rac1 export TNS_ADMIN=\$ORACLE_HOME/network/admin export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib export ORACLE_SID=orcl1 export PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH alias sas='sqlplus / as sysdba' export PS1="[\`whoami\`@\`hostname\`:"'$PWD]\$ ' EOF
20. 添加磁盘,修改vmx文件。
#路径:vm安装路径cmd. eg:C:\software\vm #RAC1和RAC2共同使用 .\vmware-vdiskmanager.exe -c -s 2g -a lsilogic -t 2 "C:\yhem\sharedisk\share-ocr01.vmdk" .\vmware-vdiskmanager.exe -c -s 2g -a lsilogic -t 2 "C:\yhem\sharedisk\share-ocr02.vmdk" .\vmware-vdiskmanager.exe -c -s 2g -a lsilogic -t 2 "C:\yhem\sharedisk\share-ocr03.vmdk" .\vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "C:\yhem\sharedisk\share-data01.vmdk" .\vmware-vdiskmanager.exe -c -s 10GB -a lsilogic -t 2 "C:\yhem\sharedisk\share-data02.vmdk"
#关闭虚拟机,修改vmx文件。路径:C:\yhem\oracle19c-rac1、C:\yhem\oracle19c-rac2
#增加以下内容 disk.EnableUUID = "TRUE" #shared disks configure diskLib.dataCacheMaxSize=0 diskLib.dataCacheMaxReadAheadSize=0 diskLib.dataCacheMinReadAheadSize=0 diskLib.dataCachePageSize=4096 diskLib.maxUnsyncedWrites = "0" disk.locking = "FALSE" scsi1.sharedBus = "virtual" scsi1.present = "TRUE" scsi1.virtualDev = "lsilogic" scsi1:0.mode = "independent-persistent" scsi1:0.deviceType = "disk" scsi1:0.present = "TRUE" scsi1:0.fileName = "C:\yhem\sharedisk\share-ocr01.vmdk" scsi1:0.redo = "" scsi1:1.mode = "independent-persistent" scsi1:1.deviceType = "disk" scsi1:1.present = "TRUE" scsi1:1.fileName = "C:\yhem\sharedisk\share-ocr02.vmdk" scsi1:1.redo = "" scsi1:2.mode = "independent-persistent" scsi1:2.deviceType = "disk" scsi1:2.present = "TRUE" scsi1:2.fileName = "C:\yhem\sharedisk\share-ocr03.vmdk" scsi1:2.redo = "" scsi1:3.mode = "independent-persistent" scsi1:3.deviceType = "disk" scsi1:3.present = "TRUE" scsi1:3.fileName = "C:\yhem\sharedisk\share-data01.vmdk" scsi1:3.redo = "" scsi1:4.mode = "independent-persistent" scsi1:4.deviceType = "disk" scsi1:4.present = "TRUE" scsi1:4.fileName = "C:\yhem\sharedisk\share-data02.vmdk" scsi1:4.redo = ""
21. 配置共享存储
#安装依赖
yum install -y device-mapper*
#配置multipath多路径
cp /etc/multipath.conf /etc/multipathbak.conf
/usr/sbin/mpathconf --enable --find_multipaths n
/usr/sbin/mpathconf --with_multipathd y
#获取wwid值
/usr/lib/udev/scsi_id -g -u /dev/sdb
/usr/lib/udev/scsi_id -g -u /dev/sdc
/usr/lib/udev/scsi_id -g -u /dev/sdd
/usr/lib/udev/scsi_id -g -u /dev/sde
/usr/lib/udev/scsi_id -g -u /dev/sdf
#修改对应的wwid值
cat <<EOF>> /etc/multipath.conf
multipaths {
multipath {
wwid "36000c2937b90c7076352bf9ea80349ef"
alias asm_ocr01
}
multipath {
wwid "36000c29e519f7ff69aa453cf2cf29e95"
alias asm_ocr02
}
multipath {
wwid "36000c2962c4b2ddea3f7c8d5ce3630fd"
alias asm_ocr03
}
multipath {
wwid "36000c29918fc19abd85fb37f09b7f8d8"
alias asm_data01
}
multipath {
wwid "36000c2933d80acb97bdf661c83d2eabf"
alias asm_data02
}
}
EOF
#激活multipath多路径 cd /dev/mapper multipath -F multipath -v2 multipath -ll ll /dev/mapper
22. UDEV
rm -rf /dev/mapper/udev_info
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
rm -rf /etc/udev/rules.d/99-oracle-asmdevices.rules
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
#重载udve
udevadm control --reload-rules
udevadm trigger --type=devices
#验证
more /etc/udev/rules.d/99-oracle-asmdevices.rules
ll /dev/asm*
ll /dev/mapper
ll /dev/dm*
23. 解压grid
RAC1
#修改压缩包用户和用户组 cd /u01/sw chown grid:oinstall LINUX.X64_193000_* chown grid:oinstall p* #RAC1: #到grid用户 su - grid #解压 unzip /u01/sw/LINUX.X64_193000_grid_home.zip -d $ORACLE_HOME
26. 解压cvuqdisk
#root 用户 RAC1: . /home/grid/.bash_profile cd $ORACLE_HOME/cv/rpm export CVUQDISK_GRP=oinstall rpm -ivh cvuqdisk-1.0.10-1.rpm scp cvuqdisk-1.0.10-1.rpm rac2:/tmp RAC2: cd /tmp export CVUQDISK_GRP=oinstall rpm -ivh cvuqdisk-1.0.10-1.rpm
27. 配置grid用户ssh
#grid用户和oracle用户各执行一遍 mkdir -p ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa (回车-回车-回车) #都是在grid用户下执行 #RAC1: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #选择yes-grid/oracle #验证: cat ~/.ssh/authorized_keys #RAC2: ssh rac1 cat ~/.ssh/authorized_keys >> ~/.ssh/authorized_keys cat ~/.ssh/authorized_keys #验证 ssh rac2 ssh rac1
28. 安装grid前进行检查
cd $ORACLE_HOME ./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose
29. 执行安装
cd $ORACLE_HOME #静默安装 #同时安装补丁 -applyRU /u01/sw/ru/32545008/ ./gridSetup.sh -ignorePrereq -silent -force -responseFile ./install/response/gridsetup.rsp \ INVENTORY_LOCATION=/u01/app/oraInventory \ oracle.install.option=CRS_CONFIG \ ORACLE_BASE=/u01/app/grid \ oracle.install.asm.OSDBA=asmdba \ oracle.install.asm.OSOPER=asmoper \ oracle.install.asm.OSASM=asmadmin \ oracle.install.crs.config.scanType=LOCAL_SCAN \ oracle.install.crs.config.gpnp.scanName=rac-scan \ oracle.install.crs.config.gpnp.scanPort=1521 \ oracle.install.crs.config.ClusterConfiguration=STANDALONE \ oracle.install.crs.config.configureAsExtendedCluster=false \ oracle.install.crs.config.clusterName=rac-scan \ oracle.install.crs.config.gpnp.configureGNS=false \ oracle.install.crs.config.autoConfigureClusterNodeVIP=false \ oracle.install.crs.config.clusterNodes=rac1:rac1-vip,rac2:rac2-vip \ oracle.install.crs.config.networkInterfaceList=ens33:192.168.126.0:1,ens34:192.168.21.0:5 \ oracle.install.crs.configureGIMR=false \ oracle.install.asm.configureGIMRDataDG=false \ oracle.install.crs.config.storageOption=CLIENT_ASM_STORAGE \ oracle.install.crs.config.useIPMI=false \ oracle.install.asm.SYSASMPassword=Password_123 \ oracle.install.asm.diskGroup.name=data \ oracle.install.asm.diskGroup.redundancy=EXTERNAL \ oracle.install.asm.diskGroup.AUSize=4 \ oracle.install.asm.diskGroup.disks=/dev/mapper/asm_ocr01,/dev/mapper/asm_ocr02,/dev/mapper/asm_ocr03 \ oracle.install.asm.diskGroup.diskDiscoveryString=/dev/mapper/asm* \ oracle.install.asm.monitorPassword=Password_123 \ oracle.install.asm.configureAFD=false \ oracle.install.config.managementOption=NONE \ oracle.install.config.omsPort=0 \ oracle.install.crs.rootconfig.executeRootScript=false \ oracle.install.crs.rootconfig.configMethod=ROOT #可以使用tail -100f +文件 实时查看情况
30. root执行脚本
在两个节点先执行脚本1 . /u01/app/oraInventory/orainstRoot.sh #再执行脚本2 . /u01/app/19.3.0/grid/root.sh #可以另起会话查看日志 tail -100f /u01/app/19.3.0/grid/install/root_oracle19c-rac1_2022-11-24_17-00-38-566160159.log
31. 检查
crsctl stat res -t systemctl status oracle-ohasd.service
32. 创建磁盘组
第1种:使用sql创建 [grid@rac1:/home/grid]$ sqlplus / as sysasm create diskgroup data2 external redundancy disk '/dev/mapper/asm_data01' ATTRIBUTE 'compatible.asm' = '19.0.0.0' ATTRIBUTE 'au_size' = '4M'; 第2种:使用asmcmd命令创建 vim /u01/app/dg.xml <dg name="data2" redundancy="external"> <dsk string="/dev/mapper/asm_data01"/> <a name="compatible.asm" value="19.0"/> <a name="compatible.rdbms" value="19.0"/> <a name="compatible.advm" value="19.0"/> </dg> #grid用户下: asmcmd mkdg /u01/app/dg.xml 第3种:利用asmca创建磁盘组(推荐使用) asmca -h 查看用法 #使用静默的方式创建磁盘组 asmca -silent -createDiskGroup -diskGroupName dg_data -diskList '/dev/mapper/asm_data01,/dev/mapper/asm_data02' -redundancy EXTERNAL -au_size 4 -compatible.asm '19.0.0.0' -compatible.rdbms '12.1.0.2' -compatible.advm '19.0.0.0' [INFO] [DBT-30001] Disk groups created successfully. Check /u01/app/grid/cfgtoollogs/asmca/asmca-221206AM100449.log for details.
33. 解压oracle安装包
#修改安装包权限 chown oracle:oinstall /u01/sw/LINUX.X64_193000_db_home.zip chown oracle:oinstall /u01/sw/p* #切换到oracle用户 su - oracle #解压压缩包到ORACLE_HOMEORACLE_HOME unzip /u01/sw/LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
35. 安装oracle软件
./runInstaller -ignorePrereq -silent -responseFile $ORACLE_HOME/install/response/db_install.rsp \ oracle.install.option=INSTALL_DB_SWONLY \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=/u01/app/oraInventory \ ORACLE_BASE=/u01/app/oracle \ oracle.install.db.InstallEdition=EE \ oracle.install.db.OSDBA_GROUP=dba \ oracle.install.db.OSOPER_GROUP=oper \ oracle.install.db.OSBACKUPDBA_GROUP=backupdba \ oracle.install.db.OSDGDBA_GROUP=dgdba \ oracle.install.db.OSKMDBA_GROUP=kmdba \ oracle.install.db.OSRACDBA_GROUP=racdba \ oracle.install.db.rootconfig.executeRootScript=false \ oracle.install.db.CLUSTER_NODES=rac1,rac2
#执行脚本
. /u01/app/oracle/product/19.3.0/dbhome_1/root.sh
36. 创建实例
#修改响应文件
vim $ORACLE_HOME/assistants/dbca/dbca.rsp
\
gdbName=testcdb \
sid=testcdb \
databaseConfigType=RAC \
policyManaged=FALSE \
createServerPool=FALSE \
createAsContainerDatabase=true \
numberOfPDBs=1 \
pdbName=test \
useLocalUndoForPDBs=true \
pdbAdminPassword=Password_123 \
nodelist=rac1,rac2 \
templateName=/u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc \
datafileDestination=DG_DATA \
sysPassword=Password_123 \
systemPassword=Password_123 \
runCVUChecks=true \
dbsnmpPassword=Password_123 \
dvConfiguration=False \
olsConfiguration=False \
datafileJarLocation=/u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/templates/ \
datafileDestination=DG_DATA \
storageType=ASM \
diskGroupName=+DG_DATA/{DB_UNIQUE_NAME}/ \
asmsnmpPassword=Password_123 \
recoveryGroupName=+DG_DATA/{DB_UNIQUE_NAME}/ \
characterSet=ZHS16GBK \
nationalCharacterSet=AL16UTF16
#创建实例
cd $ORACLE_HOME/assistants/dbca
dbca -silent -ignorePrereqFailure -createDatabase -responseFile $ORACLE_HOME/assistants/dbca/dbca1.rsp
浙公网安备 33010602011771号