安装部署11 分钟阅读
麒麟 V10 安装 Oracle 19c 完整教程(信创国产化实战)
在银河麒麟 V10 上安装 Oracle 19c 的完整实战教程。解决国产操作系统依赖包差异、内核兼容性、cv/remenv 检查失败等典型问题,附赠一键自动化部署方案。
2026年4月27日阅读—点赞—收藏—
oracle19c麒麟kylin国产化信创
在知识库中专注阅读,并随时返回相关工具与课程
在银河麒麟 V10 上安装 Oracle 19c 的完整实战教程。解决国产操作系统依赖包差异、内核兼容性、cv/remenv 检查失败等典型问题,附赠一键自动化部署方案。
本章目标:掌握本章核心知识点 前置要求:完成前序章节学习 预计时长:60 分钟
最近两年,信创项目越来越多。尤其是金融、政务、能源行业,甲方的需求很明确:操作系统必须用国产的,但数据库暂时还离不开 Oracle。
这就产生了一个现实问题——Oracle 官方认证的操作系统列表里,根本没有麒麟(Kylin)、统信(UOS)这些国产发行版。MOS 文档写的都是 OEL、RHEL、SLES,去找支持?SR 提过去大概率让你换系统。
但项目不等人。我在过去一年里,先后在银河麒麟 V10 上部署了十几套 Oracle 19c,踩了不少坑,也总结出一套相对稳定的方法论。这篇文章就把整个过程分享出来。
声明:Oracle 官方不支持麒麟 V10,生产环境部署需自行承担兼容性风险。建议在上线前做充分的压力测试。
银河麒麟 V10 底层基于 CentOS 8 / RHEL 8 生态,但并不是简单的换皮。在实际安装 Oracle 时,以下差异会直接导致问题:
最关键的一点:Oracle 的安装前检查(OUI/cv/remenv)会读取 /etc/os-release,发现 ID 不是 ol、rhel、centos 就直接报错。这是大多数人遇到的第一个拦路虎。
1# 关闭防火墙(测试环境)2systemctl stop firewalld3systemctl disable firewalld45# 关闭 SELinux(安装阶段先关闭,后续再按需开启)6setenforce 07sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config89# 配置主机名10hostnamectl set-hostname ora19c11echo "192.168.1.100 ora19c" >> /etc/hosts这是整个安装过程中最繁琐的环节。Oracle 19c 在 RHEL 8 上依赖约 30+ 个 RPM 包,其中大部分在麒麟源里能直接找到,但有几个特殊的:
1dnf install -y bc binutils elfutils-libelf elfutils-libelf-devel \2 fontconfig-devel glibc glibc-devel ksh libaio libaio-devel \3 libgcc libnsl librdmacm libstdc++ libstdc++-devel libX11 \4 libXau libXi libXrender libXtst make net-tools nfs-utils \5 pam policycoreutils smartmontools sysstat unixODBC \6 xorg-x11-utils xorg-x11-xauth以下几个包是重灾区,在麒麟 V10 标准源里找不到:
1. compat-libcap1
Oracle 安装检查要求此包,但麒麟 V10 已经移除。实测 Oracle 19c 运行并不实际依赖它,可以安全跳过。如果 OUI 检查不让过,用以下方式绕过:
1# 从 CentOS 7 源下载 RPM 手动安装(仅用于通过检查)2rpm -ivh compat-libcap1-1.10-7.el7.x86_64.rpm2. compat-libstdc++-33
同样已从麒麟源移除。处理方式一样——从 CentOS 7 源获取 RPM:
1rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm3. libnsl2 与 libnsl
麒麟 V10 上 libnsl 的包名可能是 libnsl2,需要确认:
1dnf list installed | grep libnsl2# 如果只有 libnsl2,创建软链接3ln -sf /usr/lib64/libnsl.so.2 /usr/lib64/libnsl.so.1经验之谈:不要试图把所有 compat 包都装齐。很多包只是 OUI 检查要求,实际运行并不需要。我的做法是——先跳过检查完成安装,再逐一验证功能是否正常。
这是麒麟安装 Oracle 的最关键环节。Oracle 的 cv/remenv 模块在执行预检查时,会严格校验操作系统版本,发现不在支持列表里就直接失败。
安装前临时修改,安装完成后改回来:
1# 备份原始文件2cp /etc/os-release /etc/os-release.bak34# 修改为 RHEL 8 标识5cat > /etc/os-release << 'EOF'6NAME="Red Hat Enterprise Linux"7VERSION="8.6 (Ootpa)"8ID="rhel"9ID_LIKE="fedora"10VERSION_ID="8.6"11PLATFORM_ID="platform:el8"12PRETTY_NAME="Red Hat Enterprise Linux 8.6 (Ootpa)"13EOF1415# 同时修改 /etc/redhat-release16echo "Red Hat Enterprise Linux release 8.6 (Ootpa)" > /etc/redhat-release在解压后的 Oracle 安装目录中,直接修改检查逻辑:
1# 找到 CV 检查的操作系统识别文件2find $ORACLE_HOME/cv -name "cvu_config" 2>/dev/null34# 编辑 cvu_config,添加 kylin 到已知发行版列表5# CV_ASSUME_DISTID=OEL8.6在 $ORACLE_HOME/cv/admin/cvu_config 中添加:
1CV_ASSUME_DISTID=OEL8.6这行配置告诉 CV 检查模块"把当前系统当作 OEL 8.6 来对待",是最干净的绕过方式。
环境准备就绪后,安装流程与标准 RHEL 8 上基本一致。这里只强调差异点。
1groupadd -g 54321 oinstall2groupadd -g 54322 dba3groupadd -g 54323 oper4useradd -u 54321 -g oinstall -G dba,oper oracle5echo "oracle:Oracle123" | chpasswd1cat >> /etc/sysctl.conf << 'EOF'2fs.aio-max-nr = 10485763fs.file-max = 68157444kernel.shmall = 20971525kernel.shmmax = 42949672956kernel.shmmni = 40967kernel.sem = 250 32000 100 1288net.ipv4.ip_local_port_range = 9000 655009net.core.rmem_default = 26214410net.core.rmem_max = 419430411net.core.wmem_default = 26214412net.core.wmem_max = 104857613EOF14sysctl -p1# 解压安装文件到 ORACLE_HOME2mkdir -p /u01/app/oracle/product/19.3/dbhome_13cd /u01/app/oracle/product/19.3/dbhome_14unzip -oq /tmp/LINUX.X64_193000_db_home.zip56# 使用响应文件进行静默安装7./runInstaller -silent -responseFile /tmp/db_install.rsp \8 -ignorePrereqFailure \9 ORACLE_BASE=/u01/app/oracle \10 ORACLE_HOME=/u01/app/oracle/product/19.3/dbhome_1重点:
-ignorePrereqFailure参数在麒麟上是必须的,否则 OS 检查不通过就会中断安装。
安装完成后,以 root 身份执行:
1/u01/app/oraInventory/orainstRoot.sh2/u01/app/oracle/product/19.3/dbhome_1/root.sh以下是我在多个项目中反复遇到的麒麟特有问题,按出现频率排序:
现象:[INS-13001] Environment does not meet minimum requirements
原因:Oracle 安装程序内置的 OS 检测脚本无法识别麒麟发行版。
解决:设置 CV_ASSUME_DISTID=OEL8.6(见上文),同时使用 -ignorePrereqFailure 参数。
现象:安装日志中出现 Unable to determine distribution,或 runcluvfy.sh 执行报错。
解决:按上文方法修改 /etc/os-release 为 RHEL 8 标识。安装完成后务必恢复原始文件:
1cp /etc/os-release.bak /etc/os-release现象:安装后启动数据库时报 libpthread.so.0: symbol lookup error 或类似符号找不到的错误。
原因:麒麟 V10 的 glibc 虽然版本号是 2.28,但内部补丁级别与 RHEL 8 不完全一致。
解决:
1# 确认 glibc 版本2rpm -qa | grep glibc34# 如果版本低于 2.28-151,升级 glibc5dnf update glibc glibc-devel glibc-headers -y67# 重建 Oracle 链接8cd $ORACLE_HOME/lib9make -f ins_rdbms.mk ioracle现象:配置 dbora.service 开机自启后,系统启动时数据库未能正常拉起。
原因:麒麟 V10 的 systemd 版本和服务依赖链与 RHEL 8 略有不同。
解决:确保 service 文件中正确设置依赖关系:
1[Unit]2Description=Oracle Database Service3After=network-online.target remote-fs.target4Wants=network-online.target56[Service]7Type=forking8User=oracle9Environment="ORACLE_HOME=/u01/app/oracle/product/19.3/dbhome_1"10ExecStart=/u01/app/oracle/product/19.3/dbhome_1/bin/dbstart /u01/app/oracle/product/19.3/dbhome_111ExecStop=/u01/app/oracle/product/19.3/dbhome_1/bin/dbshut /u01/app/oracle/product/19.3/dbhome_112LimitNOFILE=6553613LimitNPROC=1638414TimeoutStartSec=6001516[Install]17WantedBy=multi-user.target关键点:TimeoutStartSec 要设够长(默认 90 秒可能不够),After 要加 remote-fs.target 防止存储未挂载就启动。
现象:数据库启动时报 Permission denied 访问 /dev/shm 或数据文件目录。
原因:麒麟 V10 的 SELinux 策略比标准 RHEL 更严格,部分自定义规则会阻止 Oracle 进程访问共享内存。
解决:
1# 查看 SELinux 拒绝日志2ausearch -m avc -ts recent34# 生成并加载自定义策略模块5ausearch -m avc -ts recent | audit2allow -M oracle_kylin6semodule -i oracle_kylin.pp78# 或者对 Oracle 相关目录设置正确的上下文9chcon -R -t usr_t /u01/app/oracle现象:/proc/meminfo 中 HugePages_Total 为 0,即使已在 sysctl.conf 中配置。
原因:麒麟 V10 内核默认启用了透明大页(THP),与 Oracle 推荐的静态大页冲突。
解决:
1# 禁用透明大页2echo never > /sys/kernel/mm/transparent_hugepage/enabled3echo never > /sys/kernel/mm/transparent_hugepage/defrag45# 写入 grub 永久生效6grubby --update-kernel=ALL --args="transparent_hugepage=never"78# 重新配置静态大页9sysctl -w vm.nr_hugepages=4096安装完成后,按以下步骤逐一验证:
1# 1. 检查 Oracle 进程2su - oracle3sqlplus / as sysdba45SQL> SELECT STATUS FROM V$INSTANCE;6-- 应返回 OPEN78SQL> SELECT VERSION_FULL FROM V$INSTANCE;9-- 应返回 19.x.x.x.x1011# 2. 验证监听器12lsnrctl status1314# 3. 创建测试表空间和用户,验证读写15SQL> CREATE TABLESPACE test_ts DATAFILE '/u01/app/oracle/oradata/test01.dbf' SIZE 100M;16SQL> CREATE USER testuser IDENTIFIED BY test123 DEFAULT TABLESPACE test_ts;17SQL> GRANT CONNECT, RESOURCE TO testuser;1819# 4. 检查 alert log 是否有异常20tail -100 $ORACLE_BASE/diag/rdbms/*/*/trace/alert_*.log如果以上步骤全部通过,说明安装已经基本成功。建议再跑一轮 dbca 或手动创建数据库后进行基础压力测试。
除了麒麟 V10,目前信创项目中常见的国产操作系统还有两个:
统信 UOS 底层同样基于 Debian/CentOS 体系(服务器版基于 CentOS),安装流程与麒麟类似。主要差异在于:
/etc/os-release 中 ID="uos",需要同样修改openEuler 是华为主导的开源 OS,社区活跃度较高。相比麒麟和统信:
CV_ASSUME_DISTID 绕过检查三者的核心处理思路一致:伪装 OS 标识 → 补齐依赖包 → 跳过前置检查 → 标准流程安装。
在国产 OS 上安装 Oracle,核心挑战不在安装本身,而在于环境适配——依赖包差异、OS 识别、内核兼容性,每一项都需要针对性处理。手动操作容易遗漏,尤其是需要批量部署多套环境时。
ora100 一键安装脚本 已内置国产操作系统适配模块,覆盖 20+ 主流 Linux 发行版,包括:
脚本会自动完成 OS 识别伪装、依赖包补齐、内核参数调优、CV 检查绕过等全部前置工作,将原本需要半天的环境准备压缩到 5 分钟内完成。
如果你正在做信创项目,不妨试试 —— 少踩坑,早下班。
本章介绍了以下核心内容: