05-静默安装常见报错与解决

文章目录

一、场景切入

生产服务器多数没有图形界面,Xshell 里敲一条命令装完 Oracle,是静默安装的意义。但静默安装报错时没有界面提示,只能靠日志和报错码排查。这篇把安装期出现频率最高的几个报错逐个拆开:报错原文、原因、解决命令、验证方式、预防措施。环境以 RHEL/CentOS 7 + 19c 为主,报错码在 11g/19c 上通用。

二、INS-08101 意外错误

报错现象

复制代码
[INS-08101] Unexpected error occurred while executing the action
'installHomeAndInventoryAction'

原因分析

这是"包装型"报错,真正原因在日志里,常见有四类:/tmp 空间不足或权限异常(OUI 临时目录 /tmp/OraInstall* 无法展开);安装介质解压不完整或下载损坏;用 root 执行了 runInstaller;Central Inventory 目录权限或属组不对。

解决步骤

先看日志尾部真实异常:

bash 复制代码
tail -100 /u01/app/oraInventory/logs/installActions*.log

逐项排查与处理:

bash 复制代码
df -h /tmp                        # 可用空间不足 1G 时清理,或换临时目录
whoami                            # 必须是 oracle
cat /etc/oraInst.loc              # 确认 inventory 位置
chown -R oracle:oinstall /u01/app/oraInventory
unzip -t /tmp/LINUX.X64_193000_db_home.zip | tail -3

/tmp 不够时换目录后重跑安装:

bash 复制代码
mkdir -p /u01/tmp && chmod 777 /u01/tmp; export TMP=/u01/tmp; export TMPDIR=/u01/tmp

介质校验必须输出 No errors detected,否则重新下载解压。

验证

bash 复制代码
grep -i "severe" /u01/app/oraInventory/logs/installActions*.log | tail -5

预防

介质下载后先校验再解压;严格用 oracle 用户执行;保持 /tmp 有 2G 以上可用空间。

三、INS-13013 环境不满足

报错现象

复制代码
[INS-13013] Target environment does not meet some mandatory requirements.
[INS-13013] 目标环境不满足某些强制要求。

原因分析

先决条件检查有失败项:缺依赖包、内核参数不达标、swap 不足、主机名解析失败等。INS-13013 只是汇总结论,必须展开看具体哪项 Failed。

解决步骤

图形界面点开失败项的"查看日志";静默安装直接搜会话日志:

bash 复制代码
grep -A3 -i "failed" /tmp/OraInstall*/installActions*.log | head -40

常见对应:缺包 → yum install -y libaio libaio-devel ksh sysstat;内核参数 → 改 /etc/sysctl.conf 后 sysctl -p;swap → 见第七节;主机名 → 见第六节。急于安装时可用 -ignorePrereq 跳过检查应急,生产环境不建议。

验证

bash 复制代码
./runInstaller -executePrereqs

无 Failed 项再正式安装。

预防

按环境准备清单逐项做完再启动安装;Oracle Linux 用 oracle-database-preinstall-19c 一步到位。

四、INS-32014 目录问题

报错现象

复制代码
[INS-32014] The specified location is already in use by another product.

原因分析

ORACLE_HOME 目录有残留文件(上次失败安装、解压后又换目录);该路径已注册在 Central Inventory 的 inventory.xml 里;或 ORACLE_BASE 与 ORACLE_HOME 层级配置错误(如 HOME 等于 BASE)。

解决步骤

bash 复制代码
echo $ORACLE_BASE $ORACLE_HOME
cat /u01/app/oraInventory/ContentsXML/inventory.xml | grep "HOME NAME"

旧注册记录已无用处时按卸载篇彻底清理;仅目录残留则清空重装:

bash 复制代码
rm -rf /u01/app/oracle/product/19.3.0/dbhome_1/*

或者换一个全新的 home 路径(如 dbhome_2)。

验证

重跑 runInstaller 路径检查通过;inventory.xml 中该 HOME 只有一条记录。

预防

安装失败先清理再重装,不在脏目录上叠加;大版本重装使用新的版本化目录。

五、libaio.so 缺失

报错现象

先决检查提示缺包,或 link 阶段后 sqlplus 启动报:

复制代码
error while loading shared libraries: libaio.so.1:
cannot open shared object file: No such file or directory

原因分析

libaio 是 Linux 异步 IO 库,Oracle 的文件 IO 依赖它,最小化安装的系统经常没带。

解决步骤

bash 复制代码
yum install -y libaio libaio-devel
ldconfig
ls -l /lib64/libaio.so.1

验证

bash 复制代码
ldd $ORACLE_HOME/bin/oracle | grep aio

有输出且不是 "not found";sqlplus 能进入 SQL> 提示符。

预防

安装前用官方依赖清单 rpm -q 逐项核对,不等 OUI 报错。

六、PRVF-9802 主机名解析失败

报错现象

复制代码
PRVF-9802 : Check of host name resolution failed

原因分析

/etc/hosts 没有"本机 IP + 主机名"映射,DNS 也解析不了。OUI 要求能通过主机名解析到本机真实 IP;映射到 127.0.0.1 很多场景同样判失败。

解决步骤

bash 复制代码
hostname                              # 假设输出 oradb
echo "192.168.56.50 oradb" >> /etc/hosts

IP 换成本机网卡真实地址。

验证

bash 复制代码
ping -c 2 oradb
hostname -i                           # 返回 192.168.56.50 即通过

预防

系统初始化模板写好 hosts;克隆虚拟机后第一时间改主机名与映射。

七、交换空间不足

报错现象

复制代码
PRVF-7530 : 节点上交换空间不足
[物理内存 = 8192MB; 可用交换空间 = 2047MB; 需要的交换空间 = 4095MB]

原因分析

官方要求:内存 1~2G 时 swap 为 1.5 倍;2G~16G 时等于内存;大于 16G 时 16G。云主机常默认不带或只给 2G。

解决步骤

用 swapfile 补足(以补 4G 为例):

bash 复制代码
dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

验证

bash 复制代码
free -m
swapon -s

swap 总量达标后重跑安装检查,该项 Passed。

预防

装机按内存规划 swap;云主机模板统一预置 swapfile。

八、DISPLAY 变量问题

报错现象

复制代码
Could not execute auto check for display colors using command
/usr/bin/xdpyinfo. Check if the DISPLAY variable is set.

或:

复制代码
No protocol specified
Error: Can't open display: localhost:10.0

原因分析

图形安装需要把界面投到 X Server。服务器无桌面时,要么从 Windows 的 Xserver(VcXsrv/Xming/MobaXterm)转发,要么用 VNC。DISPLAY 没设、设错、或 X Server 拒绝连接,都会报上述错。

解决步骤

Windows 侧启动 VcXsrv,假设 Windows IP 为 192.168.56.1:

bash 复制代码
su - oracle
export DISPLAY=192.168.56.1:0.0
xdpyinfo | head -3

xdpyinfo 能打出版本信息说明通路正常。仍报 "No protocol specified" 时,在运行 X Server 的本地图形会话执行 xhost +。VNC 场景则 export DISPLAY=localhost:1。

验证

bash 复制代码
xclock

Windows 上弹出时钟窗口即通,再启动 runInstaller。

预防

直接用 -silent 静默安装不依赖 X;确需图形统一走 VNC。

九、安装日志去哪找

静默排错的核心是会找日志:

  • OUI 会话日志(安装中):/tmp/OraInstall*/installActions*.log
  • 归档日志(安装结束):/u01/app/oraInventory/logs/installActions<时间戳>.log
  • DBCA 建库日志:$ORACLE_BASE/cfgtoollogs/dbca/<SID>/trace.log
  • 数据库告警日志:$ORACLE_BASE/diag/rdbms/<db_name>/<sid>/trace/alert_<sid>.log

快速定位:

bash 复制代码
find /u01 /tmp -name "installActions*.log" 2>/dev/null
grep -iE "severe|fatal" /u01/app/oraInventory/logs/installActions*.log | tail -20

先看日志结尾,再倒着搜 SEVERE,定位到真实异常行后对照本文各节处理。

十、要点总结

  • INS-08101 是包装错,真相在日志:查 /tmp 空间、介质完整性、执行用户、inventory 权限
  • INS-13013 是检查汇总错,展开看具体 Failed 项对症修,-ignorePrereq 只能应急
  • INS-32014 处理目录残留与 inventory 注册冲突,脏目录宁可清空重来
  • libaio 缺失 yum 补齐,ldd 验证
  • PRVF-9802 补 /etc/hosts 映射真实 IP;PRVF-7530 用 swapfile 补交换空间
  • DISPLAY 报错优先改静默,图形用 VNC 更稳;排错次序:找日志 → 看 SEVERE → 对症修复 → 验证
相关推荐
害人终害己1 小时前
redis修改密码的地方在哪里
数据库·redis·缓存
rannn_1111 小时前
【Java面试题】高频面试题1|Java 后端、MySQL、Redis 与 RAG 面试整理
java·jvm·数据库·后端·面试
杨云龙UP1 小时前
Oracle 19c RAC到RAC Active Data Guard标准搭建与巡检指南
运维·服务器·数据库·oracle·adg·data guard·rac到rac
许彰午2 小时前
06-Oracle卸载与重装完整流程
数据库·oracle
ss2732 小时前
AI全栈实战 | 3.6-01 数据库与 ORM:学过 MyBatis 再看 SQLAlchemy,才知道“半自动“和“全自动“差在哪
数据库·mybatis
我的xiaodoujiao2 小时前
Django 基础知识详细图文教程 13-Django 模型定义与使用 3
数据库·后端·python·测试工具·oracle·django
麦壳饼2 小时前
Docker 快速上手:5 分钟运行 SonnetDB
数据库·docker·sonnetdb
for_ever_love__2 小时前
缓存穿透、击穿、雪崩:三个经典问题与完整解决方案
java·数据库·redis·缓存·哈希算法·布隆过滤器·雪崩
麦壳饼2 小时前
CLI 工具安装与使用:sndb 命令行指南
数据库·sonnetdb