oracle安装报“libaio not found”根本原因是缺失32位兼容库libaio.i686,需在x86_64系统上同时安装libaio(x86_64)和libaio.i686,并执行ldconfig刷新缓存,确保/usr/lib/libaio.so.1与/usr/lib64/libaio.so.1均存在且可被动态链接器识别。

Oracle安装失败,八成是依赖包没装全——不是脚本写错了,而是系统缺库。直接装 libaio、gcc、make 这几样还不够,漏掉 32 位兼容库或版本不匹配,照样报错。
为什么只装 libaio 还会报“cannot open shared object file”?
Oracle 安装程序(尤其 12c/19c)会同时尝试加载 libaio.so.1 的 x86_64 和 i686 版本。即使 /usr/lib64/libaio.so.1 存在,缺了 /usr/lib/libaio.so.1(即 i686 版本),就会卡在链接阶段。
- 运行
uname -m确认是x86_64后,必须补装libaio.i686 - RHEL/CentOS 7/8:执行
yum install -y libaio.i686 - RHEL 8+/9 或 OL 8+:用
dnf install -y libaio.i686;若提示架构不可用,先加参数:dnf --setopt=override_install_lang=all install -y libaio.i686 - 验证是否到位:
ls /usr/lib/libaio.so.1*和ls /usr/lib64/libaio.so.1*都应有输出
哪些包必须成对安装(x86_64 + i686)?
Oracle 不只是读库,还会调用部分 32 位工具链和兼容 ABI 库。只装 64 位,静默安装或 OUI 启动时仍可能失败。
-
glibc.i686、libgcc.i686、libstdc++.i686—— C/C++ 运行时基础 -
compat-libstdc++-33.i686—— Oracle 11g/12c 明确要求的旧 ABI 支持 -
unixODBC.i686—— ODBC 连接校验环节可能触发 - 注意:
libaio-devel和unixODBC-devel一般只需 x86_64,但运行时库必须双架构
安装后仍提示 libaio 加载失败?检查 ldconfig 缓存和路径
装完包不代表动态链接器立刻识别。尤其当 $ORACLE_HOME 是非标准路径,或用普通用户解压介质时,ldconfig 可能没刷新,或 LD_LIBRARY_PATH 没覆盖到 Oracle 二进制所在目录。
- 手动刷新缓存:
ldconfig(无需参数,它会扫描/etc/ld.so.conf.d/和默认路径) - 验证是否生效:
ldd $ORACLE_HOME/bin/oracle | grep aio,应输出类似libaio.so.1 => /usr/lib64/libaio.so.1 (0x...) - 如果仍为空,检查
/usr/lib64/libaio.so.1是否真实存在且可读:ls -l /usr/lib64/libaio.so.1 - 避免手动复制
.so文件到/lib64/—— 版本错配会导致oracle进程启动即segfault
麒麟系统或最小化安装环境,YUM 源配置是前提
没有可用仓库,yum install 直接报 “No package libaio available”。麒麟系统默认源往往不含 Oracle 所需的兼容包,必须先配源。
- 确认当前源是否启用:
yum repolist,看是否有 base、epel 或麒麟官方适配源 - 若无,编辑
/etc/yum.repos.d/kylin.repo或新建 repo 文件,填入可信镜像地址(如麒麟官网或清华源) - 清理缓存:
yum clean all,再试yum install -y libaio libaio.i686 compat-libcap1 - 某些麒麟版本需额外启用 i686 架构支持:
yum --setopt=override_install_lang=all install -y glibc.i686
真正麻烦的不是缺哪个包,而是缺哪一版、缺哪个架构、缺哪一层缓存刷新——三者漏一,libaio not found 就会反复出现。











