最可靠方式是使用 OracleShellInstall 一键脚本,因 SUSE 缺少 oracle-database-preinstall-19c 等官方预检包,RPM 安装会因依赖缺失、用户组未建、内核参数未调等失败;脚本需手动配置 ORACLE_BASE、INSTALL_TYPE、DB_NAME 等关键参数,并确保 ISO 挂载至 /mnt、补丁解压至对应数字命名子目录,且 root.sh 权限问题须通过 chown -R oracle:oinstall 修复。

在 SUSE Linux(尤其是 SP3/SP5)上自动化安装 Oracle 19c,最可靠、可复现的方式是使用 OracleShellInstall 一键脚本,而非依赖 RPM 或静默响应文件——后者在 SUSE 上缺少官方预检包支持,容易因内核参数、用户资源限制或 SELinux 等兼容性问题中断。
为什么不用 rpm -ivh 安装 oracle-database-ee-19c?
SUSE 不提供 oracle-database-preinstall-19c 这类预检 RPM 包(该包仅针对 RHEL/CentOS/OL),直接运行 yum localinstall 或 rpm -ivh 会报错:failed dependencies,且无法自动创建 oinstall/dba 组、设置 /etc/security/limits.conf、校验 /dev/shm 大小等关键步骤。RPM 方式在 SUSE 上本质不可用。
OracleShellInstall 脚本实际要改哪些配置?
脚本本身是 Shell + Python 混合,运行前需手动编辑以下几处(路径通常为 /soft/OracleShellInstall):
-
ORACLE_BASE和ORACLE_HOME:建议设为/u01/app/oracle和/u01/app/oracle/product/19c/dbhome_1,避免空格或中文路径 -
INSTALL_TYPE:填SI(单机)或RAC,SUSE SP5 单机场景选SI -
DB_NAME和DB_VERSION:如ORCLCDB和19.22.0.0.0,必须与补丁包版本一致(例如p35926646_190000_Linux-x86-64.zip对应 19.22) -
OS_USER和OS_GROUP:确认已存在oracle用户和oinstall/dba组,脚本不会自动创建用户
挂载 ISO 和补丁包路径不匹配会导致什么?
脚本默认从 /mnt 读取 SUSE 系统 ISO(用于 zypper install 依赖),但若你挂载在 /media/suse15,脚本会卡在 zypper refresh 并超时退出。解决方法只有两个:
- 重挂载 ISO 到
/mnt(推荐):mount -o ro /dev/sr0 /mnt - 或修改脚本中所有
/mnt为你的实际路径,包括check_yum_source()和install_os_packages()函数内的硬编码
另外,补丁包(如 p35685663)必须解压到 /soft 下的独立子目录(如 /soft/35685663),脚本靠目录名识别补丁号,不是靠 ZIP 文件名。
执行后 root.sh 报错 “Permission denied” 怎么办?
常见于 SUSE 的 strict mode:脚本以 root 运行但未显式切换到 oracle 用户执行 runInstaller,导致 $ORACLE_HOME/root.sh 中某些 chown 操作失败。临时修复方式是手动执行:
su - oracle -c "/u01/app/oracle/product/19c/dbhome_1/root.sh"
但更稳妥的做法是在脚本末尾加 chown -R oracle:oinstall /u01/app/oracle,否则后续 sqlplus / as sysdba 会提示 ORA-01031: insufficient privileges —— 这个权限链断裂点最容易被忽略。


















