Oracle Database Free 23ai安装需严格遵循清理旧实例、分步安装preinstall与主RPM包、确保/opt≥9GB且无symlink、及时执行sysctl--system等关键步骤,否则易出现监听失败、ORA-00442或ORA-27123等错误。

oracle-database-free-23ai 的安装不是“点下一步就行”的流程,尤其在 Linux 环境下,稍有疏漏就会卡在监听启动、数据库初始化或 ORA-00442 错误上。必须先清理旧实例、严格满足磁盘与内核参数要求,且不能用 symlink 指向 /opt/oracle。
卸载残留实例是硬性前置条件
如果系统里曾装过 oracle-database-free-23c、oracle-database-xe 或 SID 为 XE/FREE 的库,oracle-database-free-23ai 安装会静默失败——它不报错,但后续执行 /etc/init.d/oracle-free-23ai configure 时直接退出,日志里只有一行 DBT-19202 警告。
- 先确认是否有残留:运行
ps -ef | grep pmon,看是否存在ora_pmon_XE或ora_pmon_FREE - 用 root 执行预卸载脚本:
/etc/init.d/oracle-free-23c delete(注意命令里的版本号要匹配你装过的旧版) - 手动清理残留目录:
rm -rf /opt/oracle和rm -f /etc/oratab,否则 RPM 安装会跳过创建目录步骤,导致后续权限异常
RPM 安装必须分两步且顺序不能错
Oracle 23ai 的 RPM 包依赖预安装配置,oracle-database-preinstall-23ai 不只是装一堆包,它还会写入 /etc/sysctl.d/97-oracle-database-sysctl.conf 并调整 ulimit,跳过这步大概率触发 ORA-27123(无法分配共享内存)。
- 先装 preinstall 包:
dnf -y install oracle-database-preinstall-23ai-1.0-2.el8.x86_64.rpm(RHEL 8)或对应 el9 版本 - 再装主包:
dnf -y install oracle-database-free-23ai-1.0-1.el8.x86_64.rpm - 安装后立即执行
sysctl --system加载新内核参数,别等 reboot —— 很多人卡在这一步,以为重启就能好
configure 脚本失败的三个高频原因
/etc/init.d/oracle-free-23ai configure 是唯一初始化入口,但它不提示具体哪步挂了。常见失败点集中在磁盘、路径和用户权限。
-
/opt分区剩余空间必须 ≥9 GB,且不能是挂载在 symlink 上的路径(例如/opt -> /data/opt),否则报ORA-01034+ORA-27101 - 确保
oracle用户对/opt/oracle有读写权限:chown -R oracle:oinstall /opt/oracle - 监听器端口 1521 若被占用,脚本不会主动换端口,需提前
netstat -tuln | grep :1521并 kill 占用进程
验证是否真跑起来,别只看服务状态
systemctl status oracle-free-23ai 显示 active 并不代表数据库就绪——它只说明监听器起来了。真正要确认的是实例能否连通。
- 切换到
oracle用户:sudo -u oracle bash - 执行:
sqlplus / as sysdba,然后输入select status from v$instance;,返回OPEN才算成功 - 若报
ORA-12162: TNS:net service name does not resolve,说明ORACLE_SID没设对,检查/etc/oratab是否含FREE:/opt/oracle/product/23ai/dbhome_1:N
实际部署中,最易被忽略的是 /opt/oracle 目录的物理路径约束和 preinstall 后未及时 sysctl --system。这两处一错,整个流程就得重来。


















