最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何在Oracle Linux 8上安装Oracle 21c
时间:2026-08-21 09:44:49 编辑:袖梨 来源:一聚教程网
Oracle Linux 8安装Oracle 21c必须严格按顺序执行:先dnf install oracle-database-preinstall-21c(自动创建oracle用户、设组、配limits和sysctl),再安装主RPM包;root运行/etc/init.d/oracledb_ORCLCDB-21c configure初始化监听与数据库;SELinux和firewalld须彻底禁用;sqlplus需alias rlwrap支持方向键。
oracle-database-ee-21c 在 Oracle Linux 8 上不是直接 yum install 就能装完的,必须分步处理预依赖、用户环境、内核参数和初始化脚本,否则 /etc/init.d/oracledb_ORCLCDB-21c configure 会失败或监听起不来。先装 oracle-database-preinstall-21c 再装主包
跳过这一步,oracle 用户不会被自动创建,/u01 目录权限、sysctl 参数、limits.conf 都不会生效,后续所有操作都会卡在权限或资源限制上。
-
dnf install -y oracle-database-preinstall-21c必须最先执行(它会建oracle用户、设组、改/etc/security/limits.d/oracle-database-preinstall-21c.conf) - 再用
dnf install -y oracle-database-ee-21c-1.0-1.ol8.x86_64.rpm(RPM 文件需提前从 Oracle 正式下载,不能靠 yum repo 自动拉取) - 别用
dnf localinstall—— 它不保证依赖顺序,容易漏掉libnsl或compat-libstdc++等隐式依赖
setenforce 0 和 firewalld 关闭要彻底
SELinux 半开状态(permissive)会导致 sqlplus 连接时出现 ORA-12547: TNS:lost contact;firewalld 没停干净会让 lsnrctl start 成功但外部连不上 1521 端口。
-
setenforce 0是临时关闭,必须同步改/etc/selinux/config里SELINUX=disabled,否则重启后失效 -
systemctl disable --now firewalld.service比单独stop更可靠,避免下次 reboot 自启 - 验证:运行
sestatus应输出disabled,systemctl is-active firewalld应输出inactive
监听和数据库初始化必须用 root 执行脚本
oracle 用户没权限写 /etc/init.d/ 下的服务脚本,也不能直接调用 oradim 或 dbca 创建实例——这些都得由 root 走封装好的初始化流程。
- 安装完 RPM 后,直接运行:
/etc/init.d/oracledb_ORCLCDB-21c configure - 该脚本会:
- 以
oracle用户身份调用dbca -silent -createDatabase - 生成监听配置
$ORACLE_HOME/network/admin/listener.ora - 注册 systemd service(
oracledb_ORCLCDB-21c)并启用
- 以
- 如果中途失败,删掉
/opt/oracle/oradata/ORCLCDB和$ORACLE_HOME/network/admin/listener.ora再重试,不要手动跑dbca
sqlplus 方向键失效?装 rlwrap 并包装 alias
默认 sqlplus 不支持上下箭头翻历史命令,这不是 bug,是 Oracle RPM 包没打包 readline 支持。
- 先装:
dnf install -y rlwrap(注意不是epel源里的旧版,要用 OL8 AppStream 仓库的) - 然后在
/home/oracle/.bash_profile里加:alias sqlplus='rlwrap sqlplus' - 别用
which sqlplus路径硬写——RPM 安装后sqlplus在/usr/bin/sqlplus,但 alias 机制更稳定 - 重新登录 oracle 用户或执行
source ~/.bash_profile生效
configure 脚本必须由 root 运行——这两步一旦顺序错或权限错,后续所有数据库启动、监听、连接问题几乎都源于此。