oracle 19c不能源码编译,仅提供预编译二进制包;其runinstaller硬校验/etc/os-release中id必须为"rhel"且version_id为"8.6"等白名单值,麒麟v10因id="kylin"触发ins-32037错误,需临时修改并安装libnsl等特有依赖,安装后须立即还原系统标识以避免yum/dnf异常。
不能直接编译 oracle 19c —— 它是闭源商业软件,官方只提供预编译的二进制安装包(linux.x64_193000_db_home.zip 或 linux.arm64_1919000_db_home.zip),不存在“源码编译”这一操作。所谓“编译安装”,实际是绕过发行版校验、补全缺失依赖、调整环境后运行官方 runinstaller 完成部署。
为什么 runInstaller 报 INS-32037 错误
Oracle 19c 的 runInstaller 启动时硬检查 /etc/os-release 和 /etc/redhat-release,只认 ID="rhel"、ID="centos"、ID="ol" 等白名单值。银河麒麟 V10 的 ID="kylin" 会被直接拒绝,报错:[fatal] [ins-32037] the operating system does not meet minimum requirements。
-
ID="rhel"必须存在且严格等于rhel(不能写centos或ol) -
VERSION_ID建议设为"8.6"或"8.8";设为"8.0"可能触发补丁版本校验失败 - 如果
/etc/redhat-release存在(哪怕内容为空或写着 CentOS 7),runInstaller会优先读它并报错 —— 必须rm -f /etc/redhat-release - 改完
/etc/os-release后需退出当前 shell 并重新登录,否则LSB_RELEASE环境变量不刷新,校验仍失败
麒麟 V10 必装依赖与关键差异点
麒麟 V10 源中部分包名与 RHEL 不同,直接套用 RHEL 文档会缺包。以下命令已适配 Kylin V10 SP2/SP3:
- 基础工具链:
yum install -y binutils glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make nfs-utils net-tools sysstat unixODBC unixODBC-devel -
libnsl是高频缺失项:必须显式安装yum install -y libnsl.x86_64(ARM 架构用libnsl.aarch64) - 图形化安装还需:
yum install -y xorg-x11-apps xorg-x11-fonts-* libXtst-devel libXrender-devel - ARM 版本额外注意:
ln -s /lib64/libnsl.so.1 /lib64/libnsl.so.2(Oracle 19c ARM 安装器链接时依赖该软链)
静默安装 responsefile 的麒麟特异性配置
直接复用 RHEL 的 db_install.rsp 在麒麟上大概率失败,关键字段必须重写:
-
oracle.install.db.config.starterdb.characterSet=AL32UTF8(必须显式指定,否则默认 ZHS16GBK 可能引发字符集冲突) -
oracle.install.db.InstallEdition=EE(企业版,社区版不支持麒麟) -
oracle.install.db.OSDBA_GROUP=dba(组名必须真实存在,麒麟默认创建的是oinstall和dba,不能写asmadmin) - 路径必须绝对且存在:
oracle.install.option=INSTALL_DB_SWONLY+UNIX_GROUP_NAME=oinstall+INVENTORY_LOCATION=/u01/app/oraInventory - 执行命令需加
-ignorePrereqFailure(跳过部分非致命预检,如字体检测),但不可省略-force
安装后立即要做的事
Oracle 安装完成不等于可用。麒麟系统上最容易被忽略的三件事:
- 还原
/etc/os-release:安装完必须立刻恢复原始备份(cp /etc/os-release.bak /etc/os-release),否则dnf/yum会因 ID 错误无法更新,合规审计通不过 - 手动执行
root.sh:脚本位于$ORACLE_HOME/root.sh,必须以 root 身份运行,它会配置权限、启动监听器、注册服务 —— 静默安装不会自动调用 - 验证
libclntsh.so:若后续应用连接报libclntsh.so: cannot open shared object file,说明LD_LIBRARY_PATH未生效或软链错误,应检查ls -l $ORACLE_HOME/lib/libclntsh.so*是否指向正确版本
真正麻烦的从来不是安装动作本身,而是麒麟系统对“兼容性”的定义比 RHEL 更窄:内核参数、用户 limits、SELinux 状态、甚至 /proc/sys/fs/aio-max-nr 的数值,都可能让 runInstaller 在最后一步崩溃。这些细节不会报明确错误,只会卡在“正在配置数据库”不动 —— 所以预检查日志(/tmp/OraInstall*/installActions*.log)必须逐行看。











