0

0

如何解决Oracle OUI启动卡死_临时目录空间与Java环境排查

P粉602998670

P粉602998670

发布时间:2026-03-17 12:23:15

|

343人浏览过

|

来源于php中文网

原创

OUI启动卡在“正在初始化”界面主因是/tmp空间不足、Java版本不匹配或DISPLAY配置错误。需检查df -h /tmp、java -version及echo $DISPLAY,三者可排查八成问题。

Oracle OUI 启动卡在“正在初始化”界面

这是典型环境准备不足导致的假死,不是安装包损坏。oui(oracle universal installer)本质是 java 应用,启动时会解压临时资源、加载 jvm、扫描系统参数——任一环节卡住都会表现为无响应。

常见错误现象:Starting Oracle Universal Installer... 之后光标静止超过 2 分钟;进程列表里有 java 进程但 CPU 占用接近 0;strace -p 跟踪显示卡在 openat(AT_FDCWD, "/tmp/OraInstall...", ...)

  • 检查 /tmp 所在文件系统剩余空间:OUI 解压临时 JAR 和 native 库需至少 1.5GB,df -h /tmp 必须确认
  • 确认 /tmp 未挂载为 noexecnosuid:OUI 需要在该目录下执行临时二进制,mount | grep "$(df /tmp | tail -1 | awk '{print $1}') 查看选项
  • 临时切换 OUI 工作目录:启动前设 export TMPDIR=/path/to/large/writable/dir(确保该路径可执行、有写权限),再运行 ./runInstaller

Java 版本不匹配导致 OUI 无法进入主界面

OUI 对 JDK 版本极其敏感。19c 及以后版本强制要求 JDK 8u191+ 或 JDK 11(具体看补丁号),但 Oracle 安装介质自带 JRE,它只在找不到系统 JDK 时才启用——而这个“查找逻辑”容易误判。

使用场景:你系统装了 JDK 17,OUI 却报错退出或闪退;或者手动指定 -jreLoc 后仍卡在加载 splash 屏。

  • 不要依赖系统 PATH 中的 java:OUI 会读取 $ORACLE_HOME/jdk/bin/java(若存在)或 /usr/java/latest/bin/java,优先级高于 PATH
  • 验证实际被调用的 Java:strace -e trace=execve ./runInstaller 2>&1 | grep java,看最后执行的是哪个路径
  • 强制指定已知可用的 JDK:./runInstaller -jreLoc /opt/java/jdk1.8.0_202/jre(注意路径必须指向 jre/ 目录,不是 jdk/
  • 避免 JDK 11+ 的 TLS 协议问题:OUI 内置的 HTTP 客户端可能因 TLSv1.3 默认启用而连不上 Oracle 更新服务器,加参数 -J-Dhttps.protocols=TLSv1.2

DISPLAY 环境变量与 X11 转发配置失效

即使你在本地桌面运行 OUI,也可能因 DISPLAY 设置错误或 X11 权限缺失而卡在初始化阶段——此时日志里通常没有明显报错,但 ps aux | grep X 会发现 Xorg 进程异常或缺失。

立即学习Java免费学习笔记(深入)”;

皮卡智能
皮卡智能

AI驱动高效视觉设计平台

下载

常见错误现象:Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment;或直接黑屏后退出。

  • 确认 DISPLAY 值正确:echo $DISPLAY 应为 :0(本地)或 localhost:10.0(SSH 转发),不能是空或 unix:0
  • 检查 X11 转发是否启用:SSH 登录时用 ssh -X user@host,且服务端 /etc/ssh/sshd_configX11Forwarding yes 已生效
  • 授权当前用户访问 X server:xhost +si:localuser:$USER(临时方案,生产环境慎用)
  • 如纯命令行环境,可用静默模式绕过 GUI:./runInstaller -silent -responseFile /path/to/rsp,但需提前准备好响应文件

OUI 日志中反复出现 ORA-27123: unable to attach to shared memory segment

这不是 OUI 自身的问题,而是它在启动过程中尝试调用 Oracle 已安装实例的 sqlplus 或检查 ORACLE_HOME 时触发的权限失败。尤其当目标机器上残留旧实例、或 /dev/shm 权限异常时高频出现。

性能影响:每次失败会重试 3 次,每次间隔数秒,累积延迟可达 30 秒以上,表现为“卡顿”。

  • 临时清空环境干扰:unset ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH 再启动 OUI
  • 检查 /dev/shm 挂载参数:mount | grep shm,应含 size=4G 且非 noexec
  • 若必须保留旧实例,改用非默认端口启动 OUI:./runInstaller -executeSysPrereqs -ignorePrereq -waitForCompletion 跳过系统预检中的内存段校验

临时目录空间和 Java 环境这两块最容易被当成“小问题”跳过,结果花半天查网络或权限。真正卡住的时候,先看 /tmp 剩多少、java -version 是谁家的、$DISPLAY 指向哪——三个命令就能筛掉八成情况。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

193

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

19

2026.02.03

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

931

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

32

2025.12.06

Java 并发编程高级实践
Java 并发编程高级实践

本专题深入讲解 Java 在高并发开发中的核心技术,涵盖线程模型、Thread 与 Runnable、Lock 与 synchronized、原子类、并发容器、线程池(Executor 框架)、阻塞队列、并发工具类(CountDownLatch、Semaphore)、以及高并发系统设计中的关键策略。通过实战案例帮助学习者全面掌握构建高性能并发应用的工程能力。

102

2025.12.01

oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

271

2023.08.16

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

221

2023.09.15

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

248

2023.09.18

c++ 字符处理
c++ 字符处理

本专题整合了c++字符处理教程、字符串处理函数相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号