Oracle 12c 在 AIX 上必须启用异步 I/O,因其 DBWn 等后台进程依赖该机制写入数据文件;未启用会导致 ORA-27090 错误、实例启动失败、静默安装退出,且需通过 smit chgaio 和 smit aio 配置并重启生效,仅 cfgmgr 不足。
在 aix 上安装 oracle 12c,aio 必须启用且配置正确,否则 oraagent.bin 启动失败、实例无法启动,甚至静默安装中途报错退出——这不是可选项,是硬性前提。
为什么 Oracle 12c 在 AIX 上必须启用异步 I/O
Oracle 12c 的后台进程(如 DBWn)默认依赖异步 I/O 进行数据文件写入。AIX 默认不启用 aio,若跳过此步:
-
ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O是最常见错误 - 数据库实例启动时卡在
ORACLE_HOME/rdbms/admin/catbundle.sql阶段 - 即使安装完成,
sqlplus / as sysdba后执行startup仍失败
注意:libaio 包在 AIX 上不存在,不要尝试 yum 或 rpm 安装——AIX 使用原生 aio 子系统,由内核模块和 SMIT 工具管理。
用 smit 启用并验证 aio 状态
必须以 root 用户操作,且需重启生效:
- 运行
smit chgaio→ 将 “STATE to be configured at next reboot” 改为available - 再运行
smit aio→ 选择 “Configure Defined Asynchronous I/O” 并回车 - 执行
shutdown -Fr重启系统(-F强制,-r重启) - 重启后验证:
lsattr -El aio0应返回available;lsdev -C -c aio应显示aio0 Available Asynchronous I/O
别跳过重启——仅运行 mkdev -l aio0 或 cfgmgr 不足以让 Oracle 识别已启用的 aio。
调整 AIX 系统资源限制(limits.conf 不起作用)
AIX 没有 /etc/security/limits.conf,用户级限制通过 chuser 和 /etc/security/limits 设置:
- 创建 oracle 用户前,先确保
soft nofile和hard nofile≥ 65536:chuser nofiles=65536 oracle - 检查当前值:
lsuser -a nofiles oracle - 设置堆栈大小:
chuser stack=10240 oracle - 确认
oracle用户属于dba和oinstall组:id oracle输出中应含groups=...dba,oinstall
注意:nproc(最大进程数)在 AIX 中对应 maxuproc,需设为 ≥ 16384:chuser maxuproc=16384 oracle。该值若过小,安装时会卡在 runInstaller 图形检测阶段(即使静默安装也会校验)。
内核参数与 Oracle 安装前的最后检查
AIX 的内核参数不通过 /etc/sysctl.conf 调整,而是用 vmo、no、nfso 命令:
- 共享内存:确保
vmo -p -o shmmni=4096、vmo -p -o shmmax=4294967296(≥4GB) - 信号量:
no -p -o semmni=4096 -o semmns=32000 -o semmsl=250 - 异步 I/O 队列深度(关键):
iostat -a查看磁盘支持的maxreqs,Oracle 要求每个磁盘maxreqs ≥ 128;若不足,需在smitty iointr中调高 - 验证所有设置:
su - oracle -c "ulimit -a"必须显示open files≥ 65536,stack size≥ 10240 KB
最容易被忽略的是 maxreqs ——它不随 aio 启用自动提升,必须手动检查并调优,否则数据库写入性能断崖式下降,且 ORA-00600 内部错误可能在高并发时突然出现。











