oracle 23ai free仅支持oracle linux 8、rhel 8或rocky linux 8,需通过cat /etc/os-release确认id=ol且version_id=8;必须启用ol8_codeready_builder源安装compat-libcap1、compat-libstdc++-33等依赖,并严格按顺序先装oracle-database-preinstall-23ai再装主包。

确认系统版本和基础依赖是否齐备
Oracle 23ai Free 明确要求运行在 Oracle Linux 8、RHEL 8 或 Rocky Linux 8 上,且必须是 x86-64 架构。AlmaLinux 8 虽然兼容性较好,但官方未列支持,不建议用于生产环境验证。安装前先执行 cat /etc/os-release 确认 ID 和 VERSION_ID 字段值为 ol 和 8。
常见漏装项:很多用户跳过 compat* 包,导致后续 oracle-database-preinstall-23ai rpm 安装失败,报错类似 error: Failed dependencies: compat-libcap1 is needed。必须运行:
yum install -y compat-libcap1 compat-libstdc++-33 ksh sysstat
注意:compat* 在 OL8 的默认源中已弃用,需启用 ol8_codeready_builder 仓库(dnf config-manager --enable ol8_codeready_builder),否则 yum install compat* 会找不到包。
预安装包与主安装包的安装顺序不能颠倒
oracle-database-preinstall-23ai 不是可选步骤,它是强制前置依赖。它会自动创建 oracle 用户、设置内核参数(如 shmmax)、配置 limits.conf,并调整 SELinux 策略。如果先装主包再补 preinstall,数据库服务无法启动,日志里会出现 ORA-00845: MEMORY_TARGET not supported on this system 或 Permission denied 类错误。
正确顺序只有这一种:
- 安装
oracle-database-preinstall-23ai-1.0-2.el8.x86_64.rpm - 再安装
oracle-database-free-23ai-1.0-1.el8.x86_64.rpm - 最后运行
/etc/init.d/oracle-free-23ai configure
configure 脚本会交互式询问监听端口(默认 1521)和 PDB 名称(默认 FREEPDB1),全程回车即可完成初始化。它不会覆盖已有数据文件,但会清空 $ORACLE_HOME/dbs 下的旧密码文件和 spfile —— 如果你之前装过其他版本,这点要留意。
环境变量配置必须作用于 oracle 用户 shell,且不能只改 .bash_profile
很多用户把 ORACLE_HOME 和 ORACLE_SID 写进 /home/oracle/.bash_profile 后,用 su - oracle 登录能生效,但直接 sudo -u oracle sqlplus / as sysdba 却报 ORA-12162: TNS:net service name is incorrectly specified。这是因为后者不加载 .bash_profile,只读 .bashrc。
稳妥做法是同时写入两个文件:
echo 'export ORACLE_SID=FREE' >> /home/oracle/.bashrc<br>echo 'export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree' >> /home/oracle/.bashrc<br>echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /home/oracle/.bashrc
另外,ORACLE_SID 必须设为 FREE(不是 ORCL 或其他),这是 23ai Free 版本硬编码的实例名;设错会导致 sqlplus / as sysdba 连上空实例或报 ORA-01034: ORACLE not available。
连接字符串中的服务名容易混淆,PDB 和 CDB 要分清
安装完成后,实际提供两个连接入口:
- 多租户容器数据库(CDB):用
sqlplus system@//localhost:1521/FREE,用户名密码是 configure 阶段设置的system密码 - 可插拔数据库(PDB):用
sqlplus system@//localhost:1521/FREEPDB1,同样用system密码
注意:FREE 是 CDB 名,FREEPDB1 是默认 PDB 名,二者不能互换。用错服务名会连到空实例或提示 ORA-12514: TNS:listener does not currently know of service requested in connect descriptor。PDB 默认处于 MOUNTED 状态,首次连接前需手动 ALTER PLUGGABLE DATABASE FREEPDB1 OPEN;,否则报 ORA-01109: database not open。
最易被忽略的一点:23ai Free 的监听器默认只绑定 localhost,不监听外部 IP。如果从另一台机器连接,必须修改 $ORACLE_HOME/network/admin/listener.ora 中的 HOST 值为服务器真实 IP 或 0.0.0.0,然后执行 lsnrctl reload。











