oracle xe 21c 在 linux 上安装后无法连接,主因是系统预设未到位:需确认发行版(仅支持 oracle linux/rhel 7-8、ubuntu 20.04/22.04)、装 preinstall 包、核对内核参数、配置 systemd 限制(ubuntu)、执行 root 权限 configure 脚本、设置密码合规、开放端口,并启用 em express 远程访问。

Oracle XE 21c 在 Linux 上不是“装完 rpm 就能连上”的数据库,sqlplus / as sysdba 报错、localhost:5500 打不开、服务启动失败——90% 都卡在系统预设没到位,而不是安装命令本身写错了。
确认发行版和版本是否被官方支持
XE 21c 只认准几个发行版:Oracle Linux 7/8、RHEL 7/8、Ubuntu 20.04/22.04。CentOS Stream、Debian、Fedora、AlmaLinux 等都不在支持列表里,强行装会因内核参数缺失或 libnss3 版本不兼容直接挂掉。
- 运行
cat /etc/os-release看清楚ID和VERSION_ID,别只信uname -a - Ubuntu 用户必须提前装齐依赖:
sudo apt install libaio1 libnss3 libx11-6 libxcb1 libxdmcp6 libxau6,缺任意一个,oracle-xe-21c服务都起不来 - RHEL/OL 用户要先启用 EPEL 仓库(Ubuntu 不需要),否则
yum install oracle-database-preinstall-21c会提示 “No package available”
preinstall 包必须装,且 kernel 参数得手动核对
XE 21c 强制要求内核参数达标,跳过 oracle-database-preinstall-21c 直接装主包,configure 脚本会在最后一步报 kernel.shmall too low 或 fs.file-max insufficient 并退出。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- RHEL/OL:用
yum install oracle-database-preinstall-21c(OL8 用dnf) - Ubuntu:用
sudo apt install oracle-database-preinstall-21c,注意它不会自动创建oracle用户,得自己补sudo useradd -r -d /opt/oracle -s /bin/bash oracle - 装完后立刻验证:
sysctl kernel.shmall应 ≥2097152,sysctl fs.file-max应 ≥6815744 - Ubuntu 还要额外改 systemd 限制:在
/etc/systemd/system/oracle-xe-21c.service的[Service]段加LimitNOFILE=65536,否则服务启动后秒退
configure 脚本必须 root 执行,且不能中断
/etc/init.d/oracle-xe-21c configure 不是可选步骤,它是真正初始化数据库的唯一入口。用普通用户跑、中途 Ctrl+C、输错密码导致重试,都会让数据库处于半初始化状态,后续再跑会提示 “Database already configured” 却连不上。
- 必须用
sudo /etc/init.d/oracle-xe-21c configure(Ubuntu)或sudo /etc/init.d/oracle-xe-21c configure(RHEL/OL) - 密码长度 ≥ 8 位,且必须同时含大小写字母、数字、特殊字符(如
MyPass123!),输错三次脚本就退出,没回退机制 - 脚本执行期间会自动建
XECDB 和XEPDB1PDB,完成后开放端口1521(TNS)和5500(EM Express) - 若防火墙开着,记得放行:
sudo firewall-cmd --permanent --add-port=1521/tcp和sudo firewall-cmd --permanent --add-port=5500/tcp,然后firewall-cmd --reload
验证连通性时注意连接串格式和默认监听配置
装完不代表能连——XE 默认只监听 localhost,不响应外部 IP;EM Express(5500)默认也只绑 127.0.0.1,从宿主机浏览器访问虚拟机 IP 会 404。
- 本地测试用:
sqlplus sys/YourPass123!@//localhost:1521/XE as sysdba(CDB)或sqlplus sys/YourPass123!@//localhost:1521/XEPDB1 as sysdba(PDB) - 想从外部连,先确认监听是否启用远程:
lsnrctl status输出里要有(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521)),没有就得手动改$ORACLE_HOME/network/admin/listener.ora - EM Express 默认不监听
0.0.0.0,需进 SQL*Plus 执行:exec dbms_xdb_config.setlistenerlocalaccess(false);,再重启监听 -
sqlplus / as sysdba失败?检查ORACLE_SID是否设为XE,ORACLE_HOME是否指向/opt/oracle/product/21c/dbhomeXE
最常被忽略的是 Ubuntu 的 systemd 文件没加 LimitNOFILE,以及 EM Express 的 setlistenerlocalaccess(false) 没执行——这两处不处理,哪怕所有安装步骤全对,你也只能本地连,外部工具和浏览器全失效。










