Oracle XE 21c/18c 安装需严格匹配系统版本、安装预设包、调优内核参数、配置防火墙及服务,否则易出现连接失败;关键步骤包括:确认OS兼容性、补齐依赖、执行preinstall、修改sysctl和systemd限制、root下运行configure脚本、放行1521/5500端口、验证sqlplus连通性并手动启用远程监听。
oracle xe(21c 或 18c)不是“一键安装完就能用”的数据库,它对系统要求、用户权限、端口冲突和 selinux/firewalld 的敏感度远超一般开发版——装完连不上 localhost:5500 或 sqlplus / as sysdba 报错,基本都卡在这几处。
确认你的系统版本是否被官方支持
Oracle XE 21c 只支持 Oracle Linux 7/8、RHEL 7/8 和 Ubuntu 20.04/22.04(注意:Ubuntu 22.04 仅支持 21c,不支持 18c)。在 CentOS Stream、Debian 或 macOS 上强行安装 RPM/DEB 包,大概率会因依赖缺失或内核模块不兼容失败。
- 运行
cat /etc/os-release确认发行版和版本号,别只看uname -a - Ubuntu 用户必须用
apt install libaio1 libnss3 libx11-6 libxcb1 libxdmcp6 libxau6补齐基础依赖,缺任意一个都会导致oracle-xe-21c安装后服务无法启动 - Oracle Linux/RHEL 用户需启用
ol8_developer_EPEL仓库(非默认),否则yum install oracle-database-preinstall-21c会找不到包
安装前必须执行 preinstall 包并手动配置内核参数
Oracle XE 不再像旧版那样允许跳过内核调优。直接运行 rpm -ivh oracle-database-xe-21c-1.0-1.x86_64.rpm 会失败,报 kernel.shmall 或 fs.file-max 不达标。
- 先装预设包:
yum install oracle-database-preinstall-21c(RHEL/OL)或apt install oracle-database-preinstall-21c(Ubuntu) - 检查是否生效:
sysctl kernel.shmall应返回 ≥ 2097152;sysctl fs.file-max应 ≥ 6815744 - 若数值偏低,手动编辑
/etc/sysctl.conf追加对应行,并执行sysctl -p生效 - 特别注意:Ubuntu 的
systemd默认限制进程打开文件数,还需在/etc/systemd/system/oracle-xe-21c.service中的[Service]段添加LimitNOFILE=65536
运行配置脚本时不能跳过 root 权限和密码设置
安装 RPM/DEB 后只是把文件解压到 /opt/oracle,真正初始化数据库要靠 /etc/init.d/oracle-xe-21c configure(RHEL/OL)或 sudo /etc/init.d/oracle-xe-21c configure(Ubuntu)。这个步骤必须用 root 执行,且全程不能 Ctrl+C 中断。
- 脚本会提示输入
System password(即SYS和SYSTEM共用密码),长度必须 ≥ 8 位,且含大小写字母+数字+特殊字符(如Orcl@123),纯数字或常见单词会被拒绝 - Ubuntu 下如果提示
Failed to start oracle-xe-21c.service: Unit oracle-xe-21c.service not found,说明 service 文件未生成,需先运行sudo systemctl daemon-reload - 配置成功后,监听默认启用
1521(TNS)和5500(EM Express),但 Ubuntu 的ufw或 RHEL 的firewalld默认拦截这两个端口,需手动放行:sudo ufw allow 1521 && sudo ufw allow 5500
连接失败?先绕过 EM Express 直接验证数据库是否真跑起来了
很多人卡在打不开 https://localhost:5500/em 就以为装失败了,其实 EM Express 是可选组件,数据库本体可能早已就绪。优先用命令行验证核心功能。
- 切换到 oracle 用户:
sudo su - oracle,然后执行sqlplus / as sysdba—— 如果能进入 SQL> 提示符,说明实例已启动 - 若报
ORA-01034: ORACLE not available,检查ps -ef | grep pmon是否有ora_pmon_XE进程;没有则运行sudo /etc/init.d/oracle-xe-21c start - 若
sqlplus找不到命令,确认/opt/oracle/product/21c/dbhomeXE/bin已加入$PATH,且ORACLE_HOME和ORACLE_SID已在~oracle/.bashrc中导出 - EM Express 首次访问需等 2–3 分钟加载,且浏览器必须用 HTTPS + 接受自签名证书;Chrome 可能直接屏蔽,换 Firefox 或 Edge 更稳
最常被忽略的是:Oracle XE 21c 默认关闭远程监听(LOCAL_LISTENER 为空),即使防火墙开了 1521,外部客户端也连不上。需要登录后手动执行 ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521))'; 并 lsnrctl reload 才真正对外暴露。

















