「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战」
最新解决方案: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执行失败。
)
可参照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 <GI_HOME>/lib/asmcmdbase.pm (Doc ID 2748316.1)
解决方案:
1 | bash复制代码/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 | sql复制代码1.解压OPatch补丁包 |
下一节主要介绍环境配置中需要注意的一些细节,请参考。
四、环境配置注意点
1.Reverse Path Filtering(rp_filter)
关于如何设置rp_filter,可以参照MOS文档和官方文档:
RAC and Oracle Clusterware Best Practices and Starter Kit (Linux) (Doc ID 811306.1)
1 | ini复制代码对于Linux Kernels 2.6.31(包括例如Oracle Linux和RedHat)及更高版本,在反向路径过滤中已修复了一个错误。 由于此错误修复,可能会在多互连系统上阻止/丢弃互连数据包。 为避免这种情况,使用多个NIC进行专用互连的Oracle RAC系统现在需要rp_filter参数的特定设置。 |
2.Memlock&&HugePages
关于如何设置标准大页HugePages内存,可以参照MOS文档和官方文档:
What is Memlock and How to Calculate the Values for Memlock? (Doc ID 2511230.1)
一般在安装部署时,由于无法估算应用对标准大页的需要,因此通常是禁用HugePages内存,当禁用HugePages内存时,最大锁定内存限制应设置为至少3145728 KB(3 GB)。
1 | bash复制代码cat <<EOF >>/etc/security/limits.conf |
关于启用大页内存的一些限制:
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 | bash复制代码1.运行以下命令以确定内核是否支持HugePages: |
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) ***
关于透明大页,oracle的建议:如果您正在运行RedHat / OEL 6/7,SLES 11/12或UEK2内核,请确保禁用“透明HugePages”以防止性能问题和节点/实例驱逐。
关闭透明大页有两种方式,分别为:
a.在/etc/rc.local中添加以下行并重新启动服务器(尽管不建议使用rc.local,但仍可以在Redhat 7上完成此操作),该方法linux6和7通用:
1 | typescript复制代码root用户下: |
b.将以下内容添加到/etc/default/grub(到/boot/grub/grub.conf的符号链接)的内核引导行中,然后重新引导服务器(这是首选方法),但只支持linux7以上:
这里禁用numa也是同样的设置方式:
1 | bash复制代码1.添加关闭命令到/etc/grub.conf文件中,添加在quiet后面: |
4.Disk I/O Scheduler
关于设置Disk I/O Scheduler,可参考官方文档:
为了获得Oracle ASM的最佳性能,Oracle建议您使用Deadline I/O Scheduler。
在每个群集节点上,输入以下命令以验证是否配置了Deadline disk I/O调度程序以供使用:
1 | shell复制代码# cat /sys/block/${ASM_DISK}/queue/scheduler |
在此示例中,默认磁盘 I/O 调度程序为Deadline,而ASM_DISK为Oracle自动存储管理(Oracle ASM)磁盘设备。
如果输出为空:
_Notes:_在某些虚拟环境(VM)和特殊设备(例如快速存储设备)上,上述命令的输出可能为空。 操作系统或VM绕过内核 I/O 调度,并将所有 I/O 请求直接提交给设备。 在这种环境下,请勿更改 I/O Scheduler设置。
接下来,我们来设置一下Disk I/O Scheduler:
1 | ruby复制代码1.使用文本编辑器为Oracle ASM设备创建一个UDEV规则文件,将以下行添加到规则文件并保存: |
5.ORACLE_HOSTNAME环境变量
可参照官方文档:
您必须设置ORACLE_HOSTNAME环境变量才能在多别名计算机上安装Oracle数据库。 多别名计算机是多个别名解析到的计算机。
具有多个别名的计算机是在单个IP地址下向命名服务注册的计算机,但是它将多个别名解析为该地址。 命名服务将这些别名中的任何一个解析到同一台计算机。 在此类计算机上安装Oracle数据库之前,请将Oracle安装所有者环境变量ORACLE_HOSTNAME设置为要使用其主机名的计算机。
1 | bash复制代码cat <<EOF >> /home/oracle/.bash_profile |
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) ***
1 | bash复制代码1.关闭并禁用avahi-daemon服务 |
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) **
1 | html复制代码Rediscovery Notes |
1 | bash复制代码cat <<EOF >> /etc/fstab |
_Notes:_Mos建议我们可以忽略该提示,这里我们可以手动添加到fstab文件中,即可。
本文转载自: 掘金