首页 > 数据库 >Oracle 19c RAC安装报错如何解决?检查操作系统内核参数

Oracle 19c RAC安装报错如何解决?检查操作系统内核参数

来源:互联网 2026-04-20 16:58:04

Oracle 19c RAC安装时提示“kernel parameter check failed”怎么处理 在安装Oracle 19c RAC时遇到内核参数检查失败,首先应查看安装日志。Oracle安装程序(runinstaller)在预检阶段会核对 /proc/sys/ 下的实时内核参数值,任何

Oracle 19c RAC安装时提示“kernel parameter check failed”怎么处理

在安装Oracle 19c RAC时遇到内核参数检查失败,首先应查看安装日志。Oracle安装程序(runinstaller)在预检阶段会核对 /proc/sys/ 下的实时内核参数值,任何一项不达标都会导致安装中断。错误信息会明确指出是哪个参数、当前值以及期望值。

在RAC环境中,部分参数的要求比单机安装更为严格。常见的关键参数包括 net.ipv4.ip_local_port_rangefs.file-max,以及共享内存相关的 kernel.shmallkernel.shmmax。特别需要注意的是 kernel.sem,其四个字段(semmsl, semmns, semopm, semmni)必须整体满足Oracle 19c RAC的特定要求,文档给出的最低值为 250 32000 100 142

长期稳定更新的攒劲资源: >>>点此立即查看<<<

  • 修改前,建议先用 sysctl -p 命令确认系统当前生效的参数值。
  • 修改配置文件后,必须执行 sysctl -p 使更改生效,否则重启前参数不会更新,RAC安装程序不会自动重载。
  • 对于较新的Oracle Linux 8等系统,可能使用systemd-sysctl服务管理参数,需检查 /etc/sysctl.d/99-oracle-rac.conf 等文件的加载顺序,避免被其他配置覆盖。

修改 /etc/sysctl.conf 后参数为何不生效

原因在于RAC安装脚本读取的是内核的实时运行值,而非配置文件的静态内容。常见误区是仅编辑了文件,却未使修改生效或未进行二次验证。

正确的操作与验证流程如下:
首先,使用 sysctl -w parameter=value 命令使参数临时生效(例如 sysctl -w kernel.shmmax=4398046511104)。
接着,立即使用 sysctl parameter 命令(如 sysctl kernel.shmmax)查看输出,确认值已匹配。
最后,将参数写入 /etc/sysctl.conf 并执行 sysctl -p 以实现持久化。

  • 注意,sysctl -p 默认仅加载 /etc/sysctl.conf 文件,不一定包含 /etc/sysctl.d/ 目录下的配置,具体取决于系统设置。
  • 对于Oracle Linux 8等发行版,建议检查 systemd-sysctl 服务状态:systemctl status systemd-sysctl
  • RAC所有节点间的内核参数必须完全一致。稳妥的做法是,使用 scp 同步配置文件后,在每个节点上分别执行 sysctl -p

如何安全计算 kernel.shmallkernel.shmmax 的值

这两个参数不能随意设置过大的值。它们需要与服务器物理内存及规划的SGA大小精确匹配,设置过大可能导致内核拒绝分配内存。

  • kernel.shmmax 定义了单个共享内存段的最大值,应大于或等于单个Oracle实例的最大SGA。例如计划配置32G的SGA,则该值至少应设为 34359738368(即32 × 1024)。
  • kernel.shmall 的单位是内存页(Page),默认页大小为4KB。计算公式为:(物理内存总字节数) / 4096。以一台128G内存的服务器为例,计算过程为 (128 × 1024) / 4096 = 33554432
  • 关键点在于:RAC是多实例共享内存架构,因此 shmall 这个“共享内存页总数”上限,必须能覆盖所有实例的SGA总和,而不能仅按单个实例计算。
  • 虽然Oracle 19c官方文档给出的 shmall 最低要求为 2097152,但这仅是安装门槛。对于实际生产环境,此值通常远远不够。

检查发现 fs.aio-max-nr 报错但文档未提及,是否需要调整

需要调整,且必须调整。尽管在Oracle 19c的官方安装检查清单中,fs.aio-max-nr(异步I/O最大请求数)未被列为“强制参数”,但RAC的ASM实例高度依赖异步I/O。实际上,安装程序的校验逻辑包含了该参数,且设定的阈值为 1048576(即104万)。

典型现象是安装界面卡在“检查操作系统要求”步骤,后台日志明确提示:fs.aio-max-nr = xxxxxx, required: 1048576

  • 此参数的特殊之处在于:不能像大多数参数那样通过 sysctl -w 命令动态调高(受内核限制)。必须将其写入 /etc/sysctl.conf,然后通过重启系统或触发重载机制来生效。
  • 在一些较旧的内核版本(如RHEL/CentOS 7.6之前)中,即使设置也可能无效。建议先确认内核版本:uname -r 最好不低于 3.10.0-957
  • 如果使用UEK内核,还需确认 aio 内核模块已加载:lsmod | grep aio

另一个极易忽略的细节是:RAC的安装检查脚本对参数名的大小写和格式极其敏感fs.aio-max-nr 必须原样书写,不能写成 fs.aio_max_nr 或漏掉连字符——即使仅一个字符的差异,也会导致检查失败。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。