Oracle 19C在Linux上安装:系统环境与依赖配置实战

发布时间:2026/11/4 4:00:15
Oracle 19C在Linux上安装:系统环境与依赖配置实战 简介《Linux安装Oracle19C详细步骤》面向Linux系统管理员、数据库运维人员及Oracle初学者聚焦CentOS 7与Red Hat 7环境下部署Oracle 19C前的系统准备与基础配置可作为实验环境搭建、上线前自查和日常查阅的流程参考。压缩包内共1个docx文档大小约2.99MB以命令记录、配置片段和注意事项为主内容组织清晰适合离线阅读与逐项核对。目前已有17399人学习下载具备较高的参考热度。文档覆盖内存、硬盘与Swap空间检查防火墙、图形桌面和SELinux处理静态IP与主机名设置以及dba、asmdba等用户组和oracle用户创建、limits.conf、sshd_config与环境变量调整等要点能帮助读者形成安装前检查清单理解关键系统参数与权限配置减少因环境不一致造成的反复排查适合需要按文档落地并对照命令验证的初中级读者。1. Oracle 19C 装在 Linux 上为什么第一道坎不是安装包第一次在 Linux 上装 Oracle 19C 的人十有八九以为难点在 runInstaller 那几张图形界面。我印象最深的一次是给一个模拟项目搭测试库安装包解压完、./runInstaller一敲Prerequisite Checks 整页飘红后面折腾到第二天才定位出来——/etc/hosts里主机名和 IP 没对上SELinux 还留在 enforcing两个问题叠在一起报错看着像版本不兼容。Oracle 19C 挑的从来不是安装包是底下这套系统底座内存、Swap、内核信号量、文件句柄上限、用户组归属、RPM 依赖少一环就停在某个你读不懂的检查项上。这套步骤适合在 RHEL 7 系CentOS 7以及实测过的 RHEL 7.4上从零装一套单实例库也适合把旧库整体迁到新机器的场景。下面按我实际装机的顺序走一遍命令可以直接抄。2. 装前环境核对与系统开关三条命令、三个开关、一套静态 IP装 Oracle 19C 这一步做不扎实后面全是补丁式返工。这一章要干完三件事把机器底子摸清、把挡路的系统开关关掉、把网络和主机名固定下来。2.1 内存、磁盘、Swap 三条命令先摸清底子# 物理内存总量单位 kB除以 1024 换成 MB grep MemTotal /proc/meminfo # 各分区容量和剩余空间重点看根分区和将来放 /u01 的分区 df -h # Swap 总量同样以 kB 计 grep SwapTotal /proc/meminfo这三条命令的输出里MemTotal 那一行是物理内存总量SwapTotal 是交换分区总量单位都是 kB看着数字很大别慌除两个 1024 才是 GB。资料里给的下限是内存不小于 1G、可用硬盘不小于 8G、Swap 不小于 2G但那个下限是“能启动安装器”的线不是“能跑起来”的线。图形化安装阶段光 JRE 加安装器本身就要吃掉大半内存我一般会把内存给到 2G 以上Swap 给到 4G 或者跟内存持平/u01单独划 30G 以上因为后面 dbca 建库还要复制数据文件、写 redo 和归档8G 根本兜不住。内存或者 Swap 不够的时候临时补一块 Swap 是最快的救法# 生成 4G 的空文件作为 swap dd if/dev/zero of/swapfile bs1M count4096 chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 写进 fstab否则重启就没了 echo /swapfile swap swap defaults 0 0 /etc/fstabbs1M count4096就是 4G想要多大改 count 的数字。swapon之后再用grep SwapTotal /proc/meminfo复核一遍数字变没变这一步别省——mkswap报成功但没swapon的情况我见过不止一次。2.2 防火墙、SELinux 与图形桌面三个开关的处理顺序# 防火墙先看状态再停服务最后取消开机自启 systemctl status firewalld.service systemctl stop firewalld.service systemctl disable firewalld.service# 图形桌面看当前默认 target systemctl get-default # 切成命令行模式装库的机器一般不需要本地桌面 systemctl set-default multi-user.target# SELinux临时关闭 永久关闭两步都要做 getenforce setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # 复核看到 disabled 才算彻底 sestatus -v这三组命令里有几个参数值得说清楚。systemctl stop只是当前会话停掉重启就回来所以必须补一条disabledisable之后再systemctl is-enabled firewalld应该是 disabled。setenforce 0是把当前运行状态切到 permissive重启即失效改/etc/selinux/config是改默认值两条都要做才是完整关闭。还有一个坑sed这条替换只在文件里原本写的是SELINUXenforcing时才生效如果配置文件里已经是permissive或者带了别的空格替换会静默失败、不报错。所以改完一定要用getenforce和sestatus -v复核别信 sed 的退出码。图形桌面这一项资料里的原话是“看环境是否需要一般忽略”这个判断是对的。切成multi-user.target不影响用远程 X 服务端做图形化安装因为 runInstaller 只是把窗口画到DISPLAY指定的那台机器上跟 Oracle 服务器本地有没有桌面环境没关系。反过来如果你打算用 VNC 连上去装那就得保留graphical.target切之前想清楚。systemctl set-default graphical.target是切回图形模式的命令记一下别到时候改不回来。2.3 静态 IP 和 hosts主机名对不上后面全白搭vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.199.111 GATEWAY192.168.199.1 NETMASK255.255.255.0 DNS18.8.8.8文件名里的ens33要根据实际网卡名来用ip addr看不是每台机器都叫这个。BOOTPROTO从 dhcp 改成 static 是核心改动NAME和DEVICE必须跟文件名里的设备名一致不一致时network服务要么起不来要么配了不生效这是个很隐蔽的坑ONBOOTyes保证开机自动起网卡。IPADDR建议跟你自己电脑所在的网段一致否则 SSH 客户端可能连不上DNS1写公共 DNS 或者内网 DNS 都行机器不打算出网的话写内网 DNS 更稳。vi /etc/hosts # 添加一行 192.168.199.111 oracledbservice network restart # 7 系上等价于 systemctl restart network/etc/hosts这一行必须加而且 IP 必须和ifcfg-ens33里的IPADDR完全一致。Oracle 安装器在检查阶段会做主机名反向解析解析不到或者解析出来的 IP 对不上检查项里就报主机名验证失败。这个问题在装完之后建监听、启实例的时候还会再卡一次所以放在这一步解决最划算。service network restart在 CentOS 7 上会提示 Redirecting to /bin/systemctl属于正常现象。3. 用户、目录与内核参数Oracle 19C 依赖的账户体系怎么搭这一章的东西看着琐碎但每一项都对应安装器检查列表里的一项。写错一个数字检查阶段就会给你一片红色。3.1 oinstall 和 dba 组GID、UID 为什么要写死groupadd -g 5001 dba groupadd -g 5002 asmdba groupadd -g 5003 backupdba groupadd -g 5004 dgdba groupadd -g 5005 kmdba groupadd -g 5006 racdba groupadd -g 5007 oper groupadd -g 5008 oinstall/usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle passwd oracle-g指定主组-G指定附加组。oracle 用户的主组必须是 oinstalldba 放在附加组里这是 Oracle 的惯例安装器会检查。UID 54321 和这几个 GID 不是强制值但写死有实际意义以后挂 NFS、做备库、或者从老机器把数据文件迁过来的时候权限不会因为 UID 不一致而对不上能省掉一堆chown。另外几个组按需建就行只装单实例的话 asmdba、racdba 这些用不上但建着也不影响属于一次性把路铺宽的做法。如果机器上已经有这些组groupadd会报 already exists不用管继续往下走。passwd oracle那一步别设太刁钻的符号组合有些安装脚本和连接串里会用到这个密码特殊字符需要转义容易出问题。3.2 /u01 目录布局与权限mkdir -p /u01/app/oracle/product/19.2.0/db_1 chown -R oracle:oinstall /u01 chmod -R 775 /u01/u01是 Oracle 的惯例挂载点ORACLE_BASE放/u01/app/oracleORACLE_HOME放 base 下面的product/版本/db_1。路径里的19.2.0只是目录命名习惯跟安装包实际的补丁版本号不一定要一一对应后面打补丁时这个目录名一般也不动别为了“对齐版本”去改它。权限用 775 而不是 755是因为 oinstall 组的成员需要对目录有写权限打补丁、跑脚本的时候要用组身份往里写东西。如果/u01是单独挂载的逻辑卷务必先建卷、格式化、写进/etc/fstab再建目录——顺序反了mkdir建出来的是根分区上的目录等装到一半发现空间不够再挪那是真的后悔药都买不到。建之前用df -h确认/u01已经是独立挂载点这一眼很值。3.3 limits.conf、sysctl.conf、sshd_config 三处一起改vi /etc/security/limits.conf # 末尾追加 oracle soft nproc 131072 oracle hard nproc 131072 oracle soft nofile 131072 oracle hard nofile 131072soft 和 hard 两行都要写只写 soft 的话 hard 还是系统默认值通常是 4096实际生效取两者中较小的那个等于白改。131072 是资料里给的值目的是让 oracle 用户能开足够多的进程和文件句柄数据库启动阶段会同时打开大量文件这个值不够会直接启动失败。改完可以用su - oracle之后跑ulimit -u和ulimit -n验证。vi /etc/ssh/sshd_config # 找到并改成 GSSAPIAuthentication no UseDNS noUseDNS no让 SSH 登录时不去反向解析客户端地址登录速度会明显变快这在反复连服务器调试的环境里很实用。GSSAPIAuthentication no关掉 GSSAPI 认证避免某些环境下 SSH 卡在认证阶段。改完必须systemctl restart sshd才生效重启前保持另一个 SSH 会话开着别把自己关在门外。vi /etc/sysctl.conf # 追加 kernel.sem 250 32000 100 128 fs.file-max 6815744 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576# 让配置立即生效 sysctl -pkernel.sem的四个值依次是 SEMMSL单个信号量集最多多少个信号量、SEMMNS整机最多多少个信号量、SEMOPM每次 semop 调用最多操作多少个信号量、SEMMNI最多多少个信号量集安装器会逐项比对。fs.file-max是整机级别的文件句柄上限。后面四个net.core参数是 socket 读写缓冲区的大小监听和客户端连接会用到。sysctl -p执行后要看到每一条都打印出来才算写对有语法错误的那一条会被跳过并报错注意看输出。vi /etc/profile # 追加 if [ $USER oracle ]; then if [ $SHELL /bin/ksh ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi这段是按用户身份设 ulimit只有 oracle 登录 shell 时才生效。它和 limits.conf 是两道保险limits.conf 靠 PAM 生效profile 里这段在没有 PAM 或者用su方式切换用户时兜底。两个都配别只配一个。4. RPM 依赖与图形化安装CentOS 7 和 RHEL 7.4 两条路怎么走到这一步系统底座已经搭好了接下来是把 Oracle 19C 的软件本体装进去。CentOS 7 有预安装包可以偷懒RHEL 7.4 得手工补依赖两条路的差别就在这。4.1 oracle-database-preinstall-19c装它省事不装要手工补cd /u01 yum localinstall -y oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm yum localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm这两个包要先上传到/u01下面。preinstall 包干的事不少自动建 oracle 用户、改limits.conf、改sysctl.conf、装依赖包等于把上一章很多活自动做了一遍。如果已经手工做过一遍装的时候会看到不少 already exists 的提示不影响结果。ee 包是数据库软件本体装完之后ORACLE_HOME会落在/opt/oracle/product/19c/dbhome_1这种路径下跟手工安装的/u01/...不是一回事选哪条路要在这一步定死。如果打算完全按手工路径走ORACLE_HOME放/u01下面用 runInstaller 装那就只装 preinstallee 包跳过。两个都装的话系统里会有两套软件后面环境变量指哪套就是哪套容易乱。yum localinstall比裸rpm -ivh好的地方在于它会去仓库补依赖少装一堆包。4.2 依赖包核对一条 rpm -q 全查完rpm -q bc binutils cpp compat-libcap1 compat-libstdc \ elfutils-libelf elfutils-libelf-devel fontconfig-devel \ gcc gcc-c glibc glibc-devel ksh kmod kmod-libs \ libaio libaio-devel libgcc libstdc libstdc-devel \ make sysstat unixODBC这条命令会把每个包的状态打出来输出里带not installed的就是缺的。补的时候分清两种# 系统里没有的包新装 rpm -ivh 缺少的包名.rpm # 系统里有低版本的包升级 rpm -Uvh 需要升级的包名.rpm-ivh和-Uvh用反了会报 already installed 或者依赖冲突。有个细节compat-libstdc在 7 系上实际的包名通常带-33后缀直接拿这个短名去rpm -q会显示 not installed其实系统里装的是compat-libstdc-33用全名查一下再决定要不要补别重复装。补依赖的时候优先用yum provides反查是哪个包提供的比一个个试快。4.3 RHEL 7.4 手工补包顺序和版本号都不能错rpm -ivh kernel-headers-4.9.86-30.el7.x86_64.rpm rpm -ivh glibc-headers-2.17-196.el7.x86_64.rpm rpm -ivh glibc-devel-2.17-196.el7.x86_64.rpm rpm -ivh libmpc-1.0.1-3.el7.x86_64.rpm rpm -ivh cpp-4.8. p a hrefhttps://download.csdn.net/download/changxiaowei1990/12222634 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询