oracle database 23ai free rpm安装必须严格遵循顺序:先安装oracle-database-preinstall-23ai(创建oracle用户、设置内核参数及/opt/oracle权限),再安装oracle-database-free-23ai;/opt/oracle必须由oracle用户拥有,selinux需禁用,旧版oracle须先卸载,且oracle_base环境变量无效,路径不可通过symlink或自定义环境变量更改。

Oracle Database 23ai Free 的 RPM 安装在 Linux 上不是“下一步下一步”就能走通的,oracle-database-preinstall-23ai 和 oracle-database-free-23ai 两个包有严格依赖顺序,且 /opt/oracle 目录权限、SELinux 状态、内核参数这几处不满足,安装会在 %prein 阶段直接失败并退出状态码 1。
必须先装 preinstall 包,且不能跳过它
很多人试图直接 dnf install oracle-database-free-23ai,结果报错:[SEVERE] The install cannot proceed because ORACLE_BASE directory (/opt/oracle) is not owned by "oracle" user。这不是 bug,是设计逻辑:preinstall 包负责创建 oracle 用户、设置 /etc/security/limits.conf、写入 /etc/sysctl.conf 内核参数(如 fs.aio-max-nr、kernel.shmall),还自动 chown /opt/oracle。
实际操作中要注意:
- 用 root 执行
dnf -y install oracle-database-preinstall-23ai-*.rpm,不要加--nogpgcheck—— Oracle 官方 RPM 均带有效签名 - 安装后检查
/var/log/oracle-database-preinstall-23ai/results/orakernel.log,确认内核参数已写入且生效(必要时手动sysctl -p) - 如果系统已存在旧版 Oracle(如 XE 或 23c),必须先运行
/etc/init.d/oracle-free-23c delete,否则 preinstall 会拒绝覆盖
/opt/oracle 权限和路径不能靠环境变量绕过
RPM 安装器硬编码检查 /opt/oracle 是否由 oracle 用户拥有,ORACLE_BASE 环境变量在安装阶段完全无效。你不能通过提前 export ORACLE_BASE=/my/custom/path 来改变目标位置。
正确做法只有两种:
- 接受默认路径:安装前确保
chown oracle:oinstall /opt/oracle,且该目录为空或仅含 preinstall 创建的子目录 - 重挂载
/opt:如果磁盘空间不足,必须把更大分区 mount 到/opt,而不是 symlink 到别处 —— 文档明确禁止 symlinks
错误示例:ln -s /data/oracle /opt/oracle 会导致安装脚本读取到真实路径但权限校验失败,报错信息仍指向 /opt/oracle。
configure 脚本执行前要改配置文件
安装完 RPM 后,数据库实例并未自动创建。/etc/init.d/oracle-free-23ai configure 是真正建库的入口,但它读取的是 /etc/sysconfig/oracle-free-23ai.conf。这个文件在 RPM 安装后才生成,且默认值未必符合你的环境。
关键配置项必须检查:
-
LISTENER_PORT:避免与已运行服务冲突,默认 1521,可改为 1522 -
DBFILE_DSET:若想把数据文件放在非默认位置(如/data/oradata/FREE),必须提前chown oracle:oinstall /data/oradata,再在此项中填绝对路径 -
SKIP_VALIDATIONS=true:仅测试环境可用;生产环境禁用,否则可能因内存不足导致建库中途崩溃 -
CHARSET=AL32UTF8:不建议改,中文乱码风险高
执行 configure 时会交互式要求输入 SYS、SYSTEM、PDBADMIN 密码,密码必须含大小写字母+数字,少于 8 位会直接拒绝。
Windows 安装最易卡在权限和路径上
Windows 版本不支持家庭版,且安装路径必须满足两个硬性条件:
- 安装目录(如
D:\app\oracle)的 NTFS 权限中,必须移除Authenticated Users组,并禁用继承 —— 否则 setup 进程会因无法写入日志而静默退出 - 路径不能含空格或中文,也不能是系统盘根目录(如
C:\),否则 Oracle Universal Installer 会报错PRVG-10001 - 安装过程中 Windows 安全中心弹出的防火墙提示,必须勾选“专用网络”,点“允许访问”,否则监听器启动后外部无法连接
安装完成后,首次用 sqlplus / as sysdba 登录失败?先检查服务是否启动:services.msc 中确认 OracleServiceFREE 和 OracleOraDB23Home1TNSListener 状态为“正在运行”。











