12CR2 RAC安装避坑指南(Redhat7)

网友投稿 636 2022-05-29

最新解决方案:Oracle集成基础安装包+补丁包

一、导读

本文主要介绍Redhat7.6系统安装oracle 12201版本RAC的一些坑以及避坑方式。绝对干货满满,物超所值,欢迎补充和纠错。

二、环境介绍

OS:_redhat 7.6 64位(3.10.0-957.el7.x86_64)

ORACLE:_12CR2 RAC

三、避坑指南

Notes:坑点主要位于Grid软件安装步骤中cvu的check和root.sh执行。

接下来是本篇文章的重点以及主旨,简单直接:

坑1:ASM device sharedness check

Shared Storage Accessibility:/dev/asm_ocr …FAILED (PRVG-11506)

可参照MOS文档:

12.2: PRVG-0802 : Storage type for path “/dev/mapper/asm011p1” could not be determined (Doc ID 2251322.1)

这里先不说解决方案,mos建议是打补丁:Apply patch 25784424, if CVU storage check fails for ASMLib paths 。

坑2:CLSRSC-400: A system reboot is required to continue installing.

此坑简直为巨坑无比,root.sh执行到进度14/19时,突然停止并且报错****CLSRSC-400,让我重启主机系统,重启之后安装已经终止了,无奈卸载重装依然报错。

可参照MOS文档:

ALERT: root.sh Fails With “CLSRSC-400” While Installing GI 12.2.0.1 on RHEL or OL with RedHat Compatible Kernel (RHCK) 7.3 (Doc ID 2284463.1)

这里先不说解决方案,mos建议是通过applyOneOffs打补丁:Interim patch 25078431 is required before installing 12.2 GI on Linux 7.3 (RedHat and OL7 with RHCK).

坑3:kgfnGetConnDetails requires 4 parameters at/u01/app/12.2.0/grid/lib/asmcmdbase.pm line 5704.

此坑是修复以上两个坑之后,root.sh执行到进度19/19时,突然停止,并报错如上,显示root.sh执行失败。

12CR2 RAC安装避坑指南(Redhat7)

可参照MOS文档:

install.sh Hung And root.sh Is Failing At asmcmd lsdg --suppressheader While Installing A Zone With Clusterware (Doc ID 2414241.1)

ASMCMD Failing With "KGFNGETCONNDETAILS Requires 4 Parameters at /lib/asmcmdbase.pm (Doc ID 2748316.1)

解决方案:

/usr/bin/make -f /u01/app/12.2.0/grid/rdbms/lib/ins_rdbms.mk client_sharedlib libasmclntsh12.ohso libasmperl12.ohso ORACLE_HOME=/u01/app/12.2.0/grid

1.如果已经遇到该错误,那么执行以上命令之后,重新执行root.sh即可,如果提前看到了本文,请按方法2提前执行;

2.__出现执行root.sh提示框之时执行以上命令,需在两个节点以root身份执行该命令,GRID_HOME路径请根据实际情况填写

所有节点执行完之后,再执行root.sh。

最后来总结以下坑1、2的解决方案:

参考MOS文档:

How to Apply a Grid Infrastructure Patch Before Grid Infrastructure Configuration (before root.sh or rootupgrade.sh or gridsetup.bat) is Executed (Doc ID 1410202.1)

通过12C开始支持的 applyPSU 方式,提前给Grid软件打上最新的补丁,修复坑1,2的bug:

1.解压OPatch补丁包 $ su - grid -c "unzip /soft/p6880880_122010_Linux-x86-64.zip -d /u01/app/12.2.0/grid/" Notes:选择A 2.查看OPatch补丁包版本 $ su - grid -c "/u01/app/12.2.0/grid/OPatch/opatch version" OPatch Version: 12.2.0.1.24 3.解压最新PSU补丁 $ su - grid -c "unzip /soft/p32226491_122010_Linux-x86-64.zip -d /soft" 4.执行grid安装 $ ./gridSetup.sh -applyPSU /soft/32226491 Preparing the home to patch... Applying the patch /soft/32226491/... Successfully applied the patch. The log can be found at: /u01/app/oraInventory/logs/GridSetupActions2021-04-01_04-18-54PM/installerPatchActions_2021-04-01_04-18-54PM.log Launching Oracle Grid Infrastructure Setup Wizard... 5.安装grid成功之后查看补丁 $ opatch lspatches 26839277;DBWLM RELEASE UPDATE 12.2.0.1.0(ID:170913) (26839277) 32231681;ACFS JAN 2021 RELEASE UPDATE 12.2.0.1.210119 (32231681) 32253903;TOMCAT RELEASE UPDATE 12.2.0.1.0(ID:RELEASE) (32253903) 31802727;OCW OCT 2020 RELEASE UPDATE 12.2.0.1.201020 (31802727) 32228578;Database Jan 2021 Release Update : 12.2.0.1.210119 (32228578) OPatch succeeded.

下一节主要介绍环境配置中需要注意的一些细节,请参考。

四、环境配置注意点

1.Reverse Path Filtering(rp_filter)

关于如何设置rp_filter,可以参照MOS文档和官方文档:

RAC and Oracle Clusterware Best Practices and Starter Kit (Linux) (Doc ID 811306.1)

https://docs.oracle.com/database/121/CWLIN/networks.htm#CWLIN481

对于Linux Kernels 2.6.31(包括例如Oracle Linux和RedHat)及更高版本,在反向路径过滤中已修复了一个错误。 由于此错误修复,可能会在多互连系统上阻止/丢弃互连数据包。 为避免这种情况,使用多个NIC进行专用互连的Oracle RAC系统现在需要rp_filter参数的特定设置。 例如,在eth1和eth2是专用互连NIC,而eth0是公用网络NIC的情况下,请设置/etc/sysctl.conf中的参数将专用地址的rp_filter设置为2(宽松过滤),将公用地址的rp_filter设置为1(严格过滤): net.ipv4.conf.eth2.rp_filter = 2 net.ipv4.conf.eth1.rp_filter = 2 net.ipv4.conf.eth0.rp_filter = 1

**2.**Memlock&&HugePages

关于如何设置标准大页HugePages内存,可以参照MOS文档和官方文档:

What is Memlock and How to Calculate the Values for Memlock? (Doc ID 2511230.1)

https://docs.oracle.com/database/121/UNXAR/appi_vlm.htm#UNXAR402

一般在安装部署时,由于无法估算应用对标准大页的需要,因此通常是禁用HugePages内存,当禁用HugePages内存时,最大锁定内存限制应设置为至少3145728 KB(3 GB)。

cat <>/etc/security/limits.conf oracle soft memlock 3145728 oracle hard memlock 3145728 grid soft memlock 3145728 grid hard memlock 3145728 EOF

关于启用大页内存的一些限制:

a.自动内存管理(AMM)和HugePages不兼容。 使用AMM时,通过在/ dev / shm下创建文件来分配整个SGA内存。 当Oracle数据库通过AMM分配SGA时,不会保留HugePages。 要在Oracle Database 12c上使用HugePages,必须禁用AMM。

b.您必须取消设置MEMORY_TARGET和MEMORY_MAX_TARGET初始化参数。 例如,要取消设置数据库实例的参数,请使用命令ALTER SYSTEM RESET。

c.确保正确配置了HugePages,因为如果应用程序未使用过多的HugePages,则系统可能会耗尽内存。

d.如果实例启动时HugePages不足,并且初始化参数use_large_pages设置为only,则数据库无法启动,并且警报日志消息会提供有关Hugepages的必要信息。

在已知风险和限制条件下,如果要启用HugePages,通过以下步骤来看看如何设置hugepages,假设我们现在内存为256G:

1.运行以下命令以确定内核是否支持HugePages: $ grep Huge /proc/meminfo 2.使用root用户编辑/etc/security/limits.conf文件中的memlock设置。 内存锁设置以KB为单位指定,启用HugePages内存时,最大锁定内存限制应设置为当前RAM的至少90%,禁用HugePages内存时,最大锁定内存限制应设置为至少3145728 KB(3 GB)。 例如,我们是 256 GB RAM,则添加以下条目以增加最大的内存锁定地址空间:(256GB*0.9*1024*1024=241591910.4KB) cat <>/etc/security/limits.conf oracle soft memlock 241591910 oracle hard memlock 241591910 grid soft memlock 241591910 grid hard memlock 241591910 EOF 3.内存锁设置后以oracle用户身份登录并运行ulimit -l命令以验证新的内存锁设置: $ ulimit -l 241591910 4.运行以下命令以显示Hugepagesize变量的值: $ grep Hugepagesize /proc/meminfo 5.通过Oracle官方文档提供的一个脚本,该脚本为当前共享内存段的大页配置计算推荐值: a.创建shell脚本hugepages_settings.sh b.添加以下脚本内容: #!/bin/bash # # hugepages_settings.sh # # Linux bash script to compute values for the # recommended HugePages/HugeTLB configuration # # Note: This script does calculation for all shared memory # segments available when the script is run, no matter it # is an Oracle RDBMS shared memory segment or not. # Check for the kernel version KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'` # Find out the HugePage size HPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}` # Start from 1 pages to be on the safe side and guarantee 1 free HugePage NUM_PG=1 # Cumulative number of pages required to handle the running shared memory segments for SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "[0-9][0-9]*"` do MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q` if [ $MIN_PG -gt 0 ]; then NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q` fi done # Finish with results case $KERN in '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`; echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;; '2.6'|'3.8') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;; *) echo "Unrecognized kernel version $KERN. Exiting." ;; esac # End c.授予shell脚本执行权限 $ chmod +x hugepages_settings.sh d.运行hugepages_settings.sh脚本来计算hugepages配置的值: $ ./hugepages_settings.sh Notes:在运行此脚本之前,请确保运行使用大页面的所有应用程序。 6.设置以下内核参数,其中value是您在步骤5中确定的HugePages值: # sysctl -w vm.nr_hugepages=value 7.要确保在系统重新启动后分配了HugePages,请将以下参数添加到/etc/sysctl.conf文件中,其中value是您在步骤5中确定的HugePages值: vm.nr_hugepages=value Notes:如果无法使用nr_hugepages设置HugePages分配,则可用内存可能会碎片化。 重新启动服务器,以使Hugepages分配生效。 8.运行以下命令以检查可用的大页面: $ grep Huge /proc/meminfo 9.重新启动实例。

3.Transparent HugePages&&NUMA

为什么要把Transparent HugePages和NUMA放在一起讲呢?很简单,因为他们的配置方法是相同的,请参考MOS文档和官方文档:

**ALERT: Disable Transparent HugePages on SLES11, RHEL6, RHEL7, OL6, OL7, and UEK2 and above (Doc ID 1557478.1)    **

https://docs.oracle.com/database/121/UNXAR/appi_vlm.htm#UNXAR428

关于透明大页,oracle的建议:如果您正在运行RedHat / OEL 6/7,SLES 11/12或UEK2内核,请确保禁用“透明HugePages”以防止性能问题和节点/实例驱逐。

关闭透明大页有两种方式,分别为:

a.在/etc/rc.local中添加以下行并重新启动服务器(尽管不建议使用rc.local,但仍可以在Redhat 7上完成此操作),该方法linux6和7通用:

root用户下: cat <> /etc/rc.local if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi EOF Notes:redhat7需要授予rc.local执行权限: chmod +x /etc/rc.local

b.将以下内容添加到/etc/default/grub(到/boot/grub/grub.conf的符号链接)的内核引导行中,然后重新引导服务器(这是首选方法),但只支持linux7以上:

这里禁用numa也是同样的设置方式:

1.添加关闭命令到/etc/grub.conf文件中,添加在quiet后面: sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub 2.重新引导服务器 a.MBR分区 $ grub2-mkconfig -o /etc/grub2.cfg b.GPT分区表 $grub2-mkconfig -o /etc/grub2-efi.cfg Notes:需要注意系统主分区的引导方式,MBR还是GPT,可以通过fdisk -l查看主分区的Disk label type值。 3.重启服务器 4.查看配置是否生效 $ cat /proc/cmdline

4.Disk I/O Scheduler

关于设置Disk I/O Scheduler,可参考官方文档:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ladbi/setting-the-disk-io-scheduler-on-linux.html#GUID-B59FCEFB-20F9-4E64-8155-7A61B38D8CDF

为了获得Oracle ASM的最佳性能,Oracle建议您使用Deadline I/O Scheduler。

在每个群集节点上,输入以下命令以验证是否配置了Deadline disk I/O调度程序以供使用:

# cat /sys/block/${ASM_DISK}/queue/scheduler noop [deadline] cfq

在此示例中,默认磁盘 I/O 调度程序为Deadline,而ASM_DISK为Oracle自动存储管理(Oracle ASM)磁盘设备。

如果输出为空:

_Notes:_在某些虚拟环境(VM)和特殊设备(例如快速存储设备)上,上述命令的输出可能为空。 操作系统或VM绕过内核 I/O 调度,并将所有 I/O 请求直接提交给设备。 在这种环境下,请勿更改 I/O Scheduler设置。

接下来,我们来设置一下Disk I/O Scheduler:

1.使用文本编辑器为Oracle ASM设备创建一个UDEV规则文件,将以下行添加到规则文件并保存: # cat</etc/udev/rules.d/60-oracle-schedulers.rules ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline" EOF 2.如果是RAC集群,需要将规则文件复制到集群上的所有其他节点。 例如: $ scp 60-oracle-schedulers.rules root@node2:/etc/udev/rules.d/ 3.加载规则文件并重新启动UDEV服务 # udevadm control --reload-rules 4.验证磁盘 I/O 调度程序已设置为Deadline # cat /sys/block/${ASM_DISK}/queue/scheduler

5.ORACLE_HOSTNAME环境变量

可参照官方文档:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ladbi/setting-the-oracle_hostname-environment-variable.html#GUID-27DFE5F2-8AAE-4085-8A63-CC6C94F73AA0

您必须设置ORACLE_HOSTNAME环境变量才能在多别名计算机上安装Oracle数据库。 多别名计算机是多个别名解析到的计算机。

具有多个别名的计算机是在单个IP地址下向命名服务注册的计算机,但是它将多个别名解析为该地址。 命名服务将这些别名中的任何一个解析到同一台计算机。 在此类计算机上安装Oracle数据库之前,请将Oracle安装所有者环境变量ORACLE_HOSTNAME设置为要使用其主机名的计算机。

cat <> /home/oracle/.bash_profile $ ORACLE_HOSTNAME=somehost.example.com $ export ORACLE_HOSTNAME EOF

6.AVAHI daemon&&NOZEROCONF

关于配置AVAHI daemon&&NOZEROCONF,可以参照MOS文档和官方文档:

**RAC and Oracle Clusterware Best Practices and Starter Kit (Linux) (Doc ID 811306.1)    **

**CSSD Fails to Join the Cluster After Private Network Recovered if avahi Daemon is up and Running (Doc ID 1501093.1)    **

https://en.wikipedia.org/wiki/Zero-configuration_networking

1.关闭并禁用avahi-daemon服务 systemctl stop avahi-daemon.socket systemctl stop avahi-daemon.service systemctl disable avahi-daemon.service ps -ef|grep avahi-daemon 2.On Oracle Linux/Redhat Linux, "NOZEROCONF=yes" must be included in /etc/sysconfig/network echo "NOZEROCONF=yes" >> /etc/sysconfig/network 3.Once avahi is disabled, restart the stack or reboot the node.

7./dev/shm

关于/dev/shm可参考mos文档:

**Bug 25907259 - Linux:RHEL7: cvu reports /dev/shm not mounted when it is mounted (Doc ID 25907259.8)    **

**Bug 21441387 - CVU reports /dev/shm as NOT mounted when it is mounted (PRVE-0421) (Doc ID 21441387.8)    **

Rediscovery Notes If /dev/shm mount check is performed on RHEL7 Workaround ignore error messages

cat <> /etc/fstab tmpfs /dev/shm tmpfs size=4G 0 0 EOF mount -o remount /dev/shm

Notes:_Mos建议我们可以忽略该提示,这里我们可以手动添加到fstab文件中,即可。

Oracle 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:客服质检,拿来吧你!(一)
下一篇:www服务与ftp服务设计与实现
相关文章