oracle 11g安装预检查失败主因是依赖包缺失或版本不匹配,需用rpm -q精准识别缺失包,区分可忽略(如sysstat)与不可忽略项(如libaio、glibc),并按系统版本执行对应安装命令,最后通过ldd和ls -l验证符号链接及库加载有效性。

直接装不上,八成是依赖包没齐。Oracle 安装器在预检查阶段卡住,不是“系统不行”,而是它默认只认 RPM 包名+版本号的精确匹配,稍有偏差就报 PRVF-0040 或 package xxx not found —— 但很多缺失根本不用慌,补上就行。
查清楚到底缺什么,别靠猜
安装界面报错只说“libaio missing”,但实际可能是 libaio.so.1 找不到,也可能是 libaio-devel 没装(静默安装需要)。最准的办法是进终端手动查:
- 运行
rpm -q libaio glibc libstdc++ unixODBC,看哪些返回package xxx is not installed - 如果已装但版本高(比如系统自带
libaio-0.3.112-1.el8,而 Oracle 检查器只认0.3.107),它也会报错 —— 这时不是真缺,是校验逻辑太老 - 对图形安装器(
runInstaller),额外跑一遍ldd $ORACLE_HOME/oui/bin/runInstaller | grep "not found",能暴露libxcb.so.1、libXtst.so.6这类隐藏依赖
不同系统,装法不能一套打天下
同一个包名,在 RHEL 7、RHEL 8、麒麟 V10 上安装命令可能完全不同,硬套 yum install libxcb 很容易失败:
- RHEL/CentOS 7:
yum install -y libxcb libX11 libXau libXi libXtst libXrender - RHEL/CentOS 8+:
dnf module enable xcb && dnf install -y libxcb(不先enable,dnf install会找不到包) - Oracle Linux 8:
yum install -y libnsl(不是compat-libnsl,后者不存在) - 银河麒麟 V10:
yum search xcb先确认真实包名(常为libxcb1或libxcb-xinerama0),再装 - Ubuntu/Debian:
apt-get install libaio1 libstdc++6 libxcb1 libx11-6 libxtst6
哪些包能忽略,哪些绝对不能动
--ignorePrereq 不是万能膏药,它跳过的是预检查,不是运行时。用错地方,装完启动就崩:
- 可以安全忽略的(不影响实例启动):
sysstat、smartmontools、bc—— Oracle 官方白名单里明确写了这些只是“验证用” - 绝不能忽略的:
libaio(异步 I/O)、glibc(版本必须 ≥ Oracle 要求)、libstdc++、unixODBC(启用 ODBC 时)—— 忽略后大概率报ORA-27123或libaio.so.1: cannot open shared object file - 图形安装器还多一条:没
libxcb.so.1,runInstaller直接起不来,报error while loading shared libraries: libxcb.so.1: cannot open shared object file
装完别急着点下一步,验证比安装更关键
依赖装完,不代表 Oracle 就能用。很多问题要到启动监听器或建库时才暴露:
- 检查符号链接是否有效:
ls -l /usr/lib64/libxcb.so.1,目标文件必须存在,不能是断链 - 确认动态链接器能加载:
ldd $ORACLE_HOME/bin/oracle | grep libaio,输出应为libaio.so.1 => /usr/lib64/libaio.so.1,不是not found - 特别注意
libnsl:RHEL 8+ 上若用ln -s /lib64/libnsl.so.2.0.0 /lib64/libnsl.so.1硬凑,后续tnsping会静默失败(TNS-12545),必须重装官方libnsl包
最容易被跳过的其实是验证环节 —— 装完包就点“下一步”,结果监听器起不来、sqlplus连不上,回头再查,发现是 libxcb 没配全或者 libnsl 被软链接搞坏了。花两分钟跑一遍 ldd 和 ls -l,比装三次重来省时间。











