Oracle 21c RPM安装不能“一键”完成,需手动执行预装配置、创建用户、设置内核参数与资源限制,并运行setup.sh和createDB.sh;yum localinstall会因依赖oracle-database-preinstall-21c及特定内核而卡住。
Oracle 21c RPM包安装是否真能“一键”完成?
不能。所谓“一键”,只是省去了手动解压、创建用户、配置环境变量等重复操作,但yum localinstall本身不处理oracle特有的前置检查(如内核参数、资源限制、用户组权限),更不会自动运行root.sh或执行数据库创建。跳过这些步骤大概率导致ora-01034: oracle not available或监听启动失败。
为什么yum localinstall会卡在“正在解决依赖关系”?
Oracle 21c RPM包(如oracle-database-server-21c-1.0-1.x86_64.rpm)显式依赖oracle-database-preinstall-21c,而该预装包又依赖kernel-uek等特定内核模块。若系统是CentOS/RHEL 8+标准内核(kernel-core),yum无法自动降级或替换内核,就会阻塞。
- 先手动安装预装包:
yum localinstall oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm - 确认
/etc/sysctl.conf和/etc/security/limits.d/oracle-database-server-21c-preinstall.conf已写入,否则RPM安装后仍需手动补 - 检查
oracle用户是否存在且属oinstall、dba组;RPM不创建用户,只假设它已存在
oracle-database-server-21c RPM到底装了哪些基础组件?
它只部署二进制文件和脚本,不初始化数据库实例。核心内容包括:
-
/opt/oracle/product/21c/dbhome_1/:主程序目录,含$ORACLE_HOME/bin/sqlplus、lsnrctl等 -
/etc/init.d/oracle-database:SysV风格服务脚本(RHEL 8+默认用systemd,需手动启用systemctl enable oracle-database) -
/opt/oracle/scripts/:含setup.sh(调用runInstaller -silent)和createDB.sh(实际执行dbca -silent) - 不包含监听器配置(
listener.ora)、网络服务名(tnsnames.ora)或数据库文件——这些全靠后续脚本生成
执行setup.sh时最常见的静默失败点
该脚本本质是封装runInstaller,但错误日志分散:/opt/oracle/cfgtoollogs/oui/记录安装器日志,/opt/oracle/cfgtoollogs/dbca/才是数据库创建日志。常见断点:
-
ERROR: [FATAL] [INS-35354] The system does not meet minimum requirements:未运行oracle-database-preinstall-21c的sysctl和limits生效(需sysctl --system && ulimit -a验证) -
ORA-12547: TNS:lost contact:监听器未启动,或oracle用户环境变量中ORACLE_HOME、ORACLE_SID未设,导致lsnrctl start找不到路径 -
Database creation failed:/opt/oracle/oradata目录权限非oracle:oinstall,或磁盘空间不足(默认要求至少8GB空闲)
真正麻烦的不是安装,而是setup.sh成功返回0却没启动监听、没建库——得盯住dbca日志末尾是否出现Database creation complete.,而不是只看shell退出码。











