Oracle 19c在Ubuntu上无法正常安装,因其不在官方支持列表中;必须通过设置CV_ASSUME_DISTID=ol8绕过OS校验,手动补全libaio1:i386、ksh、bc、libmotif4等依赖,执行%pre脚本缺失的用户/组/内核参数/limits配置,并解决X11 DISPLAY授权问题,或改用静默安装、Docker等规避方案。

Oracle 19c 在 Ubuntu 上无法“正常安装”——它根本不在 Oracle 官方支持的操作系统列表中,所有成功案例都依赖绕过检查、手动补全缺失环节,或彻底避开宿主系统约束。直接跑 runInstaller 几乎必然失败,关键不是“怎么装”,而是“怎么绕过校验并稳住后续运行”。
为什么 runInstaller 报 “Unsupported OS” 或卡在 makefile target?
Oracle 安装器硬编码了操作系统白名单(只认 ol8、rhel8 等),Ubuntu 22.04/24.04 的 jammy 或 noble codename 直接被拒。常见报错如:Error in invoking target 'libasmclntsh19.ohso' of makefile,表面是编译失败,实则是 glibc 符号不兼容、头文件路径错位、或内核模块链接时找不到 libaio 的 32 位符号。
- 必须设置环境变量
CV_ASSUME_DISTID=ol8(不是rhel8,Oracle 检查逻辑只识别ol*前缀) - 仅装
build-essential和libaio1远不够:缺libaio1:i386(32 位兼容库)、ksh(Oracle 脚本硬依赖)、bc(数值计算)、libmotif4(GUI 组件) -
alien -i *.rpm会跳过全部%pre脚本:用户创建、组权限、sysctl参数写入、limits.conf配置全得你手敲,漏一项就卡在runInstaller启动前
DISPLAY=:0 报 “Can't connect to X11 window server” 怎么破?
这不是没装桌面,而是 oracle 用户没被授权访问当前 X session。只运行 xhost + 是危险且无效的——它允许所有客户端连接,但 Ubuntu 的 Wayland 默认屏蔽传统 X11 socket 转发。
- 切到
oracle用户后先确认DISPLAY值:echo $DISPLAY;若为空,用这条命令更可靠:export DISPLAY=$(loginctl show-session $(loginctl | grep "seat" | head -n1 | awk '{print $1}') -p Type | grep -q "wayland" && echo "localhost:10.0" || echo ":0") - 更稳妥的做法是改用 SSH X11 转发:
ssh -X oracle@localhost,前提是/etc/ssh/sshd_config中X11Forwarding yes已启用且sshd已重启 - 图形界面只是可选路径;真正省事的是静默安装:
./runInstaller -silent -responseFile /path/to/db_install.rsp,完全规避 GUI 依赖
用 Docker 跑 Oracle 19c 是不是更稳?
是,但稳的前提是你接受容器化约束:数据卷权限、内存限制、无 root 权限下内核参数调整不可控。第三方镜像(如 registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c)已预打包,省去所有系统级适配。
- 拉取镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c - 创建持久化目录并授权:
sudo mkdir -p /docker/oracle19c/oradata && sudo chmod 777 /docker/oracle19c/oradata - 运行容器(注意端口映射和环境变量):
docker run -d --name oracle19c -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=oracle -v /docker/oracle19c/oradata:/opt/oracle/oradata registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c - 容器启动后需等待约 5–10 分钟完成初始化,期间
docker logs -f oracle19c可观察进度;首次连接用sqlplus / as sysdba或 DBeaver 连localhost:1521/ORCLCDB
最易被忽略的点是:Oracle 19c 在 Ubuntu 上没有“标准路径”。无论是 alien 转 rpm、静默安装还是 Docker,本质都是在打补丁——补 OS 支持缺口、补依赖链断点、补权限与内核参数盲区。一旦选了某条路,就得全程盯紧每个手动补的环节,少一个 sysctl 参数或漏配 hard nproc,数据库实例就起不来。


















