oracle 12c 在 aix 上安装失败或卡在 runinstaller 图形检测阶段,八成是因 tcp_sendspace、tcp_recvspace、sb_max 等网络内核参数未达官方下限(如 tcp_sendspace=1048576),须用 no -p/-r 命令持久化配置并重启生效,aix 无 sysctl.conf,全由 no 统一管理。
oracle 12c 在 aix 上安装失败或卡在 runinstaller 图形检测阶段,八成不是 oracle 安装包问题,而是 no 命令没调对网络内核参数——尤其 tcp_sendspace、tcp_recvspace、sb_max 这三个值低于 oracle 推荐下限,会导致静默安装也校验不通过。
为什么 Oracle 安装要动 no 命令而不是 sysctl
AIX 没有 /etc/sysctl.conf,所有网络可调参数都由 no 命令统一管理。它直接操作内核网络子系统(tcpip、udp、ip 等子模块),且分“当前生效”和“重启后持久化”两种模式。Oracle 安装程序会调用内核接口读取这些值,若不达标就中止流程——哪怕你只差 1 字节。
常见错误现象:
-
runInstaller卡在 “Checking network configuration requirements” 长时间无响应 - 静默安装报错:
ERROR: Network configuration check failed,但ifconfig显示 IP 正常 - 安装日志里出现
tcp_sendspace is less than required value
必须设置的 5 个关键 no 参数及其值
Oracle 12c 官方文档明确要求以下参数达到最低阈值(AIX 7.1+ / 7.2 环境):
-
tcp_sendspace=1048576(1MB):低于此值,TCP 发送缓冲区无法承载 Oracle 的大块数据包,导致连接超时 -
tcp_recvspace=1048576(1MB):影响接收窗口大小,过小会严重限制吞吐量 -
sb_max=4194304(4MB):单个套接字最大缓冲区总容量,应 ≥ 4 ×tcp_recvspace -
rfc1323=1:必须启用 TCP 窗口缩放,否则高带宽延迟网络(如跨机房)性能断崖式下降 -
ipqmaxlen=512:IP 输入队列长度,防止丢包;设为-r模式(重启后生效),避免临时修改被覆盖
执行命令(需 root 权限):
no -p -o tcp_sendspace=1048576 no -p -o tcp_recvspace=1048576 no -p -o sb_max=4194304 no -p -o rfc1323=1 no -r -o ipqmaxlen=512
注意:-p 表示永久写入 /etc/tunables/nextboot,-r 表示仅下次启动生效(ipqmaxlen 必须用 -r,否则会报错)。
验证是否生效及常见陷阱
别信命令返回成功就完事——AIX 的 no 命令不会自动刷新运行时值,部分参数需要重启网络子系统或整机重启才真正加载。
- 用
no -L查看所有已持久化的参数,确认值已写入;用no -a | grep tcp_sendspace查看当前运行值 - 如果
no -L有值但no -a显示旧值,说明未重启生效:执行stopsrc -g tcpip; startsrc -g tcpip(部分参数仍需 reboot) - UDP 参数(如
udp_recvspace)虽不影响 Oracle 安装,但若后续启用了 Oracle RAC 或 Data Guard,必须同步设为1048576,否则心跳包丢弃率飙升 - 不要用
chdev -l en0改单网卡参数来替代全局no设置——Oracle 校验的是内核全局值,不是接口级值
接口级调优:当全局不够用时
如果业务网卡(如 en0)跑的是万兆链路或 RDMA 网络,全局参数可能仍不足。此时需叠加接口级配置:
chdev -l en0 -a tcpsendspace=2097152 -a tcprecvspace=2097152 -a rfc1323=1
注意:
- 该命令修改的是设备驱动层参数,优先级高于
no全局设置 - 必须用
smitty chinet或chdev,不能用no对接口生效 - 修改后需
ifconfig en0 down && ifconfig en0 up或重启网络服务 - 接口名务必用
lsdev -Cc if确认,AIX 里可能是ent0、en1等,不是 Linux 的eth0
最易被忽略的一点:AIX 的 no 命令没有回滚机制,改错一个关键参数(比如 sb_max 设太小)可能导致 SSH 连接瞬间中断。操作前务必用 no -a > /tmp/no_before.txt 备份原始状态,并确保控制台直连可用。











