首页 / 资讯中心 / 文章详情

CentOS 7 低配环境安装 Oracle 19C 全流程与避坑指南

CentOS 7 低配环境安装 Oracle 19C 全流程与避坑指南 ★ FEATURED ARTICLE
简介这份资源面向需要在 CentOS 7 或 Red Hat 7 环境中部署 Oracle 19C 的数据库运维人员与初学者提供一份可对照执行的安装操作文档帮助读者理清从系统检查到安装收尾的完整流程。压缩包内共 1 个 docx 文件约 2.99MB以图文与命令片段结合的方式组织内容便于边看边操作。文档围绕物理内存、硬盘与 Swap 分区等系统要求展开依次覆盖关闭防火墙、图形桌面与 selinux修改静态 IP、初始化主机名、创建 dba 等用户组与 oracle 用户以及调整 limits.conf、sshd_config 和环境变量等关键环节并附有具体命令与配置示例方便读者按步骤核对与排错。目前已有 17392 人学习下载适合希望快速搭建 Oracle 19C 实验环境、减少安装踩坑的读者参考使用。1. 一台 1G 内存的 CentOS 7 怎么把 Oracle 19C 装起来上周有个做运维的朋友甩过来一台虚拟机1G 物理内存、8G 系统盘问我能不能把 Oracle 19C 装上去跑个测试库。我第一反应是“这配置够呛”但翻完他手里那份安装笔记发现按步骤走其实能成——前提是你得把系统层该关的关、该调的调别一上来就闷头跑runInstaller。这份资源就是一套面向 CentOS 7 / Red Hat 7 的 Oracle 19C 安装实操步骤从内存硬盘 Swap 的硬性检查到防火墙、SELinux、静态 IP、用户组、内核参数、RPM 依赖再到图形化安装和建实例一条线拉到底。它适合两类人一是第一次在 Linux 上装 Oracle、被各种前置条件绕晕的新手二是装过但总在 RPM 依赖或图形界面那一步翻车、想找一份能照着抄的清单的老手。下面我按自己复现的顺序拆一遍重点讲参数为什么这么设、哪几步最容易踩坑。2. 装之前先把系统底子摸清内存、Swap 与内核参数Oracle 19C 对系统资源的要求不算高但“不算高”不等于“随便给”。这份笔记里写的物理内存不小于 1G、可用硬盘不小于 8G、Swap 不小于 2G是能跑起来的下限不是推荐值。我一般会在这三个数上各留一点余量尤其是 Swap——安装过程中如果内存吃紧触发 OOMrunInstaller会莫名其妙退出日志里还不一定写得清楚这种玄学问题排查起来最费时间。2.1 三条检查命令与它们的判读方式先别急着改配置把现状摸清楚。三条命令分别对应内存、磁盘和 Swap# 查看物理内存总量单位 kB grep MemTotal /proc/meminfo # 查看各挂载点磁盘使用情况重点看 / 和 /u01 所在分区 df -h # 查看 Swap 总量单位 kB grep SwapTotal /proc/meminfoMemTotal出来如果是 1000000 kB 左右那就是接近 1G刚好卡线df -h要看的是可用空间Available 列不是已用SwapTotal为 0 说明根本没开 Swap得先补上。补 Swap 的常见做法是建一个 swap 文件比如 2G# 创建 2G 的 swap 文件 dd if/dev/zero of/swapfile bs1M count2048 chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 写入 fstab 保证开机自动挂载 echo /swapfile swap swap defaults 0 0 /etc/fstabbs1M count2048就是 2048 个 1M 块合计 2Gswapon之后再用grep SwapTotal确认一次。这里有个细节如果系统盘本身只剩 8G 出头再切 2G 做 Swap/u01就没多少空间放安装包和数据库文件了所以磁盘规划要提前想好别装到一半发现空间不够。2.2 内核参数与 limits.conf 的对应关系系统底子摸清后接着调内核参数。这份笔记里给的sysctl.conf片段是精简版核心是信号量、文件句柄和网络缓冲区# 编辑内核参数 vim /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四个数分别是信号量集合的最大数、系统级信号量最大值、每次 semop 调用最大操作数、系统级信号量最大数Oracle 的并行进程会用到fs.file-max是系统级文件句柄上限配合/etc/security/limits.conf里给 oracle 用户的nofile 131072一起看——前者是天花板后者是单个用户的配额两个都得够。net.core.*mem*那四行是网络收发缓冲区RAC 或大量连接场景下有用单机测试库影响不大但加上没坏处。limits.conf的写法要注意用户和组的匹配# 编辑 oracle 用户的资源限制 vim /etc/security/limits.conf # 追加 oracle soft nproc 131072 oracle hard nproc 131072 oracle soft nofile 131072 oracle hard nofile 131072soft 是软限制、hard 是硬限制普通用户能把 soft 提到 hard 但超不过 hard所以两个值设成一样最省心。改完limits.conf要重新登录 oracle 用户才生效ulimit -n验证一下别改完就在当前 shell 里跑安装那样读的还是旧值。3. 关防火墙、SELinux 与配静态 IP别让网络层拖后腿系统参数调完接下来是环境层。防火墙、SELinux、静态 IP 这三件事看着琐碎但任何一件没弄对后面图形化安装或者客户端连接都会出问题。我见过最常见的翻车是 SELinux 没关干净runInstaller跑到一半报权限错误日志里一堆Permission denied查半天才发现是 enforcing 模式在拦。3.1 防火墙与 SELinux 的关闭顺序先关防火墙再处理 SELinux顺序别反。防火墙用 systemctl 管# 查看状态 systemctl status firewalld.service # 停止并禁用开机自启 systemctl stop firewalld.service systemctl disable firewalld.servicestop是当前会话立即停disable是取消开机自启两个都要执行只 stop 不 disable 的话重启又回来了。SELinux 分临时和永久两种关法# 查看当前 SELinux 状态 getenforce # 临时关闭重启失效 setenforce 0 # 永久关闭改配置文件 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/configgetenforce返回 Enforcing 说明开着Permissive 是只记录不拦截Disabled 是彻底关。sed那行把SELINUXenforcing替换成SELINUXdisabled改完必须重启才彻底生效临时setenforce 0只能撑到下次重启。我的习惯是两步都做先setenforce 0让当前会话不拦再改配置文件保证重启后也是关的。3.2 静态 IP 配置与网卡名对应静态 IP 是为了让主机名解析稳定也方便用客户端工具连。配置文件在/etc/sysconfig/network-scripts/下文件名跟着网卡走常见是ifcfg-ens33# 编辑网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 关键项 TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.199.111 GATEWAY192.168.199.1 NETMASK255.255.255.0 DNS18.8.8.8BOOTPROTO从dhcp改成static是核心动作NAME和DEVICE必须跟文件名里的网卡名一致不一致网络起不来。IPADDR的网段要和你本地机器同网段否则客户端工具连不上——这是笔记里特意提醒的点很多人卡在这。改完重启网络service network restart然后ip addr确认地址生效ping一下网关通不通。主机名解析在/etc/hosts里补一行192.168.199.111 oracledb让本机能把主机名解析到自己的 IPOracle 监听注册时会用到。4. 用户组、目录权限与 RPM 依赖安装前最容易翻车的三块环境层弄完进入安装准备的核心区。用户组和目录权限决定runInstaller能不能正常写文件RPM 依赖决定预检查能不能过。这两块是整份笔记里信息密度最高的部分也是我复现时花时间最多的地方。4.1 用户组划分与 oracle 用户的创建Oracle 的组不是随便建的每个组对应一类权限。笔记里给了 8 个组实际单机安装最常用的是oinstall软件所有者、dba数据库管理、oper操作员三个其余asmdba、backupdba、dgdba、kmdba、racdba是 ASM、备份、Data Guard、RAC 场景才用得上单机装上不影响建了也无妨# 创建组-g 指定 GID 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 # 创建 oracle 用户-u 指定 UID-g 主组-G 附加组 /usr/sbin/useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle # 设置密码 passwd oracle-g oinstall是主组-G后面跟一串附加组注意oinstall不在-G里重复因为它已经是主组。UID 54321、GID 5001 这些是笔记里给的固定值实际环境里只要不冲突就行但多台机器做 Data Guard 时保持一致会省事。目录创建和授权# 创建 Oracle 基目录 mkdir -p /u01/app/oracle/product/19.2.0/db_1 # 把 /u01 整棵树的属主改成 oracle:oinstall chown -R oracle:oinstall /u01 # 权限 775属主和同组可读写执行 chmod -R 775 /u01chown -R递归改属主是关键runInstaller以 oracle 身份跑目录属主不对就写不进去。775给组写权限方便同组其他账号维护。4.2 RPM 依赖的检查与补装策略CentOS 7 和 Red Hat 7 的依赖处理方式不一样。CentOS 7 可以直接用 Oracle 提供的预安装包它会自动把依赖拉齐# 进入安装包所在目录 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.rpmyum localinstall比rpm -ivh好在会自动解析依赖缺什么从源里补。装完用一条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的就是缺的逐个补。Red Hat 7 没有预安装包那么顺得手动rpm -ivh装缺的、rpm -Uvh升级低版本的笔记里列了一长串具体包名和版本照着敲就行。这里有个血泪经验rpm -ivh遇到依赖冲突会直接失败别硬--nodeps强装先把依赖顺序理清楚否则装完runInstaller预检查照样报错。4.3 环境变量与图形化安装的衔接依赖齐了切到 oracle 用户配环境变量。.bash_profile里的几个变量决定了安装程序找不找得到路径# 切换到 oracle 用户 su - oracle # 编辑环境变量 vi .bash_profile # 追加 export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/19.2.0/db_1 export ORACLE_SIDorcl export PATH$ORACLE_HOME/bin:/usr/sbin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib export LANGC export NLS_LANGAMERICAN_AMERICA.AL32UTF8 # 生效 source .bash_profileORACLE_HOME必须和前面mkdir的路径完全一致差一个字符runInstaller就找不到安装文件。NLS_LANG设成AL32UTF8是字符集建库时如果这里和数据库字符集不一致中文会乱码。LANGC是为了让安装界面的英文不乱码装完可以改回来。图形化安装靠 X11 转发DISPLAY指向你本地装了 X 工具的那台机器# 设置 DISPLAYIP 是本地机器的不是 Oracle 服务器的 export DISPLAY192.168.199.129:0.0 # 验证 env | grep DIS # 允许远程连接 xhost xhost 输出access control disabled就说明通了。然后进安装目录跑runInstallercd /u01/app/oracle/product/19.2.0/db_1/database ./runInstaller界面里只选“仅安装软件”实例等软件装完再用dbca建。装完会提示用 root 跑root.sh路径照抄执行。最后用netca建监听、dbca建实例整个流程才算闭环。5. 避坑清单五个真实翻车点与排查路径装 Oracle 这件事步骤本身不难难的是每一步的失败信号不明显。下面五个坑是我和周围人实际踩过的按“现象 → 原因 → 解决”记下来照着对能省不少时间。坑一runInstaller启动后闪退日志无明确报错。现象是敲完命令界面一闪就没了/tmp/OraInstall*日志里只有一行Cant connect to X11 window server。原因是DISPLAY没设对或者本地 X 工具没允许远程连接。解决是先env | grep DIS确认变量存在且 IP 是本地机器再在本地 X 工具里执行xhost 两边都通了再跑安装。坑二预检查报Physical memory不足但free -h看着够。现象是runInstaller预检查阶段内存项打叉。原因是 Oracle 检查的是MemTotal减去内核占用后的可用值1G 物理内存卡线时容易不过。解决是临时加 Swap 或者给虚拟机加内存到 1.5G 以上别在 1G 上硬扛。坑三root.sh执行报Failed to create /etc/oraInst.loc。现象是 root 跑脚本时权限错误。原因是/u01或/etc下相关文件属主不对或者之前装过残留了旧文件。解决是先ls -l /etc/oraInst.loc看属主有残留就清掉重跑别直接chmod 777糊弄。坑四netca建监听后客户端连不上。现象是监听状态READY但远程tnsping不通。原因是防火墙没关干净或者listener.ora里绑的是localhost而不是实际 IP。解决是systemctl status firewalld确认已停再检查listener.ora的HOST项改成主机名或实际 IP。坑五建库时字符集选错中文存进去变问号。现象是dbca建完实例插入中文显示乱码。原因是建库时字符集选了默认的WE8MSWIN1252而不是AL32UTF8。解决是建库那一步手动指定字符集为AL32UTF8和.bash_profile里的NLS_LANG保持一致已经建错的只能重建实例。6. 装完之后怎么验证三条命令确认这套库真能用装完不等于能用我习惯用三条命令做收尾验证分别确认实例、监听和字符集。第一条看实例状态# 以 oracle 用户执行确认实例已启动 sqlplus / as sysdba SQL select status from v$instance;返回OPEN才算正常MOUNTED说明实例没完全起来得看告警日志。第二条看监听# 查看监听状态和注册的服务 lsnrctl status输出里要能看到orcl这个服务名READY状态。如果服务没注册上alter system register;手动注册一次。第三条验证字符集# 查数据库字符集 SQL select value from nls_database_parameters where parameterNLS_CHARACTERSET;返回AL32UTF8就对了。三条都过再拿客户端工具连一次建张表插条中文数据能正常读出来才算真正闭环。这套步骤我前后复现过几次最大的体会是Oracle 安装的坑八成不在runInstaller本身而在它前面的系统准备。内存、Swap、SELinux、依赖包、目录权限任何一项偷懒后面都会以看不懂的报错形式还回来。从那以后我每次装库前都强制把第 2 章到第 4 章的检查项走一遍宁可多花十分钟核对也不愿在图形界面卡两小时。希望这份拆解帮到你照着走能少翻几次车。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站