news 2026/10/31 2:32:56

Oracle 19C 在 CentOS 7 上的完整安装指南:从系统配置到监听跑通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Oracle 19C 在 CentOS 7 上的完整安装指南:从系统配置到监听跑通

简介:面向需要在 CentOS 7 或 Red Hat 7 上部署 Oracle 19C 的数据库运维与实施人员,这份文档型资料把安装前的环境准备与系统配置整理成可对照执行的清单,覆盖内存、硬盘与 Swap 分区检查,防火墙、图形桌面与 selinux 的关闭,静态 IP 与主机名初始化,以及 dba、asmdba、oinstall 等用户组的创建和 oracle 用户环境变量、limits.conf、sshd_config 的调整,适合初中级 DBA 按步骤落地。资源包共 1 个 docx 文件,约 2.99MB,以图文步骤与命令片段为主,便于边看边操作。目前已有 17396 人学习下载,说明其步骤组织经过较多实践检验。读者可据此快速完成安装前系统调优与用户权限配置,减少因环境不达标或参数遗漏导致的返工,并作为后续静默安装与建库的参考底稿。

1. 一次装完 Oracle 19C:从裸机 CentOS 7 到监听跑通的落地清单

拿到一台刚装好的 CentOS 7 或 Red Hat 7 裸机,要把它变成一台能连得上的 Oracle 19C 单实例库,中间真正卡人的往往不是runInstaller那几步图形界面,而是前面一堆系统层的前置条件:内存和 Swap 够不够、SELinux 关没关干净、静态 IP 和主机名对不对得上、limits.conf和内核参数有没有生效、RPM 依赖是不是齐的。这份安装步骤资源把整条链路拆成了系统检查、安全项关闭、网络与主机名、用户组、内核与 limits、RPM 依赖、图形化安装、建库建监听八个阶段,属于典型的「照着做能复现、漏一步就翻车」的实操型文档。它适合两类人:第一次在 Linux 上独立部署 Oracle 19C、需要一份可对照的检查清单的新手;以及装过 11g、想快速迁移到 19C 版本、确认参数差异的熟手。下面按真实执行顺序把每一步的参数含义、验证方式和常见坑讲透。

2. 系统前置条件与安全项:内存、Swap、SELinux 的取舍

2.1 三项硬指标怎么查、阈值怎么定

安装前先确认三件事:物理内存、可用磁盘、Swap 空间。资源里给的阈值是内存不小于 1G、磁盘不小于 8G、Swap 不小于 2G,这是 Oracle 19C 官方最低要求的下限。实际生产环境我一般会把内存拉到 4G 以上、Swap 给到内存的 1 到 1.5 倍,因为 1G 内存跑 19C 实例,建库阶段就可能因为 PGA 分配失败直接中断。

# 查看物理内存总量,单位 kB grep MemTotal /proc/meminfo # 查看各挂载点磁盘使用与剩余空间 df -h # 查看 Swap 总量 grep SwapTotal /proc/meminfo

三条命令的输出要交叉看:MemTotal换算成 GB 后确认是否满足最低要求;df -h重点看/u01所在分区或根分区剩余空间,因为 Oracle 软件本身加上后续数据文件,8G 只是起步;SwapTotal为 0 说明压根没建 Swap 分区,需要补建。参数上,/proc/meminfo是内核实时导出的内存视图,grep只是过滤,不改任何东西,属于纯读操作,可以放心执行。

如果 Swap 不足,常见做法是临时补一个 swap 文件而不是重新分区:

# 创建 2G 的 swap 文件 dd if=/dev/zero of=/swapfile bs=1M count=2048 chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 写入 fstab 保证重启后仍生效 echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

bs=1M count=2048就是 2048 个 1M 块,合计 2G;mkswap把普通文件格式化成 swap 区;swapon立即启用。这一步做完再回头grep SwapTotal确认数值变了,否则后面建库时内存不足的报错会很难定位。

2.2 防火墙、SELinux、图形桌面的关闭顺序

资源里把防火墙、图形桌面、SELinux 放在一起处理,顺序上建议先关防火墙和 SELinux,图形桌面按需处理。

# 查看防火墙状态 systemctl status firewalld.service # 停止并禁止开机自启 systemctl stop firewalld.service systemctl disable firewalld.service

stop是本次运行期停止,disable是取消开机自启,两条都要执行,只做stop的话重启后防火墙又回来了,表现为监听端口突然连不上,属于典型血泪经验。

SELinux 的关闭分临时和永久两层:

# 查看当前 SELinux 状态 getenforce # 临时关闭,立即生效,重启失效 setenforce 0 # 永久关闭,改配置文件 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0只改运行态,/etc/selinux/config里的SELINUX=disabled才是重启后生效的持久配置。两者必须都做,只改配置文件不setenforce,当前会话里 SELinux 仍然拦着 Oracle 的文件访问;只setenforce不改配置,重启后前功尽弃。改完用getenforce确认输出Permissive或Disabled。

图形桌面这块资源里给了systemctl get-default和set-default的切换方法。我的建议是:如果服务器只跑数据库,保持multi-user.target命令行模式即可,图形化安装通过 X11 转发完成,不必为了装一次库把整台机器切成图形模式,那样会多占几百兆内存和一批无关服务。

提示:SELinux 配置文件改完后,getenforce在未重启前仍显示Enforcing是正常的,因为运行态还没切换,别以为没改成功。

3. 网络、主机名与用户组:让实例认得自己

3.1 静态 IP 与 hosts 的对应关系

Oracle 实例启动时会把主机名解析成 IP 写进监听注册信息,如果/etc/hosts和网卡配置对不上,监听能起来但客户端连不上,报ORA-12514或ORA-12541。所以静态 IP 和主机名要一起改。

# 编辑网卡配置,文件名以实际为准 vi /etc/sysconfig/network-scripts/ifcfg-ens33

关键字段含义如下:

字段取值说明
BOOTPROTOstatic改为静态分配,原来是 dhcp
IPADDR192.168.199.111固定 IP,需与客户端同网段
GATEWAY192.168.199.1网关,与网段匹配
NETMASK255.255.255.0子网掩码
ONBOOTyes开机启用该网卡
DNS18.8.8.8备用解析,按内网实际调整

NAME和DEVICE必须与文件名里的网卡名一致,写成ens33就三处都写ens33,不一致会导致配置不生效。改完执行service network restart让配置落地,再用ip addr确认 IP 已挂上。

接着改主机名映射:

# 追加主机名与 IP 的映射 echo '192.168.199.111 oracledb' >> /etc/hosts

这一行的作用是让本机把oracledb解析到自己的 IP,监听注册和lsnrctl都依赖它。改完ping oracledb能通,说明解析链路没问题。

3.2 用户组与 oracle 用户的创建逻辑

Oracle 安装要求独立的oracle用户和一组职责明确的用户组。资源里给了 8 个组,实际单实例部署最核心的是oinstall(软件所有者)和dba(数据库管理权限),其余asmdba、backupdba、dgdba、kmdba、racdba、oper属于为后续扩展预留。

# 创建核心用户组,-g 指定 GID groupadd -g 5001 dba groupadd -g 5008 oinstall # 创建 oracle 用户,-u 指定 UID,-g 主组,-G 附加组 /usr/sbin/useradd -u 54321 -g oinstall -G dba,oper oracle # 设置密码 passwd oracle

-g oinstall是主组,-G后面跟附加组列表。UID 54321、GID 5001 这类数值不是强制的,但固定下来便于多机环境统一。用户建好后创建软件目录并授权:

# 创建 ORACLE_HOME 目录结构 mkdir -p /u01/app/oracle/product/19.2.0/db_1 # 递归改属主 chown -R oracle:oinstall /u01 # 递归给组读写执行权限 chmod -R 775 /u01

chown -R和chmod -R的-R是递归,/u01下所有层级都要归oracle:oinstall,漏一层后面runInstaller就会报目录不可写。775保证组内可写,符合 Oracle 的目录权限惯例。

4. 内核参数与 RPM 依赖:安装器真正检查的东西

4.1 limits.conf、sysctl.conf 与 profile 三处配置

Oracle 安装器在预检查阶段会读limits.conf和内核参数,不达标直接报PRVF类错误。资源里给了三处配置,逐一说明。

# 编辑用户资源限制 vi /etc/security/limits.conf

追加内容:

oracle soft nproc 131072 oracle hard nproc 131072 oracle soft nofile 131072 oracle hard nofile 131072

nproc是进程数上限,nofile是打开文件句柄上限,soft是软限制、hard是硬限制,软限制不能超过硬限制。131072 这个量级是为了满足 19C 在高并发下的句柄需求,数值偏大但安全。

# 编辑内核参数 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

kernel.sem四个值依次是信号量集合数、系统级信号量总数、每个 semop 调用操作数、系统级信号量最大值,Oracle 对信号量有硬性要求;fs.file-max是系统级文件句柄上限,要和limits.conf的nofile配合;rmem、wmem是网络收发缓冲区,影响监听和数据传输性能。改完必须执行:

# 让 sysctl.conf 立即生效 sysctl -p

sysctl -p会重新加载配置文件并打印每项结果,输出里能看到kernel.sem = 250 32000 100 128才算生效。不执行这一步,配置文件只是躺在磁盘上,安装器读到的还是旧值。

/etc/profile里那段if [ $USER = "oracle" ]的作用是给 oracle 用户单独设ulimit,属于兜底,和limits.conf双保险。改完source /etc/profile或重新登录生效。

4.2 preinstall 包与依赖检查的正确姿势

CentOS 7 上最省事的做法是先装oracle-database-preinstall-19c,它会自动把用户、组、内核参数、依赖包一次性配好,很多手工步骤可以省掉。资源里把两个 RPM 上传到/u01后用yum localinstall安装:

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

yum localinstall相比rpm -ivh的优势是会自动从已配置的源里补齐依赖,减少手工找包。装完用一条命令核对依赖是否齐全:

# 批量查询关键依赖包是否已安装 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

输出里凡是package xxx is not installed的就是缺口,用rpm -ivh补装;版本偏低的用rpm -Uvh升级。这里有个容易忽略的点:compat-libstdc++在部分最小化安装的系统里默认没有,而它又是 19C 预检查的必查项,缺了会在图形界面安装到一半才报错,提前用上面这条命令扫一遍能省很多时间。

Red Hat 7 环境下资源还提到替换自带 yum 源的操作,用rpm -aq|grep yum|xargs rpm -e --nodeps卸载再装 CentOS 的 yum 包。这一步风险较高,--nodeps强制卸载可能连带破坏依赖,我的建议是能配好可用源就不要动系统自带 yum,除非确实遇到源不可用且无法通过其他方式解决。

注意:rpm -Uvh升级内核相关包(如kmod)后,部分改动要重启才完全生效,装库前重启一次是稳妥做法。

5. 图形化安装与建库:runInstaller 到 netca 的完整链路

5.1 环境变量与 X11 转发

切换到 oracle 用户后配置.bash_profile,这是后续所有命令能找到sqlplus、runInstaller的基础。

su - oracle vi ~/.bash_profile

追加:

export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.2.0/db_1 export ORACLE_SID=orcl export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export LANG=C export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

ORACLE_BASE是基础目录,ORACLE_HOME是软件安装目录,ORACLE_SID是实例名,三者路径必须和前面mkdir建的目录完全一致。NLS_LANG设成AL32UTF8是为了字符集统一,建库时如果这里和数据库字符集不一致,中文会变问号。改完source ~/.bash_profile,用echo $ORACLE_HOME确认。

图形化安装需要把服务器的图形界面转发到本地机器,资源里用export DISPLAY=192.168.199.129:0.0指向本地装有 X 工具的机器,再xhost +放行。DISPLAY的格式是IP:显示号.屏幕号,IP 填本地机器而不是数据库服务器;xhost +是放开访问控制,装完建议改回受限模式。

# 上传并解压安装包到 ORACLE_HOME cd /u01/app/oracle/product/19.2.0/db_1 unzip V982063-01.zip # 进入解压出的 database 目录执行安装器 cd database ./runInstaller

runInstaller启动后只选「仅安装软件」,实例留到软件装完再建,这样出错时能分清是软件层问题还是建库层问题。安装到最后会提示用 root 执行root.sh:

# 以 root 身份执行,路径以安装器提示为准 /u01/app/oracle/product/19.2.0/db_1/root.sh

root.sh负责注册一些需要 root 权限的系统级组件,不执行的话监听和实例启动会缺东西。

5.2 建监听与建库的先后顺序

软件装完后,先用netca建监听,再用dbca建实例。资源里只写到netca,这里补全建库环节。

# oracle 用户执行,图形化配置监听 netca # 图形化创建数据库实例 dbca

netca里选「监听程序配置」→ 新建 → 默认端口 1521 → 完成。建完用lsnrctl status确认监听状态是READY。dbca里选「创建数据库」,字符集选AL32UTF8,和.bash_profile里的NLS_LANG保持一致。建库完成后验证:

# 查看监听注册的实例 lsnrctl status # 本地登录验证 sqlplus / as sysdba

lsnrctl status输出里能看到Service "orcl"且状态为READY,说明实例已注册到监听;sqlplus / as sysdba能进 SQL 提示符,说明实例本身正常。两步都过,才算真正装完。

6. 避坑与排查:五条装库现场的真实记录

6.1 现象:runInstaller 图形界面弹不出来

原因:DISPLAY指向错误,或本地 X 工具没放行,或服务器没装 X11 相关库。解决:先在服务器上echo $DISPLAY确认指向本地机器 IP,再在本地 X 工具里确认已允许该服务器连接,最后检查xhost +是否执行。三者缺一,runInstaller会静默退出或报Can't connect to X11 window server。

6.2 现象:预检查报内核参数不达标

原因:改了sysctl.conf但没执行sysctl -p,或者limits.conf改完没重新登录 oracle 用户。解决:sysctl -p看输出是否包含改动的项;limits.conf的改动对已登录会话不生效,必须退出重登或su - oracle重新加载。用ulimit -n和ulimit -u在 oracle 用户下确认实际值。

6.3 现象:监听起来了但客户端连不上,报 ORA-12541

原因:/etc/hosts里主机名和 IP 对不上,或监听只绑了localhost。解决:ping 主机名确认解析到正确 IP;lsnrctl status看监听绑定的地址,如果是127.0.0.1需要改listener.ora的HOST为实际 IP 或主机名,再lsnrctl reload。

6.4 现象:建库到一半报共享内存不足

原因:/dev/shm太小,容器或最小化安装的系统常见默认只有 64M。解决:df -h /dev/shm查看,临时用mount -o remount,size=2G /dev/shm扩大,持久化写进/etc/fstab。这个坑在物理机上不常见,在虚拟化环境里概率很高。

6.5 现象:root.sh 执行报权限或路径错误

原因:ORACLE_HOME路径和实际解压路径不一致,或/u01属主不是oracle:oinstall。解决:ls -ld /u01/app/oracle/product/19.2.0/db_1核对属主和权限,echo $ORACLE_HOME核对路径,两者一致后再执行root.sh。

7. 装完之后:用一条检查脚本把环境状态固化下来

装完库只是开始,真正省心的是把这次安装的关键状态固化成可重复执行的检查脚本,下次换机器或排查问题时直接跑一遍,比翻笔记快得多。我一般会在/u01下放一个check_env.sh,把内存、Swap、SELinux、监听、实例状态一次性打出来。

#!/bin/bash # Oracle 19C 环境自检脚本,root 或 oracle 用户均可执行 echo "===== 内存与 Swap =====" grep -E 'MemTotal|SwapTotal' /proc/meminfo echo "===== 磁盘 =====" df -h /u01 echo "===== SELinux =====" getenforce echo "===== 内核信号量 =====" ipcs -ls | head -5 echo "===== 监听状态 =====" su - oracle -c "lsnrctl status" 2>/dev/null | grep -E 'Service|READY|Instance' echo "===== 实例进程 =====" ps -ef | grep -E 'ora_pmon|ora_smon' | grep -v grep

脚本里ipcs -ls看的是当前生效的信号量参数,和sysctl.conf里写的kernel.sem对照,能立刻发现配置没生效的情况;lsnrctl status用su - oracle -c切用户执行,避免 root 下环境变量缺失;ps -ef抓pmon、smon两个核心后台进程,有输出说明实例活着。这套检查我每次装完库、每次重启后都会跑一遍,比凭记忆逐项确认靠谱。

再补一个字符集验证,很多人装完能用就以为万事大吉,结果插中文变乱码才发现NLS_LANG和数据库字符集不一致:

-- 登录后查询数据库字符集 SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');

NLS_CHARACTERSET应该是AL32UTF8,和.bash_profile里的NLS_LANG=AMERICAN_AMERICA.AL32UTF8对应。不一致的话,要么重建库,要么在客户端侧统一NLS_LANG,后者只能缓解不能根治。

从那以后我每次装完 Oracle,都会先跑一遍这个自检脚本再交付,把内存、SELinux、信号量、监听、字符集五个状态一次性确认,避免过几天被一个「连不上」的电话叫回去重查。希望这份清单帮到你,少走几趟回头路。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 2:32:55

VCS 2021.09 仿真环境搭建全攻略:从安装配置到最小设计验证

简介:这份《VCS_User_Guide.pdf》是Synopsys官方出品的VCS用户指南,面向从事数字、模拟及混合信号IC设计的验证工程师与在校学习者,帮助其系统掌握Verification Continuum工具的配置与自动化验证流程。资源包内仅含1个PDF文件,大小…

作者头像 李华
网站建设 2026/10/31 2:31:40

技术评估与性能优化全流程实践指南

1. 项目概述:技术评估与性能优化的全流程实践在技术项目的生命周期中,评估、部署与展望构成了一个完整的闭环。这个标题揭示了技术项目从开发到落地的关键阶段,每个环节都需要专业的方法论支撑。作为从业十余年的技术专家,我将分享…

作者头像 李华
网站建设 2026/10/31 2:31:36

IPD评审要素表:TR/DCP双轨制与阶段门风险收敛

简介:面向产品研发管理者与项目团队成员的IPD评审要素速查文档,围绕集成产品开发全流程,把各阶段评审该看什么、由谁提供材料、由谁负责审核讲清楚,适合作为研发流程落地、评审会前自查与新人培训的参考。包内为1个docx文件&#…

作者头像 李华
网站建设 2026/10/31 2:30:32

Oracle ORA-00257归档日志满故障排查与空间释放三步法

简介:本资源是一份针对Oracle数据库管理员(DBA)及运维工程师的ORA-00257错误专项排错指南,聚焦归档日志(archivelog)空间满导致数据库写入阻塞这一高频生产故障。文档系统梳理了从空间监控、物理日志清理到…

作者头像 李华
网站建设 2026/10/31 2:30:31

HOOK技术详解:原理、实现与应用场景

1. 什么是HOOK技术?HOOK技术是一种在程序运行时动态拦截和修改函数调用的技术。简单来说,它就像是在函数执行的必经之路上设置一个"钩子",当程序调用这个函数时,会先经过你的钩子,你可以选择修改函数的参数、…

作者头像 李华
网站建设 2026/10/31 2:29:53

A2RL无人机赛:视觉导航与AI决策的技术突破

1. A2RL无人机锦标赛:自主飞行技术的极限试验场当TII Racing团队的自主无人机以12.032秒刷新赛道纪录时,现场观众席爆发的欢呼声不亚于任何人类体育赛事。这个发生在阿布扎比沙漠中的科技竞赛,正在重新定义机器智能的边界。A2RL无人机锦标赛&…

作者头像 李华